Full Code of bchavez/Bogus for AI

master 6ece18c5c226 cached
415 files
3.3 MB
877.0k tokens
1688 symbols
1 requests
Download .txt
Showing preview only (3,499K chars total). Download the full file or copy to clipboard to get everything.
Repository: bchavez/Bogus
Branch: master
Commit: 6ece18c5c226
Files: 415
Total size: 3.3 MB

Directory structure:
gitextract_1wf4tuk4/

├── .config/
│   └── dotnet-tools.json
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   └── ISSUE_TEMPLATE/
│       ├── bug_report.yml
│       ├── config.yml
│       ├── feature_request.yml
│       └── support.yml
├── .gitignore
├── .gitmodules
├── .nuke/
│   ├── build.schema.json
│   └── parameters.json
├── CONTRIBUTING.md
├── Examples/
│   ├── EFCoreSeedDb/
│   │   ├── .config/
│   │   │   └── dotnet-tools.json
│   │   ├── EFCoreSeedDb.csproj
│   │   ├── Program.cs
│   │   └── README.md
│   ├── Examples.sln
│   ├── ExtendingBogus/
│   │   ├── ExtendingBogus.csproj
│   │   ├── ExtensionsForAddress.cs
│   │   ├── ExtensionsForTesting.cs
│   │   ├── FoodDataSet.cs
│   │   ├── Program.cs
│   │   └── README.md
│   └── GettingStarted/
│       ├── GettingStarted.csproj
│       ├── Program.cs
│       └── README.md
├── HISTORY.md
├── LICENSE
├── README.md
├── Source/
│   ├── .editorconfig
│   ├── Benchmark/
│   │   ├── BenchGenerate.cs
│   │   ├── BenchRandomSubset.cs
│   │   ├── BenchSsn.cs
│   │   ├── BenchStringFill.cs
│   │   ├── Benchmark.csproj
│   │   ├── PR300_BenchDecimal.cs
│   │   ├── PR300_BenchRandomNumber.cs
│   │   └── README.md
│   ├── Bogus/
│   │   ├── Binder.cs
│   │   ├── Bogus.csproj
│   │   ├── Bogus.ruleset
│   │   ├── BogusException.cs
│   │   ├── Bson/
│   │   │   ├── BArray.cs
│   │   │   ├── BObject.cs
│   │   │   ├── BValue.cs
│   │   │   ├── BValueType.cs
│   │   │   └── Bson.cs
│   │   ├── Chars.cs
│   │   ├── DataCategoryAttribute.cs
│   │   ├── DataSet.cs
│   │   ├── DataSets/
│   │   │   ├── Address.cs
│   │   │   ├── ColorFormat.cs
│   │   │   ├── Commerce.cs
│   │   │   ├── Company.cs
│   │   │   ├── Database.cs
│   │   │   ├── Date.cs
│   │   │   ├── Date.net60.cs
│   │   │   ├── Finance.cs
│   │   │   ├── Hacker.cs
│   │   │   ├── Images.PlaceImg.cs
│   │   │   ├── Images.cs
│   │   │   ├── Internet.cs
│   │   │   ├── Lorem.cs
│   │   │   ├── Music.cs
│   │   │   ├── Name.cs
│   │   │   ├── PhoneNumbers.cs
│   │   │   ├── Rant.cs
│   │   │   ├── System.cs
│   │   │   └── Vehicle.cs
│   │   ├── Database.cs
│   │   ├── Distributions/
│   │   │   └── Gaussian/
│   │   │       └── ExtensionsForRandomizer.cs
│   │   ├── Extensions/
│   │   │   ├── Belgium/
│   │   │   │   └── ExtensionsForBelgium.cs
│   │   │   ├── Brazil/
│   │   │   │   └── ExtensionsForBrazil.cs
│   │   │   ├── Canada/
│   │   │   │   └── ExtensionsForCanada.cs
│   │   │   ├── Denmark/
│   │   │   │   └── ExtensionsForDenmark.cs
│   │   │   ├── ExtensionsForCultureInfo.cs
│   │   │   ├── ExtensionsForPropertyInfo.cs
│   │   │   ├── ExtensionsForRandomizer.cs
│   │   │   ├── ExtensionsForString.cs
│   │   │   ├── Extras/
│   │   │   │   ├── CheckDigitExtension.cs
│   │   │   │   └── FinanceExtensions.cs
│   │   │   ├── Finland/
│   │   │   │   └── ExtensionsForFinland.cs
│   │   │   ├── Iran/
│   │   │   │   └── ExtensionsForIran.cs
│   │   │   ├── Italy/
│   │   │   │   ├── ExtensionsForItaly.CodiceFiscale.cs
│   │   │   │   └── ExtensionsForItaly.cs
│   │   │   ├── Norway/
│   │   │   │   └── ExtensionsForNorway.cs
│   │   │   ├── Poland/
│   │   │   │   └── ExtensionsForPoland.cs
│   │   │   ├── Portugal/
│   │   │   │   ├── ExtensionsForPortugal.cs
│   │   │   │   └── TaxNumberGenerator.cs
│   │   │   ├── Romania/
│   │   │   │   ├── ExtensionsForRomania.cs
│   │   │   │   └── RomanianBirthCounty.cs
│   │   │   ├── Sweden/
│   │   │   │   └── ExtensionsForSweden.cs
│   │   │   ├── UnitedKingdom/
│   │   │   │   ├── ExtensionsForGreatBritainRegistrationPlate.cs
│   │   │   │   ├── ExtensionsForUnitedKingdom.cs
│   │   │   │   └── VatRegistrationNumberType.cs
│   │   │   └── UnitedStates/
│   │   │       └── ExtensionsForUnitedStates.cs
│   │   ├── Faker.cs
│   │   ├── Faker[T].Extensions.cs
│   │   ├── Faker[T].cs
│   │   ├── Hashids.cs
│   │   ├── IHashids.cs
│   │   ├── ILocaleAware.cs
│   │   ├── IRuleSet.cs
│   │   ├── Person.cs
│   │   ├── Platform/
│   │   │   └── ExtensionsForType.cs
│   │   ├── Premium/
│   │   │   ├── ContextHelper.cs
│   │   │   ├── License.cs
│   │   │   ├── LicenseVerifier.cs
│   │   │   └── PremiumDataSet.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── PropertyName.cs
│   │   ├── Randomizer.cs
│   │   ├── ResourceHelper.cs
│   │   ├── Rule.cs
│   │   ├── SeedNotifier[T].cs
│   │   ├── Tokenizer.cs
│   │   ├── Transliterater.Generated.cs
│   │   ├── Transliterater.cs
│   │   ├── Utils.cs
│   │   ├── ValidationException.cs
│   │   ├── ValidationResult.cs
│   │   ├── Vendor/
│   │   │   └── UserAgentGenerator.cs
│   │   ├── data/
│   │   │   ├── README.md
│   │   │   ├── _DO_NOT_MODIFY_FILES_IN_THIS_FOLDER
│   │   │   ├── af_ZA.locale.bson
│   │   │   ├── af_ZA.locale.json
│   │   │   ├── af_ZA.locale.schema.verified.txt
│   │   │   ├── ar.locale.bson
│   │   │   ├── ar.locale.json
│   │   │   ├── ar.locale.schema.verified.txt
│   │   │   ├── az.locale.bson
│   │   │   ├── az.locale.json
│   │   │   ├── az.locale.schema.verified.txt
│   │   │   ├── cz.locale.bson
│   │   │   ├── cz.locale.json
│   │   │   ├── cz.locale.schema.verified.txt
│   │   │   ├── de.locale.bson
│   │   │   ├── de.locale.json
│   │   │   ├── de.locale.schema.verified.txt
│   │   │   ├── de_AT.locale.bson
│   │   │   ├── de_AT.locale.json
│   │   │   ├── de_AT.locale.schema.verified.txt
│   │   │   ├── de_CH.locale.bson
│   │   │   ├── de_CH.locale.json
│   │   │   ├── de_CH.locale.schema.verified.txt
│   │   │   ├── el.locale.bson
│   │   │   ├── el.locale.json
│   │   │   ├── el.locale.schema.verified.txt
│   │   │   ├── en.locale.bson
│   │   │   ├── en.locale.json
│   │   │   ├── en.locale.schema.verified.txt
│   │   │   ├── en_AU.locale.bson
│   │   │   ├── en_AU.locale.json
│   │   │   ├── en_AU.locale.schema.verified.txt
│   │   │   ├── en_AU_ocker.locale.bson
│   │   │   ├── en_AU_ocker.locale.json
│   │   │   ├── en_AU_ocker.locale.schema.verified.txt
│   │   │   ├── en_BORK.locale.bson
│   │   │   ├── en_BORK.locale.json
│   │   │   ├── en_BORK.locale.schema.verified.txt
│   │   │   ├── en_CA.locale.bson
│   │   │   ├── en_CA.locale.json
│   │   │   ├── en_CA.locale.schema.verified.txt
│   │   │   ├── en_GB.locale.bson
│   │   │   ├── en_GB.locale.json
│   │   │   ├── en_GB.locale.schema.verified.txt
│   │   │   ├── en_IE.locale.bson
│   │   │   ├── en_IE.locale.json
│   │   │   ├── en_IE.locale.schema.verified.txt
│   │   │   ├── en_IND.locale.bson
│   │   │   ├── en_IND.locale.json
│   │   │   ├── en_IND.locale.schema.verified.txt
│   │   │   ├── en_NG.locale.bson
│   │   │   ├── en_NG.locale.json
│   │   │   ├── en_NG.locale.schema.verified.txt
│   │   │   ├── en_US.locale.bson
│   │   │   ├── en_US.locale.json
│   │   │   ├── en_US.locale.schema.verified.txt
│   │   │   ├── en_ZA.locale.bson
│   │   │   ├── en_ZA.locale.json
│   │   │   ├── en_ZA.locale.schema.verified.txt
│   │   │   ├── es.locale.bson
│   │   │   ├── es.locale.json
│   │   │   ├── es.locale.schema.verified.txt
│   │   │   ├── es_MX.locale.bson
│   │   │   ├── es_MX.locale.json
│   │   │   ├── es_MX.locale.schema.verified.txt
│   │   │   ├── fa.locale.bson
│   │   │   ├── fa.locale.json
│   │   │   ├── fa.locale.schema.verified.txt
│   │   │   ├── fi.locale.bson
│   │   │   ├── fi.locale.json
│   │   │   ├── fi.locale.schema.verified.txt
│   │   │   ├── fr.locale.bson
│   │   │   ├── fr.locale.json
│   │   │   ├── fr.locale.schema.verified.txt
│   │   │   ├── fr_CA.locale.bson
│   │   │   ├── fr_CA.locale.json
│   │   │   ├── fr_CA.locale.schema.verified.txt
│   │   │   ├── fr_CH.locale.bson
│   │   │   ├── fr_CH.locale.json
│   │   │   ├── fr_CH.locale.schema.verified.txt
│   │   │   ├── ge.locale.bson
│   │   │   ├── ge.locale.json
│   │   │   ├── ge.locale.schema.verified.txt
│   │   │   ├── hr.locale.bson
│   │   │   ├── hr.locale.json
│   │   │   ├── hr.locale.schema.verified.txt
│   │   │   ├── id_ID.locale.bson
│   │   │   ├── id_ID.locale.json
│   │   │   ├── id_ID.locale.schema.verified.txt
│   │   │   ├── it.locale.bson
│   │   │   ├── it.locale.json
│   │   │   ├── it.locale.schema.verified.txt
│   │   │   ├── ja.locale.bson
│   │   │   ├── ja.locale.json
│   │   │   ├── ja.locale.schema.verified.txt
│   │   │   ├── ko.locale.bson
│   │   │   ├── ko.locale.json
│   │   │   ├── ko.locale.schema.verified.txt
│   │   │   ├── lv.locale.bson
│   │   │   ├── lv.locale.json
│   │   │   ├── lv.locale.schema.verified.txt
│   │   │   ├── nb_NO.locale.bson
│   │   │   ├── nb_NO.locale.json
│   │   │   ├── nb_NO.locale.schema.verified.txt
│   │   │   ├── ne.locale.bson
│   │   │   ├── ne.locale.json
│   │   │   ├── ne.locale.schema.verified.txt
│   │   │   ├── nl.locale.bson
│   │   │   ├── nl.locale.json
│   │   │   ├── nl.locale.schema.verified.txt
│   │   │   ├── nl_BE.locale.bson
│   │   │   ├── nl_BE.locale.json
│   │   │   ├── nl_BE.locale.schema.verified.txt
│   │   │   ├── pl.locale.bson
│   │   │   ├── pl.locale.json
│   │   │   ├── pl.locale.schema.verified.txt
│   │   │   ├── pt_BR.locale.bson
│   │   │   ├── pt_BR.locale.json
│   │   │   ├── pt_BR.locale.schema.verified.txt
│   │   │   ├── pt_PT.locale.bson
│   │   │   ├── pt_PT.locale.json
│   │   │   ├── pt_PT.locale.schema.verified.txt
│   │   │   ├── ro.locale.bson
│   │   │   ├── ro.locale.json
│   │   │   ├── ro.locale.schema.verified.txt
│   │   │   ├── ru.locale.bson
│   │   │   ├── ru.locale.json
│   │   │   ├── ru.locale.schema.verified.txt
│   │   │   ├── sk.locale.bson
│   │   │   ├── sk.locale.json
│   │   │   ├── sk.locale.schema.verified.txt
│   │   │   ├── sv.locale.bson
│   │   │   ├── sv.locale.json
│   │   │   ├── sv.locale.schema.verified.txt
│   │   │   ├── tr.locale.bson
│   │   │   ├── tr.locale.json
│   │   │   ├── tr.locale.schema.verified.txt
│   │   │   ├── uk.locale.bson
│   │   │   ├── uk.locale.json
│   │   │   ├── uk.locale.schema.verified.txt
│   │   │   ├── vi.locale.bson
│   │   │   ├── vi.locale.json
│   │   │   ├── vi.locale.schema.verified.txt
│   │   │   ├── zh_CN.locale.bson
│   │   │   ├── zh_CN.locale.json
│   │   │   ├── zh_CN.locale.schema.verified.txt
│   │   │   ├── zh_TW.locale.bson
│   │   │   ├── zh_TW.locale.json
│   │   │   ├── zh_TW.locale.schema.verified.txt
│   │   │   ├── zu_ZA.locale.bson
│   │   │   ├── zu_ZA.locale.json
│   │   │   └── zu_ZA.locale.schema.verified.txt
│   │   └── data_extend/
│   │       ├── az.locale.json
│   │       ├── en.locale.json
│   │       ├── nl.locale.json
│   │       ├── pt_BR.locale.json
│   │       ├── pt_PT.locale.json
│   │       ├── sv.locale.json
│   │       └── tr.locale.json
│   ├── Bogus.Tests/
│   │   ├── Bogus.Tests.csproj
│   │   ├── BsonTests.cs
│   │   ├── CloneTests.cs
│   │   ├── DataSetTests/
│   │   │   ├── AddressTest.cs
│   │   │   ├── CardTests.cs
│   │   │   ├── CommerceTest.cs
│   │   │   ├── CompanyTest.cs
│   │   │   ├── DatabaseTests.cs
│   │   │   ├── DateTest.cs
│   │   │   ├── DateTest.net60.cs
│   │   │   ├── FinanceTest.cs
│   │   │   ├── HackerTests.cs
│   │   │   ├── ImageTest.cs
│   │   │   ├── InternetTests.cs
│   │   │   ├── LoremTests.cs
│   │   │   ├── MusicTests.cs
│   │   │   ├── NameTests.cs
│   │   │   ├── PhoneNumbersTest.cs
│   │   │   ├── RantTests.cs
│   │   │   ├── SystemTest.cs
│   │   │   └── VehicleTest.cs
│   │   ├── DistributionTests/
│   │   │   └── GaussianTests.cs
│   │   ├── ExtensionTests/
│   │   │   ├── BelgianExtensionTests.cs
│   │   │   ├── DanishExtentionTest.cs
│   │   │   ├── ExtensionTest.cs
│   │   │   ├── IranianExtensionTests.cs
│   │   │   ├── NorwegianExtensionTest.cs
│   │   │   ├── PolishExtensionTest.cs
│   │   │   ├── RegistrationPlateExtensionsForGreatBritainTests.cs
│   │   │   └── SwedishExtensionTest.cs
│   │   ├── ExtensionsForTesting.cs
│   │   ├── FluentTests.cs
│   │   ├── GitHubIssues/
│   │   │   ├── Issue10.cs
│   │   │   ├── Issue100.cs
│   │   │   ├── Issue102.cs
│   │   │   ├── Issue104.cs
│   │   │   ├── Issue114.cs
│   │   │   ├── Issue115.cs
│   │   │   ├── Issue121.cs
│   │   │   ├── Issue124.cs
│   │   │   ├── Issue126.cs
│   │   │   ├── Issue13.cs
│   │   │   ├── Issue132.cs
│   │   │   ├── Issue134.cs
│   │   │   ├── Issue143.cs
│   │   │   ├── Issue152.cs
│   │   │   ├── Issue168.cs
│   │   │   ├── Issue169.cs
│   │   │   ├── Issue178.cs
│   │   │   ├── Issue179.cs
│   │   │   ├── Issue192.cs
│   │   │   ├── Issue193.cs
│   │   │   ├── Issue218.cs
│   │   │   ├── Issue225.cs
│   │   │   ├── Issue23.cs
│   │   │   ├── Issue232.cs
│   │   │   ├── Issue249.cs
│   │   │   ├── Issue253.cs
│   │   │   ├── Issue255.cs
│   │   │   ├── Issue260.cs
│   │   │   ├── Issue271.cs
│   │   │   ├── Issue279.cs
│   │   │   ├── Issue280.cs
│   │   │   ├── Issue309.cs
│   │   │   ├── Issue313.cs
│   │   │   ├── Issue318.cs
│   │   │   ├── Issue319.cs
│   │   │   ├── Issue321.cs
│   │   │   ├── Issue328.cs
│   │   │   ├── Issue342.cs
│   │   │   ├── Issue355.cs
│   │   │   ├── Issue389.cs
│   │   │   ├── Issue411.cs
│   │   │   ├── Issue45.cs
│   │   │   ├── Issue48.cs
│   │   │   ├── Issue49.cs
│   │   │   ├── Issue538.cs
│   │   │   ├── Issue55.cs
│   │   │   ├── Issue581.cs
│   │   │   ├── Issue601.cs
│   │   │   ├── Issue61.cs
│   │   │   ├── Issue70.cs
│   │   │   ├── Issue86.cs
│   │   │   ├── Issue93.cs
│   │   │   ├── Issue99.cs
│   │   │   ├── PullRequest149.cs
│   │   │   ├── PullRequest180.cs
│   │   │   ├── PullRequest194.cs
│   │   │   ├── PullRequest197.cs
│   │   │   ├── PullRequest258.cs
│   │   │   ├── PullRequest259.cs
│   │   │   ├── PullRequest261.cs
│   │   │   ├── PullRequest500.cs
│   │   │   ├── PullRequest510.cs
│   │   │   └── PullRequest513.cs
│   │   ├── HandleBarTests.cs
│   │   ├── HandlebarsTests/
│   │   │   └── ArgumentsTest.cs
│   │   ├── LocaleTests/
│   │   │   ├── PtLocale.cs
│   │   │   └── TrLocale.cs
│   │   ├── Models/
│   │   │   └── Order.cs
│   │   ├── PersonTest.cs
│   │   ├── README_Generator.cs
│   │   ├── RandomizerTest.cs
│   │   ├── Rant_Generator.cs
│   │   ├── Rantionary-3.0.17.rantpkg
│   │   ├── RuleSetTests.cs
│   │   ├── SchemaTests/
│   │   │   └── LocaleSchemaTests.cs
│   │   ├── SeededTest.cs
│   │   ├── StackOverflowQuestions/
│   │   │   ├── Question60136934.cs
│   │   │   └── Question66444118.cs
│   │   ├── StrictModeTests.cs
│   │   ├── TransliterateTests.cs
│   │   ├── UniquenessTests.cs
│   │   └── ValidationDeltaTests.cs
│   ├── Bogus.sln
│   ├── Bogus.snk.pub
│   ├── Builder/
│   │   ├── .editorconfig
│   │   ├── .vscode/
│   │   │   └── launch.json
│   │   ├── Build.cs
│   │   ├── Builder.csproj
│   │   ├── Configuration.cs
│   │   ├── Directory.Build.props
│   │   ├── Directory.Build.targets
│   │   ├── Utils.cs
│   │   ├── gulpfile.js
│   │   ├── package.json
│   │   └── test.js
│   └── Directory.Build.props
├── appveyor.yml
├── build.cmd
├── build.ps1
├── build.sh
└── global.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .config/dotnet-tools.json
================================================
{
  "version": 1,
  "isRoot": true,
  "tools": {
    "benchmarkdotnet.tool": {
      "version": "0.12.1",
      "commands": [
        "dotnet-benchmark"
      ]
    },
    "nuke.globaltool": {
      "version": "9.0.3",
      "commands": [
        "nuke"
      ]
    }
  }
}

================================================
FILE: .editorconfig
================================================
root=true

[*.cs]
trim_trailing_whitespace=true
insert_final_newline=true

[*]
indent_style = space
indent_size = 3

[*.{fs,fsx}]
indent_style = space
indent_size = 4

[*.{md,markdown,json,js,csproj,fsproj,targets}]
indent_style = space
indent_size = 2


# Verify settings
[*.{received,verified}.{txt,xml,json}]
charset = "utf-8-bom"
end_of_line = lf
indent_size = unset
indent_style = unset
insert_final_newline = false
tab_width = unset
trim_trailing_whitespace = false


================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
# http://davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/
* text=auto

*.cs     diff=csharp

# Custom for Visual Studio
*.sln text eol=crlf merge=union 
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union


*.verified.txt text eol=lf working-tree-encoding=UTF-8
*.verified.xml text eol=lf working-tree-encoding=UTF-8
*.verified.json text eol=lf working-tree-encoding=UTF-8



================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: bchavez
custom: https://github.com/bchavez/Bogus/wiki/Bogus-Premium


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: 🐞 Bug Report
description: "Report something that doesn't look right 🔧"
labels: [""]
body:
  - type: markdown
    attributes:
      value: |
        ## Version Information

  - type: input
    id: version-bogus
    attributes:
      label: Bogus NuGet Package
      description: What version of Bogus are you using?
      placeholder: ex. v35.0.1
    validations:
      required: true

  - type: input
    id: version-dotnet
    attributes:
      label: .NET Version
      description: What version of .NET are using?
      placeholder: ex. Full Framework 4.7.1 or .NET 8?
    validations:
      required: true

  - type: input
    id: version-visualstudio
    attributes:
      label: Visual Studio Version
      description: What version of Visual Studio are using?
      placeholder: ex. 17.8?
    validations:
      required: false

  - type: dropdown
    id: operating-system
    attributes:
      label: What operating system are you using?
      multiple: false
      options:
        - Windows
        - Linux
        - MacOS
        - Other
    validations:
        required: true

  - type: markdown
    attributes:
      value: |
        ## Bug Report

  - type: input
    id: bogus-locale
    attributes:
      label: What locale are you using with Bogus?
      description: 
      placeholder: ex. en_GB
    validations:
      required: true


  - type: textarea
    id: problem-description
    attributes:
      label: Problem Description
      description: Please share a clear and concise description of the problem.
      placeholder: 
    validations:
      required: true

  - type: textarea
    id: problem-linqpad-repro-steps
    attributes:
      label: LINQPad Example or Reproduction Steps
      description: |
        Please provide a LINQPad example of the problem or provide reproduction steps. LINQPad can be downloaded here: https://www.linqpad.net/.
      placeholder: "LINQPad can be downloaded here: https://www.linqpad.net/"
    validations:
      required: true

  - type: textarea
    id: bogus-expected-behavior
    attributes:
      label: Expected Behavior
      description: Provide a description of the expected behavior.
      placeholder: Expected Behavior
    validations:
      required: true

  - type: textarea
    id: bogus-actual-behavior
    attributes:
      label: Actual Behavior
      description: |
        Provide a description of the actual behavior observed. Please include any error messages, exception stacktraces, logs, and/or screenshots.
      placeholder: Actual Behavior
    validations:
      required: true

  - type: textarea
    id: known-workarounds
    attributes:
      label: Known Workarounds
      description: |
        Please provide a description of any known workarounds.
      placeholder: Known Workarounds
    validations:
      required: false
  
  - type: dropdown
    id: can-send-pr
    attributes:
      label: Could you help with a pull-request?
      description: If the bug is confirmed, would you be willing to submit a pull-request?
      options:
        - "No"
        - "Yes"
    validations:
      required: true




================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: true



================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: 🚀 Feature request
description: If you have a feature request 💡
labels: [""]
body:
  - type: textarea
    id: feature-why
    attributes:
      label: Description
      description: Please describe why you are requesting this feature.
      placeholder: 
    validations:
      required: true

  - type: textarea
    id: feature-code-example
    attributes:
      label: LINQPad Code Example
      description: |
        Please provide a LINQPad example of what you are trying to achieve. LINQPad can be downloaded here: https://www.linqpad.net/.
      placeholder: "LINQPad can be downloaded here: https://www.linqpad.net/"
    validations:
      required: true

  - type: textarea
    id: feature-alternatives
    attributes:
      label: What alternatives have you considered?
      description: Are there any workarounds or alternatives?
      placeholder: 
    validations:
      required: true

  - type: dropdown
    id: feature-can-send-pr
    attributes:
      label: Could you help with a pull-request?
      description: If the bug is confirmed, would you be willing to submit a pull-request?
      options:
        - "No"
        - "Yes"
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/support.yml
================================================
name: ❓ Support
description: "If you need help using Bogus 🏥"
labels: ["question"]
body:

  - type: markdown
    attributes:
      value: |
        ## Version Information

  - type: input
    id: version-bogus
    attributes:
      label: Bogus NuGet Package
      description: What version of Bogus are you using?
      placeholder: ex. v35.0.1
    validations:
      required: true

  - type: input
    id: version-dotnet
    attributes:
      label: .NET Version
      description: What version of .NET are using?
      placeholder: ex. Full Framework 4.7.1 or .NET 8?
    validations:
      required: true

  - type: input
    id: version-visualstudio
    attributes:
      label: Visual Studio Version
      description: What version of Visual Studio are using?
      placeholder: ex. 17.8?
    validations:
      required: false

  - type: dropdown
    id: operating-system
    attributes:
      label: What operating system are you using?
      multiple: false
      options:
        - Windows
        - Linux
        - MacOS
        - Other
    validations:
        required: true

  - type: markdown
    attributes:
      value: |
        ## Support Issue

  - type: input
    id: bogus-locale
    attributes:
      label: What locale are you using with Bogus?
      description: 
      placeholder: ex. en_GB
    validations:
      required: true

  - type: textarea
    id: support-request
    attributes:
      label: What's the problem?
      description: Please describe the support issue.
      placeholder: 
    validations:
      required: true

  - type: textarea
    id: support-linqpad
    attributes:
      label: Provide LINQPad Example
      description: |
        Please provide a LINQPad example of what you are trying to do. LINQPad can be downloaded here: https://www.linqpad.net/.
      placeholder: "LINQPad can be downloaded here: https://www.linqpad.net/"
    validations:
      required: true

  - type: textarea
    id: support-alternatives
    attributes:
      label: What other possible solutions or alternatives have you considered?
      description: Are there any workarounds or alternatives?
      placeholder: 
    validations:
      required: true

================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# custom
**.lock.json
*.history.nuspec
**/.vs/**
**/.idea/**
/Source/packages**
paket.lock
.fake
.store
.paket/paket.exe
/Source/.paket/**
__test

/__package
/__compile
/Source/Bogus.snk

Source/Builder/node_modules/**

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results

[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/
**/packages/**

# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
!packages/*/build/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
*.ncrunch*
.*crunch*.local.xml

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.Publish.xml
*.pubxml

# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/

# Windows Azure Build Output
csx
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
App_Data/*.mdf
App_Data/*.ldf

# =========================
# Windows detritus
# =========================

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Mac crap
.DS_Store
/nuget.push.bat

/Source/Benchmark/BenchmarkDotNet.Artifacts/


================================================
FILE: .gitmodules
================================================
[submodule "Source/fakerjs"]
	path = Source/fakerjs
	url = https://github.com/faker-js/faker.js.git
[submodule "Source/hashids"]
	path = Source/hashids
	url = https://github.com/ullmark/hashids.net.git
[submodule "Source/speakingurl"]
	path = Source/speakingurl
	url = https://github.com/pid/speakingurl.git


================================================
FILE: .nuke/build.schema.json
================================================
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "definitions": {
    "Host": {
      "type": "string",
      "enum": [
        "AppVeyor",
        "AzurePipelines",
        "Bamboo",
        "Bitbucket",
        "Bitrise",
        "GitHubActions",
        "GitLab",
        "Jenkins",
        "Rider",
        "SpaceAutomation",
        "TeamCity",
        "Terminal",
        "TravisCI",
        "VisualStudio",
        "VSCode"
      ]
    },
    "ExecutableTarget": {
      "type": "string",
      "enum": [
        "BuildInfo",
        "CI",
        "Clean",
        "Compile",
        "Pack",
        "Restore",
        "SetupSnk",
        "Test",
        "Zip"
      ]
    },
    "Verbosity": {
      "type": "string",
      "description": "",
      "enum": [
        "Verbose",
        "Normal",
        "Minimal",
        "Quiet"
      ]
    },
    "NukeBuild": {
      "properties": {
        "Continue": {
          "type": "boolean",
          "description": "Indicates to continue a previously failed build attempt"
        },
        "Help": {
          "type": "boolean",
          "description": "Shows the help text for this build assembly"
        },
        "Host": {
          "description": "Host for execution. Default is 'automatic'",
          "$ref": "#/definitions/Host"
        },
        "NoLogo": {
          "type": "boolean",
          "description": "Disables displaying the NUKE logo"
        },
        "Partition": {
          "type": "string",
          "description": "Partition to use on CI"
        },
        "Plan": {
          "type": "boolean",
          "description": "Shows the execution plan (HTML)"
        },
        "Profile": {
          "type": "array",
          "description": "Defines the profiles to load",
          "items": {
            "type": "string"
          }
        },
        "Root": {
          "type": "string",
          "description": "Root directory during build execution"
        },
        "Skip": {
          "type": "array",
          "description": "List of targets to be skipped. Empty list skips all dependencies",
          "items": {
            "$ref": "#/definitions/ExecutableTarget"
          }
        },
        "Target": {
          "type": "array",
          "description": "List of targets to be invoked. Default is '{default_target}'",
          "items": {
            "$ref": "#/definitions/ExecutableTarget"
          }
        },
        "Verbosity": {
          "description": "Logging verbosity during build execution. Default is 'Normal'",
          "$ref": "#/definitions/Verbosity"
        }
      }
    }
  },
  "allOf": [
    {
      "properties": {
        "BogusSnkZipPassword": {
          "type": "string",
          "default": "Secrets must be entered via 'nuke :secrets [profile]'"
        },
        "Solution": {
          "type": "string",
          "description": "Path to a solution file that is automatically loaded"
        }
      }
    },
    {
      "$ref": "#/definitions/NukeBuild"
    }
  ]
}


================================================
FILE: .nuke/parameters.json
================================================
{
  "$schema": "./build.schema.json",
  "Solution": "Source/Bogus.sln"
}

================================================
FILE: CONTRIBUTING.md
================================================
New Features
------------
Bogus a superset of **faker.js**'s features. Adding additional features are welcome. New features and additional APIs can be added so long as we maintain semantic API compatibility with **faker.js** and maintain compatibility with **faker.js** locale data.

Contributing
------------
Here are some helpful guidelines to keep in mind when contributing.  While following them isn't absolutely required, it does help everyone to accept your pull-requests with maximum awesomeness.

* :heavy_check_mark: **CONSIDER** adding a unit test if your PR resolves an issue or adds features.
* :heavy_check_mark: **DO** add XML comment documentation to new API calls along parameter documentation.
* :heavy_check_mark: **DO** reference any GH issues in the PR description.
* :heavy_check_mark: **DO** keep pull requests small so they can be easily reviewed. 
* :heavy_check_mark: **DO** keep the PR/change-set strictly focused on a specific change and on topic (ie: don't include code re-formatting). If you'd like to change something else off-topic, feel free to set up a new GH issue or PR for those off-topic changes.
* :heavy_check_mark: **DO** make sure unit tests pass.
* :x: **AVOID** changing existing code formatting (spaces, braces, tabs, new lines).
* :x: **AVOID** breaking the continuous integration build. 
* :x: **AVOID** Breaking compatibility with **faker.js** locale data.
* :x: **AVOID** Adding new locales to Bogus. New locales should be added upstream to **faker.js**. [See this wiki page for creating locales](https://github.com/bchavez/Bogus/wiki/Creating-Locales).

================================================
FILE: Examples/EFCoreSeedDb/.config/dotnet-tools.json
================================================
{
  "version": 1,
  "isRoot": true,
  "tools": {
    "dotnet-ef": {
      "version": "3.1.7",
      "commands": [
        "dotnet-ef"
      ]
    }
  }
}

================================================
FILE: Examples/EFCoreSeedDb/EFCoreSeedDb.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Bogus" Version="35.4.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.1" />
  </ItemGroup>

</Project>


================================================
FILE: Examples/EFCoreSeedDb/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using Bogus;
using Bogus.Extensions;
using Microsoft.EntityFrameworkCore;
using static System.Console;

namespace EFCoreSeedDb
{
   class Program
   {
      static void Main(string[] args)
      {
         WriteLine("Bogus Blog Example!");

         using var ctx = new BloggingContext();

         var blogs = ctx.Blogs
            .Include(b => b.Posts)
            .ToList();

         foreach( var blog in blogs)
         {
            WriteLine($"Blog Id: {blog.BlogId}");
            WriteLine($"Blog Url: {blog.Url}");
            foreach( var post in blog.Posts )
            {
               WriteLine($"  Post Id: {post.PostId}");
               WriteLine($"       Title: {post.Title}");
               WriteLine($"       Content: {post.Content}");
            }

            WriteLine();
            WriteLine();
         }
      }

   }

   public class BloggingContext : DbContext
   {
      public DbSet<Blog> Blogs { get; set; }
      public DbSet<Post> Posts { get; set; }

      protected override void OnConfiguring(DbContextOptionsBuilder options)
      {
         options.UseSqlite("Data Source=blogging.db");
         options.EnableSensitiveDataLogging();
      }

      protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
         base.OnModelCreating(modelBuilder);

         FakeData.Init(10);

         modelBuilder.Entity<Blog>().HasData(FakeData.Blogs);
         modelBuilder.Entity<Post>().HasData(FakeData.Posts);
      }

   }

   /// <summary>
   /// Example uses Faker[T]
   /// </summary>
   public static class FakeData
   {
      public static List<Blog> Blogs = new List<Blog>();
      public static List<Post> Posts = new List<Post>();

      public static void Init(int count)
      {
         var postId = 1;
         var postFaker = new Faker<Post>()
            .RuleFor(p => p.PostId, _ => postId++)
            .RuleFor(p => p.Title, f => f.Hacker.Phrase())
            .RuleFor(p => p.Content, f => f.Lorem.Sentence());

         var blogId = 1;
         var blogFaker = new Faker<Blog>()
            .RuleFor(b => b.BlogId, _ => blogId++)
            .RuleFor(b => b.Url, f => f.Internet.Url())
            .RuleFor(b => b.Posts, (f, b) =>
               {
                  postFaker.RuleFor(p => p.BlogId, _ => b.BlogId);

                  var posts = postFaker.GenerateBetween(3, 5);

                  FakeData.Posts.AddRange(posts);

                  return null; // Blog.Posts is a getter only. The return value has no impact.
               });

         var blogs = blogFaker.Generate(count);

         FakeData.Blogs.AddRange(blogs);
      }
   }

   /// <summary>
   /// Example uses Faker facade
   /// </summary>
   public static class FakeData2
   {
      public static int BlogId = 1;
      public static List<Blog> Blogs = new List<Blog>();

      public static int PostId = 1;
      public static List<Post> Posts = new List<Post>();

      private static Faker f;

      public static void Init(int count)
      {
         f = new Faker();

         GenerateBlogs(count);
      }

      private static void GenerateBlogs(int blogCount)
      {
         for( var i = 0; i < blogCount; i++, BlogId++ )
         {
            var blog = new Blog
               {
                  BlogId = BlogId,
                  Url = f.Internet.Url()
               };

            Blogs.Add(blog);

            var postCount = f.Random.Number(3, 5);
            GeneratePost(blog, postCount);
         };
      }

      private static void GeneratePost(Blog b, int postCount)
      {
         for( var i = 0; i < postCount; i++, PostId++ )
         {
            var post = new Post
               {
                  PostId = PostId,
                  BlogId = b.BlogId,
                  Title = f.Hacker.Phrase(),
                  Content = f.Lorem.Sentence()
               };

            Posts.Add(post);
         }
      }
   }

   public class Blog
   {
      public int BlogId { get; set; }
      public string Url { get; set; }

      public List<Post> Posts { get; } = new List<Post>();
   }

   public class Post
   {
      public int PostId { get; set; }
      public string Title { get; set; }
      public string Content { get; set; }

      public int BlogId { get; set; }
      public Blog Blog { get; set; }
   }
}


================================================
FILE: Examples/EFCoreSeedDb/README.md
================================================
[1]:https://docs.microsoft.com/en-us/ef/core/get-started/
[2]:https://docs.microsoft.com/en-us/ef/core/modeling/data-seeding

## EF Core Seed Database Example with Bogus

#### Requirements
* **.NET 8.0*** or later
* **EF Core 8** or later 

#### Description

The `EFCoreSeedDb` example is based on the [**EF Core Tutorial**][1] with the [**HasData**][2] method using **Bogus**.

To run the example, perform the following commands *inside* this `EfCoreSeedDb` folder:

  * `dotnet restore`
  * `dotnet build`
  * `dotnet ef migrations add InitialCreate`
  * `dotnet ef database update`
  * `dotnet run`
  
After the `dotnet` commands are executed above, you should have a `blogging.db` SQLite DB file that you can open and inspect the sample data generated from Bogus. Additionally, the `dotnet run` command will print out the data generated by Bogus to the console read from the `blogging.db` SQLite DB file.

The basic approach is to pre-generate your Bogus data in-memory, in static properties, before sending sample data to EF Core.

* `FakeData` - Uses the `Faker<T>` approach.
* `FakeData2` - Uses the `Faker` facade approach.

Either approach above can be used; pick whichever fits your preference and coding style.

================================================
FILE: Examples/Examples.sln
================================================

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29613.14
MinimumVisualStudioVersion = 16.0.29613.14
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCoreSeedDb", "EFCoreSeedDb\EFCoreSeedDb.csproj", "{7B012C90-4B93-4DB8-A0BA-AA91460DE392}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GettingStarted", "GettingStarted\GettingStarted.csproj", "{4B10A48D-F572-4984-8C61-8598E792436A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExtendingBogus", "ExtendingBogus\ExtendingBogus.csproj", "{44E22B4C-4280-4329-9A7E-3DEC7D487595}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|Any CPU = Release|Any CPU
		Release|x64 = Release|x64
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Debug|x64.ActiveCfg = Debug|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Debug|x64.Build.0 = Debug|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Debug|x86.ActiveCfg = Debug|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Debug|x86.Build.0 = Debug|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Release|Any CPU.Build.0 = Release|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Release|x64.ActiveCfg = Release|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Release|x64.Build.0 = Release|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Release|x86.ActiveCfg = Release|Any CPU
		{7B012C90-4B93-4DB8-A0BA-AA91460DE392}.Release|x86.Build.0 = Release|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Debug|x64.ActiveCfg = Debug|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Debug|x64.Build.0 = Debug|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Debug|x86.ActiveCfg = Debug|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Debug|x86.Build.0 = Debug|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Release|Any CPU.Build.0 = Release|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Release|x64.ActiveCfg = Release|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Release|x64.Build.0 = Release|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Release|x86.ActiveCfg = Release|Any CPU
		{4B10A48D-F572-4984-8C61-8598E792436A}.Release|x86.Build.0 = Release|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Debug|x64.ActiveCfg = Debug|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Debug|x64.Build.0 = Debug|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Debug|x86.ActiveCfg = Debug|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Debug|x86.Build.0 = Debug|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Release|Any CPU.Build.0 = Release|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Release|x64.ActiveCfg = Release|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Release|x64.Build.0 = Release|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Release|x86.ActiveCfg = Release|Any CPU
		{44E22B4C-4280-4329-9A7E-3DEC7D487595}.Release|x86.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {6C5437BE-1C81-49D9-931A-FCA2BC2DA589}
	EndGlobalSection
EndGlobal


================================================
FILE: Examples/ExtendingBogus/ExtendingBogus.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Bogus" Version="35.4.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>

</Project>


================================================
FILE: Examples/ExtendingBogus/ExtensionsForAddress.cs
================================================
namespace ExtendingBogus
{
   /// <summary>
   /// Augment the existing <seealso cref="Bogus.DataSets.Address"/> DataSet via C# extension method.
   /// </summary>
   public static class ExtensionsForAddress
   {
      private static readonly string[] CanadaDowntownTorontoPostalCodes =
         {
            "M5S", "M5B", "M5X", "M5V", "M4W", "M4X", "M4Y",
            "M5A", "M5C", "M5T", "M5E", "M5G", "M5H", "M5J",
            "M5K", "M5L", "M6G"
         };

      public static string DowntownTorontoPostalCode(this Bogus.DataSets.Address address)
      {
         return address.Random.ArrayElement(CanadaDowntownTorontoPostalCodes);
      }
   }
}


================================================
FILE: Examples/ExtendingBogus/ExtensionsForTesting.cs
================================================
using System;
using Newtonsoft.Json;

namespace ExtendingBogus
{
   public static class ExtensionsForTesting
   {
      public static void Dump(this object obj)
      {
         Console.WriteLine(obj.DumpString());
      }

      public static string DumpString(this object obj)
      {
         return JsonConvert.SerializeObject(obj, Formatting.Indented);
      }
   }
}


================================================
FILE: Examples/ExtendingBogus/FoodDataSet.cs
================================================
using Bogus;
using Bogus.Premium;

namespace ExtendingBogus
{
   /// <summary>
   /// The following shows how to create a dedicated DataSet accessible via C# extension method.
   /// </summary>
   public static class ExtensionsForFood
   {
      public static Food Food(this Faker faker)
      {
         return ContextHelper.GetOrSet(faker, () => new Food());
      }
   }

   /// <summary>
   /// This DatSet can be created manually using `new Candy()`, or by fluent extension method via <seealso cref="ExtensionsForFood"/>.
   /// </summary>
   public class Food : DataSet
   {
      private static readonly string[] Candies =
         {
            "Hard candy", "Taffy", "Chocolate bar", "Stick candy",
            "Jelly bean", "Mint", "Cotton candy", "Lollipop"
         };

      /// <summary>
      /// Returns some type of candy.
      /// </summary>
      public string Candy()
      {
         return this.Random.ArrayElement(Candies);
      }

      private static readonly string[] Drinks = { "Soda", "Water", "Beer", "Wine", "Coffee", "Lemonade", "Milk" };
      public string Drink()
      {
         return this.Random.ArrayElement(Drinks);
      }
   }

}


================================================
FILE: Examples/ExtendingBogus/Program.cs
================================================
using Bogus;

namespace ExtendingBogus
{
   class Program
   {
      static void Main(string[] args)
      {
         var userFaker = new Faker<User>()
            //Extend Bogus with a 'new' Food data set; see FoodDataSet.cs
            .RuleFor(p => p.FaveCandy, f => f.Food().Candy()) 
            .RuleFor(p => p.FaveDrink, f => f.Food().Drink())
            //Extend the existing Address data set with a custom C# extension method; see ExtensionsForAddress.cs
            .RuleFor(p => p.PostCode, f => f.Address.DowntownTorontoPostalCode()); 

         var user = userFaker.Generate();
         user.Dump();
      }
   }

   public class User
   {
      public string FaveDrink;
      public string FaveCandy;
      public string PostCode;
   }
}


================================================
FILE: Examples/ExtendingBogus/README.md
================================================
[1]:https://github.com/bchavez/Bogus#the-great-c-example

## Getting Started with Bogus

#### Requirements
* **.NET Core 3.1** or later

#### Description

The `ExtendingBogus` example shows how to extend **Bogus**' APIs in the following ways:

1. Using a custom C# extension method; see `ExtensionsForAddress.cs`.

   Augmenting **Bogus**' APIs via C# extension is useful to make APIs cleaner and more suitable for your specific situation.

1. Using a custom data set; see `FoodDataSet.cs`. 

   Creating a custom data set is useful when categorizing many 'related' APIs together.

To run the example, perform the following commands *inside* this `ExtendingBogus` folder:

  * `dotnet restore`
  * `dotnet build`
  * `dotnet run`
  
After the `dotnet` commands are successfully executed above, you should see some extended *custom* fake data printed to the console!

```
> dotnet run
```
```json
{
  "FaveDrink": "Soda",
  "FaveCandy": "Jelly bean",
  "PostCode": "M4W"
}
```

================================================
FILE: Examples/GettingStarted/GettingStarted.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Bogus" Version="35.4.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>

</Project>


================================================
FILE: Examples/GettingStarted/Program.cs
================================================
using System;
using System.Collections.Generic;
using Bogus;
using Bogus.DataSets;
using Bogus.Extensions;
using Newtonsoft.Json;

namespace GettingStarted
{
   class Program
   {
      static void Main(string[] args)
      {
         //Set the randomzier seed if you wish to generate repeatable data sets.
         Randomizer.Seed = new Random(3897234);

         var fruit = new[] {"apple", "banana", "orange", "strawberry", "kiwi"};

         var orderIds = 0;
         var testOrders = new Faker<Order>()
            //Ensure all properties have rules. By default, StrictMode is false
            //Set a global policy by using Faker.DefaultStrictMode if you prefer.
            .StrictMode(true)
            //OrderId is deterministic
            .RuleFor(o => o.OrderId, f => orderIds++)
            //Pick some fruit from a basket
            .RuleFor(o => o.Item, f => f.PickRandom(fruit))
            //A random quantity from 1 to 10
            .RuleFor(o => o.Quantity, f => f.Random.Number(1, 10))
            //A nullable int? with 80% probability of being null.
            //The .OrNull extension is in the Bogus.Extensions namespace.
            .RuleFor(o => o.LotNumber, f => f.Random.Int(0, 100).OrNull(f, .8f));

         var userIds = 0;
         var testUsers = new Faker<User>()
            //Optional: Call for objects that have complex initialization
            .CustomInstantiator(f => new User(userIds++, f.Random.Replace("###-##-####")))

            //Basic rules using built-in generators
            .RuleFor(u => u.FirstName, f => f.Name.FirstName())
            .RuleFor(u => u.LastName, f => f.Name.LastName())
            .RuleFor(u => u.Avatar, f => f.Internet.Avatar())
            .RuleFor(u => u.UserName, (f, u) => f.Internet.UserName(u.FirstName, u.LastName))
            .RuleFor(u => u.Email, (f, u) => f.Internet.Email(u.FirstName, u.LastName))
            .RuleFor(u => u.SomethingUnique, f => $"Value {f.UniqueIndex}")
            .RuleFor(u => u.SomeGuid, Guid.NewGuid)

            //Use an enum outside scope.
            .RuleFor(u => u.Gender, f => f.PickRandom<Gender>())
            //Use a method outside scope.
            .RuleFor(u => u.CartId, f => Guid.NewGuid())
            //Compound property with context, use the first/last name properties
            .RuleFor(u => u.FullName, (f, u) => u.FirstName + " " + u.LastName)
            //And composability of a complex collection.
            .RuleFor(u => u.Orders, f => testOrders.Generate(3))
            //After all rules are applied finish with the following action
            .FinishWith((f, u) =>
               {
                  Console.WriteLine("User Created! Name={0}", u.FullName);
               });

         var user = testUsers.Generate(3);
         user.Dump();
      }
   }

   public class Order
   {
      public int OrderId { get; set; }
      public string Item { get; set; }
      public int Quantity { get; set; }
      public int? LotNumber { get; set; }
   }

   public enum Gender
   {
      Male,
      Female
   }

   public class User
   {
      public User(int userId, string ssn)
      {
         this.Id = userId;
         this.SSN = ssn;
      }

      public int Id { get; set; }
      public string FirstName { get; set; }
      public string LastName { get; set; }
      public string FullName { get; set; }
      public string UserName { get; set; }
      public string Email { get; set; }
      public string SomethingUnique { get; set; }
      public Guid SomeGuid { get; set; }

      public string Avatar { get; set; }
      public Guid CartId { get; set; }
      public string SSN { get; set; }
      public Gender Gender { get; set; }

      public List<Order> Orders { get; set; }
   }

   public static class ExtensionsForTesting
   {
      public static void Dump(this object obj)
      {
         Console.WriteLine(obj.DumpString());
      }

      public static string DumpString(this object obj)
      {
         return JsonConvert.SerializeObject(obj, Formatting.Indented);
      }
   }
}


================================================
FILE: Examples/GettingStarted/README.md
================================================
[1]:https://github.com/bchavez/Bogus#the-great-c-example

## Getting Started with Bogus

#### Requirements
* **.NET Core 3.1** or later

#### Description

The `GettingStarted` example is the full working example of [**"The Great C# Example"**][1] on the homepage of this repository.

To run the example, perform the following commands *inside* this `GettingStarted` folder:

  * `dotnet restore`
  * `dotnet build`
  * `dotnet run`
  
After the `dotnet` commands are successfully executed above, you should see some fake JSON data printed to the console!

================================================
FILE: HISTORY.md
================================================
## v35.6.5
Release Date: 2025-10-25
* PR 622: Adds music and vehicle faker classes to parse method and unit tests. Thanks Perks-of-Being-a-Cauliflower!

## v35.6.4
Release Date: 2025-09-25
* PR 614: Adds Extension Method to generate Iranian National Numbers. Thanks @amirh-p!
* PR 607, 617, 618, 616, 615: General code improvements. Thanks @SimonCropp!
* Issue 619 and PR 620: Replaced defunct Placeholder.com with placehold.co. Image.PlaceholderUrl should work again. Thanks mahmmoudkinawy!

## v35.6.3
Release Date: 2025-04-12
* Issue 601: Fixes `Internet.Avatar()` URL generation. Moves from Cloudflare IPFS to IPFS.io.
* Fixed broken checksum calculation test in `BelgianExtensionTests`.
* .NET SDK 9 now required for builds. Various C# improvements and modernizations. Thanks @SimonCropp!

## v35.6.2
Release Date: 2025-02-20
* PR 584: Pack LICENSE file with NuGet package. Also, use ProjectIcon.
* Issue 581: Fix `Randomizer.ULong()` arithmetic overflow. Thanks @reuterma24!
* PR 586: Use .NET 9 SDK build tooling. Thanks @SimonCropp!
* PR 587: Fix CS1584 incorrect use of cref in XML doc comment. Thanks @SimonCropp!
* PR 589: Unlock ability to use any .NET SDK build tooling on AppVeyor. Thanks @SimonCropp!

## v35.6.1
Release Date: 2024-09-02
* PR 560: Ensure Belgian National Numbers has padded checksum. Thanks @vyruz1986!

## v35.6.0
Release Date: 2024-04-27
* PR 556: Remove obsolete/non-working LoremPixel image service. `Images.LoremPixelUrl()` is removed. Thanks @marijnz0r!
* PR 557: Added `Bogus.Extensions.Belgium` extension methods below. Thanks @vyruz1986!
* Added `f.Person.NationalNumber()` - Rijksregisternummer / Numéro Nationale

## v35.5.1
Release Date: 2024-04-27
* PR 538: Fixes Invalid Costa Rica IBAN format. Thanks @dangerman!

## v35.5.0
Release Date: 2024-03-09
* PR 500: Allows locally set time references for Date calculations instead of global statics. See Faker[T].UseDateTimeReference(), Faker.DateTimeReference, and DataSets.Date.LocalSystemClock. Thanks @garcipat!

## v35.4.1
Release Date: 2024-03-02
* PR 529: XML Docs: Add inclusive / exclusive number ranges documentation for Randomizer. Thanks @Mitchman215!
* PR 535: Fix gender-digit for Swedish Personnummer. Thanks @LarsBergqvist!

## v35.4.0
Release Date: 2024-01-14
* PR 488: Added `Bogus.Extensions.Poland` extension methods below. Thanks Mik1mak!
* Added `f.Person.Pesel()` - Number of Powszechny Elektroniczny System Ewidencji Ludności (PESEL)
* Added `f.Company.Nip()` - Numer identyfikacji podatkowej (NIP)
* Added `f.Company.Regon()` - Number of Rejestr Gospodarki Narodowej (REGON)
* PR 427: Fix incorrect generation for Finnish social security number. Thanks @roeyskoe!
* PR 431: Fix VIN can be longer than 17 character length. Thanks skwasjer!
* PR 421: Add strict VIN charset without I, O, and Q according to NHTSA standard. Thanks skwasjer!
* PR 414: Added `f.Person.Samordningsnummer()` extension method in `Bogus.Extensions.Sweden`. Swedish coordination number. Thanks aschan!

## v35.3.2
Release Date: 2024-01-13
* PR 466: Added `f.Person.Cnp()` extension method in `Bogus.Extensions.Romania`. Generates Romanian Personal Identification number (CNP). Thanks totpero!

## v35.3.1
Release Date: 2024-01-12
* PR 510: Added `f.Finance.VatNumber()` extension method in `Bogus.Extensions.UnitedKingdom`. Generates a UK compatible VAT registration number. Thanks p1971!

## v35.3.0
Release Date: 2024-01-01
* PR 496: Improves Denmark CPR number generator with checksum validation. Thanks @MunroRaymaker and @NielsPilgaard!

## v35.2.0
Release Date: 2023-12-26
* Issue 497: PR 522 - Better Xamarin AOT compatibility. Renames/removes diacritics from API method names Finland: Henkilötunnus -> Henkilotunnus; Norway: Fødselsnummer -> Fodselsnummer.

## v35.0.1
Release Date: 2023-12-11
* PR 513: Update Swedish `sv` locale; first/last names. Thanks @EBD232!

## v34.0.2
Release Date: 2022-03-27
* PR 406, 415: Improve XML documentation. Thanks @danielwagn3r, @DanteDeRuwe
* PR 413: Change access modifier of `Randomizer.localSeed` to protected. Thanks @davermaltby  

## v34.0.1
Release Date: 2021-11-22

* PR 399: Add support for .NET 6 DateOnly and TimeOnly random generations in Faker.Date. Thanks @prasadtelkikar!
* Moved Faker[T] extensions .OrNull() and .GenerateBetween() into main Bogus namespace.
* C# 10 and VS 2022 build tooling.

## v33.1.1
Release Date: 2021-08-29

* PR 390: Default Binder changed to allow use of private property setters in base classes. Thanks @thomaslevesque!

## v33.0.2
Release Date: 2021-02-21

* PR 359: Add `Bogus.Person.Personnummer()` Swedish national identity number

## v33.0.1
Release Date: 2021-02-07

* Locale data parity with faker-js@5478d65.
* `nep` locale renamed to `ne`. 
* `de` locale; `Date` dataset changed.
* `es` locale; gender names added.
* `fr` locale; `Date` dataset changed.
* `nb_NO` locale; gender names added.
* `nl` locale; `Address`, `Commerce`, `Date`, `Hacker`, `Internet` datasets changed; gender names added. 
* `pt_BR` locale; gender names added.
* `tr` locale; gender names added.
* `vi` locale; gender names added. `Date`, `Lorem`, datasets changed.
* Added `Internet.Port()`; generate port numbers from 1 to 65535.

## v32.1.1
Release Date: 2021-01-31

* Minor improvements to XML docs.
* Better exception messages around empty collections and empty arrays.
* PR 339: Fix null reference exception when calling StrictMode(true) on Faker<T> with no rules.
* PR 352: Fix first name generation for locales that don't support gender names.

## v32.0.2
Release Date: 2020-12-12

* Issue 342: Use realistic `pt_BR` city names.

## v32.0.1
Release Date: 2020-11-28

* Issue 336: Fixed `Internet.Avatar()` 403 Forbidden URLs. AWS S3 bucket hosting uifaces.com avatars was disabled. Avatars are now decentrally hosted on IPFS globally and retrieved from Cloudflare's IPFS gateway.
* To help host, pin root CID: Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye
* Browse: https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/
* Details: https://github.com/bchavez/Bogus/issues/336

## v31.0.3
Release Date: 2020-10-03

* Issue 328, 327: Fixed `pt_BR` locale where `Address.City()` threw `ArgumentOutOfRangeException`.

## v31.0.2
Release Date: 2020-09-13, UNPUBLISHED FROM NUGET

* Ensures Bogus Premium datasets load with new `DataSet.Get(category, path)` overload.

## v31.0.1
Release Date: 2020-09-13, UNPUBLISHED FROM NUGET

* Locale data parity with faker-js@91dc8a3.
* Added `Music` dataset with `.Genre()` method.
* Added `Date.TimeZoneString()`.
* Added new Finnish `fi` locale.
* Added new Hrvatski `hr` locale.
* `cz` locale updated.
* `en` locale updated.
* `en_IE` locale updated.
* `en_IND` locale updated.
* `fa` locale updated.
* `fr` locale updated.
* `ja` locale updated.
* `pl` locale updated.
* `pt_BR` locale updated.
* `ru` locale updated.
* `sv` locale updated.
* `vi` locale updated.
* `zh_CN` locale updated.

## v30.0.4
Release Date: 2020-08-15

* Issue 319: The `Random.Decimal()` implementation reverted to previous v29 implementation. Avoids arithmetic `OverflowException` when calling `Random.Decimal(0, decimal.MaxValue)`. The v30 implementation moved to `Bogus.Extensions` namespace as `Random.Decimal2()` which can generate more decimal precision.

## v30.0.3
Release Date: 2020-08-13, UNPUBLISHED FROM NUGET

* Added `f.Address.CountryOfUnitedKingdom()` extension method in `Bogus.Extensions.UnitedKingdom`.

## v30.0.2
Release Date: 2020-08-05, UNPUBLISHED FROM NUGET

* Deterministic sequences may have changed.
* Promoted v30.0.1-beta-4 to v30.0.2 release.

## v30.0.1-beta-4
Release Date: 2020-07-23

* Change credit card `CheckDigitExtension` methods to public

## v30.0.1-beta-3
Release Date: 2020-06-29

* Issue 307: Fixed `Internet.UserAgent()` sometimes generating invalid user agent strings that could not be parsed by `System.Net.Http.HttpRequestMessage.Headers`.

## v30.0.1-beta-2
Release Date: 2020-06-20

* Added `Finance.Litecoin()`.
* Added `Commerce.ProductDescription()`.
* Add PlaceIMG image service. `Image.PlaceImgUrl()`.
* Data parity with faker.js. Deterministic sequences may have changed.
* New `en_NG` Nigerian locale.
* `en` updated.
* `nl_BE` updated.
* `de` updated.
* `ru` updated.
* `zh_CN` updated.
* `zh_TW` updated.
* `ar` updated. 
* `cz` updated.
* `es_MX` updated.
* `sk` updated.
* `it` updated.

## v30.0.1-beta-1
Release Date: 2020-06-14

* PR 300: `Random.Number()` now inclusive of `max: int.MaxValue`.
* PR 300: `Random.Even()` better random distribution and range checking.
* PR 300: `Random.Odd()` better random distribution and range checking.  
* PR 300: `Random.Int()` bug fixed where `.Int()` may not return `int.MaxValue`.
* PR 300: `Random.Decimal()` with greater decimal precision.
* Deterministic values may have changed.
* Big thank you to @logiclrd for PR 300!

## v29.0.2
Release Date: 2020-04-11

* Minor update to `ru` locale data. Two `ru` city names could appear as one. 

## v29.0.1
Release Date: 2020-02-10

* Data parity with faker.js. Deterministic sequences using `Internet.Avatar()` may have changed.
* Add support for .snupkg NuGet Symbol Server Packages via SourceLink.
* Added Randomizer.EnumValues() that makes selecting a subset of enum values easier.
* Modified `.OrNull(f)` extension method signatures for type-safe with nullable primitive types, structs, and reference types via `in` parameter to avoid ambiguous calls.

## v28.4.4
Release Date: 2019-12-10

* PR 272: Add extension method for generating Norwegian national identity numbers. `Person.Fødselsnummer()`. Thanks @mika-s!

## v28.4.3
Release Date: 2019-12-03

* Issue 271: Minor bug fix in Brazil `Person.Cpf()` extension method. Previously, only the first call to `Person.Cpf(includeFormatSymbols)` respected the `includeFormatSymbols` parameter due to the final result being saved in `Person` context. `Person.Cpf()` now respects the `includeFormatSymbols` parameter after subsequent repeat calls to `Cpf()` with the same `Person`. Thanks for testing @ArthNRick!

## v28.4.2
Release Date: 2019-11-30

* PR 269: Adds `includeFormatSymbols` parameter to include or exclude formatting characters for Brazil `Person.Cpf()` and `Company.Cnpj()` extension methods.

## v28.4.1
Release Date: 2019-10-14

* Issue 260: Improved social security number (SSN) generation that should pass basic validation by avoiding invalid SSN ranges. Note: Deterministic SSNs generated with `Person.Ssn()` will change.
* Issue 252: `Internet.Ip()` now avoids generating IP addresses with a leading zero. For example, Bogus will not generate an IP address with a leading zero like 0.1.2.3. Note: Deterministic IPs generated with `Internet.Ip()` will change.
* PR 261: Added `Internet.IpAddress()`, `Internet.Ipv6Address()`, `Internet.IpEndPoint()`, and `Internet.Ipv6EndPoint()`.
* Issue 258: Add `Internet.UrlRootedPath()` to generate random `/foo/bar` paths.
* Added `Internet.UrlWithPath(fileExt:".txt")` fileExt extension parameter to generate URLs with a specific file extension.

## v28.3.2
Release Date: 2019-10-04

* PR 259: Fixes `.GenerateForever(ruleset)` to use ruleset parameter when supplied as argument. Thanks @StanleyGoldman!

## v28.3.1
Release Date: 2019-09-20

* Issue 255 / PR 256: Allows interfaces with `Faker<T>` using `Faker<IFoo>.CustomInstantiator(f => new Foo())`. Thanks Rowland!

## v28.2.1
Release Date: 2019-09-10

* Added `Faker<T>.RuleFor(string, (f, t) => )` overload.
* Internal re-factoring `.RuleFor` overload logic. Simplified overload call chain.
* Internal `Faker<T>.RuleForInternal()` renamed to `Faker<T>.AddRule()`

## v28.1.1
Release Date: 2019-09-09

* Issue 253, PR 254: New rule overload for `Faker<T>.RuleFor('string',...)`. Helps cases that require rules for protected or hidden members of `T`.

## v28.0.3
Release Date: 2019-08-28

* Issue 249: Fixed `Internet.Url()` including spaces in domain names for `pt_BR` locale or any locale with compound first names that may contain spaces. Thanks RodrigoRodriguesX10!
* PR 241: General code quality improvements in `DataSets.System`. Better XML docs and lower array allocations. Thanks bartdebever!
* PR 245: XML doc improvements to `DataSets.Lorem`. Thanks bartdebever! 

## v28.0.2
Release Date: 2019-07-07

* PR 235: Added `Bogus.DataSets.Vehicle.GbRegistrationPlate()` in `Bogus.Extensions.UnitedKingdom` extension namespace to generate GB registration plates. Thanks @colinangusmackay.

## v28.0.1
Release Date: 2019-07-02

* BREAKING: Deterministic sequence values may have changed for fake email addresses derived from `Internet.Email()` or `Internet.UserName()` in locales other than `en`.
* Issue 229: Adds `Finance.Iban(countryCode)` ISO3166 country code parameter. Allows generating IBAN codes for specific countries. The country code must be a supported otherwise an exception is thrown.  
* Issue 225: Better support for transliteration of international Unicode characters to US-Latin/Roman ASCII character sets. `Internet.Email()` and `Internet.UserName()` are more respectful of specified locale using character transliteration.
* Added `.Transliterate()` string extension method in `Bogus.Extensions` namespace.
* Added `Internet.UserNameUnicode()` that preserves Unicode characters in user names.
* Minor performance improvement to `Utils.Slugify` using compiled Regex.
* Issue 232: Adds `.OrNull[T]() where T : struct` overload which makes it easier to work with nullable types without type casting.
* Added `defaultValue` parameter to `.OrDefault(f, weight, defaultValue)` that can default to a different value than the `default` keyword.


## v27.0.1
Release Date: 2019-05-02

* Issue 218: Fixed bug that prevented global static `Faker.DefaultStrictMode` from working.
* Issue 210: Added `Randomizer.Utf16String` that generates technically valid Unicode with paired high/low surrogates.
* Added `placeholder.com` image service.

## v26.0.2
Release Date: 2019-03-22

* New `Person(seed)` constructor for seeding person objects by integer. Thanks @sgoguen!
* Fixed `Person.DateOfBirth` not using `Date.SystemClock` as 'now' reference.

## v26.0.1
Release Date: 2019-02-26

* Data and feature parity with faker.js @ d3ce6f1
* New `Vehicle` data set added.
* `en_IND` state abbreviations and state names updated.
* `en_CA`, `fr_CA` improved Canadian postal codes.
* `pt_PT` locale updated with new and changed data.
* `en` company names updated.
* `pt_PT` locale updated.
* Minor bug in `Date.Weekday` and `Date.Month` that could cause locale weekday/month values to default to `en`.
* Note: deterministic sequences may have changed.

## v25.0.4
Release Date: 2019-01-17

* PR 194: Update Dutch `nl` locale with extra `name.first_name`, `address.street_suffix`, and `company.suffix`.

## v25.0.3
Release Date: 2019-01-06

* Added `f.Images.LoremFlickrUrl()` (https://loremflickr.com) image service.
* Issue 193: Turkish :tr: state/providence names added to 'tr' locale.

## v25.0.2
Release Date: 2018-12-11

* Issue 192: Fixed IndexOutOfRangeException when `Company.CompanyName()` is used with `az` locale.

## v25.0.1
Release Date: 2018-11-27

* Add SourceLink compatibility with Visual Studio 2017.
* Obsoleted **LoremPixel.com** `Image` categories. The image service is usually down or very slow. Consider using `Images.PicsumUrl()` as a replacement. This version is an obsolete-warn, next release will have Image category APIs removed.

## v24.3.1
Release Date: 2018-11-03

* `tr` - Turkish locale first/last names updated. Lorem data set updated. Thanks ahmetcanaydemir!
* Added `f.Image.PicsumUrl` (https://picsum.photos) service as faster alternative to Lorem Pixel. 

## v24.3.0
Release Date: 2018-10-02

* Data / feature parity with faker.js @ 9dd5a52
* `af_ZA` - New South Africa (Afrikaans) locale added.
* `zu_ZA` - New South Africa (Zulu) locale added.
* `en_ZA` - South Africa (English) locale updated
* `ru` - Russian locale updated.
* `id_ID` - Indonesia locale updated.
* `es` - Spanish locale updated.
* `f.Images.DatUri` now accepts an HTML color parameter.
* PR 180: Resolved Turkish Culture `.ToLower` causing invalid JSON dataset path `.ToLowerInvariant` now used. 

## v24.2.0
Release Date: 2018-09-27

* Issue 179: Fixed regression introduced in 23.0.3 that forbid setting of internal/non-public members of `T` in when `Faker<T>` is used.

## v24.1.0
Release Date: 2018-09-26, UNPUBLISHED FROM NUGET

* Added `nullWeight` parameter to `.OrNull()` extension method for weighted generation of null values.
* Added new `.OrDefault()` extension method. Thanks @anorborg!

## v24.0.0
Release Date: 2018-09-26, UNPUBLISHED FROM NUGET

* BREAKING: Deterministic values may have changed. Parity with **faker.js** @ 07f39bd3.
* `en_ZA` - South Africa (English) locale added.
* `fr_CH` - French (Switzerland) locale added.
* `pl` locale "phone numbers" updated.
* `sv` locale "names" section updated.
* `en`, `de`, `de_AT` "names" section updated.
* Added `f.Commerce.Ean8` EAN-8 product barcode number generator.
* Added `f.Commerce.Ean13` EAN-13 product barcode number generator.

## v23.0.3
Release Date: 2018-08-29, UNPUBLISHED FROM NUGET 

* PR 170: Faster `Faker[T].Generate()` with setter cache. Approx 1.7x speedup. Thanks Mpdreamz!

## v23.0.2
Release Date: 2018-08-13

* BREAKING CHANGE: Deterministic sequence values may have changed. Unit tests expecting specific values may be different if `Bogus.Person` is used.
* Issue 168: Added `Bogus.Person.Address.State` field.
* Issue 139: Added `Date.SystemClock` static property for setting global time Bogus uses for date calculations.
* Issue 169: `Date.Weekday()` should return a weekday not a month.  

## v22.3.2
Release Date: 2018-07-18

* Added `f.Random.Guid()` for better GUID discoverability.
* PR 164: Added new Tax ID extensions `Person.Nif()` and `Company.Nipc()` for Portugal. Thanks JoseJr!  

## v22.3.1
Release Date: 2018-07-05

* PR 159: Add UK National Insurance Number `f.Finance.Nino()` in `Bogus.Extensions.UnitedKingdom`. Thanks mortware!
* PR 160: `DateTimeOffset` support added to `f.Date` dataset. Methods are suffixed by "Offset". IE: `f.Date.SoonOffset`. Thanks Simon!
* Added `refDate` parameter to `f.Date.Soon` and `f.Date.Recent`.
* `f.Date.Between(start, end)` now respects `DateTimeKind.Utc`.

## v22.2.1
Release Date: 2018-06-29

* PR 153: Possible breaking changes: Minor typo & spelling corrections made to some parameter names. Thanks for the corrections Simon!

## v22.1.4
Release Date: 2018-06-26

* PR 151: Added `Bogus.Distributions.Gaussian` namespace for numerical Normal Distribution generated values! Thanks codersg! 
* Added `uniqueSuffix` parameter to `Internet.Email()` to help with unique email constraints.
 
## v22.1.3
Release Date: 2018-06-14

* PR 149: Added new Arabic 'ar' locale. Thanks Saied!
* PR 148: Fixed `.FullName()` for locales where both first/last name have genders. Thanks binarycode!

## v22.1.2
Release Date: 2018-05-29

* Improved XML documentation comments on `Faker[T]` API.

## v22.1.1
Release Date: 2018-05-20

* PR 144: Argument support for mustache handlebars. Example: `{{name.firstname(Male)}}`
* Using **C# 7.3** generic `Enum` constraints for methods that only accept enums. Example: `f.PickRandom<Enum>()`.

## v22.0.9
Release Date: 2018-05-17

* Issue 143: Fixed rare case when `f.IndexGlobal` could be zero twice at start of generation.
* Fixed typo in XML docs.

## v22.0.8
Release Date: 2018-04-09

* New `Company.Ein()` to generate employer identification numbers.
* Preparing release of extended data sets for Bogus.

## v22.0.7
Release Date: 2018-04-01

* New `Internet.Color()` format options: CSS `rgb(...)` and delimited RGB.
* New `System.AndroidId()` to generate GCM registration ID.
* New `System.ApplePushToken()` to generate a random Apple Push Token.
* New `System.BlackBerryPin()` to generate a random Black Berry PIN.
* New `Randomizer.Hash()` to generate random hashes of specified length.
* New `Randomizer.String2()` to generate random strings with specified character sets.

## v22.0.6
Release Date: 2018-03-29

* Added `Randomizer.String` method to generate strings. Uses `Chars()` method.
* PR 136: Improve speed of `DataSet.ParseTokens()`. Thanks @danij!

## v22.0.5
Release Date: 2018-03-02

* Bogus now throws exceptions for locales it doesn't recognize. Improves developer experience.
* New extension method `.ToBogusLocale()` on `System.Globalization.CultureInfo` to help translate from **.NET** locale codes to **Bogus** locale codes.

## v22.0.3
Release Date: 2018-02-27
 
* Generate more realistic Bitcoin addresses.
* New extension method `Faker<T>.GenerateBetween(min, max)` that generates N objects between `min` and `max`. Located in `Bogus.Extensions`. N should be considered non-deterministic but technically depends on the parameters each time this extension method was called. 
* Added `Lorem.Paragraphs(min, max)` overload.
* Added improved XML doc comments and parameter names on `Lorem.Paragraph`.
* UK extension method `.ShortCode()` renamed to `.SortCode()` as originally intended.
* Marked `DataSet.Get/.GetObject/BObject` methods as `protected internal`. Reducing API surface noise.
* Added new `.OrNull` in `Bogus.Extensions` to help create randomly null values. Example: `.RuleFor(x=>x.Prop, f=>f.Random.Word().OrNull(f))`.
* New groundwork for extending Bogus with premium (paid) data sets and tooling.

## v22.0.2
Release Date: 2018-01-05

* Issue 121: Fixes the inability to `.Ignore(...)` a property or field after a rule had already been set.

## v22.0.1
Release Date: 2017-12-23

* Issue 120: `.Generate(n)` now returns `List<T>` instead of `IList<T>`.
* Added `f.Address.CountryCode()` ISO 3166-1 alpha-3 country code generator.
* New `Bogus.Extensions.Extras` namespace for generally useful helper methods.
* Added `Finance.CreditCardNumberObfuscated()` extension to `Bogus.Extensions.Extras` namespace.
* Moved credit card `CheckDigit()` extensions to `Bogus.Extensions.Extras` namespace. 

## v21.0.5
Release Date: 2017-12-16

* Better error support.
* Added `Person.FullName` field.
* Allowed `Faker<T>.FinishWith` to be called multiple times. Last call wins.

## v21.0.4
Release Date: 2017-12-13

* Fixed `f.Image` URL generation.

## v21.0.2 
* Re-enabled **.NET Standard 1.3** targeting.
* Added `Gender` field to `Person`. Deterministic sequences may have changed.
* Added `Randomizer.Bool(weight)` to generate weighted boolean values of true.
* Italian `CodiceFiscale()` extension method added. Extends `Person` and `Finance`.

## v20.0.2
Release Date: 2017-11-06

* Fixed Issue 102: `f.Random.Uuid()` is now deterministic based on global or local seed.

## v20.0.1
Release Date: 2017-11-04

* Added `Faker<T>.Clone()`: Clones internal state of a `Faker<T>` and allows for complex faking scenarios and rule combinations.
* Added `Faker<T>.UseSeed(n)`: Allows you to specify a localized seed value on a `Faker<T>` instead of a global static `Randomizer.Seed`.
* Stronger `Seed` determinism for multi-threaded scenarios.

## v19.0.2
Release Date: 2017-11-01

* Fixed #99: Possible threading issue that can cause `System.ArgumentException`.

## v19.0.1
Release Date: 2017-10-26, UNPUBLISHED FROM NUGET

* Using new BSON binary data format for locales.
* Removed dependency on Newtonsoft.Json!
* Locale Updates - 
* `fr`: new street address prefixes.
* `fa`: new street addresses.
* `pl`: removed 2008 value from city.
* `en`: new gender first names
* New Dutch (Belgium) `nl_BE` locale.
* New Romanian `ro` locale.
* Added `f.Finance.RoutingNumber` - Generates an ABA routing number with valid check digit.
* Added `Faker.GenerateForever` that returns `IEnumerable<T>` with unlimited generated items when iterated over.
* Added United Kingdom extension method to generate bank ShortCodes on `f.Finance.ShortCode()`.
* Re-ordered adjective and buzz in the `f.Company.Bs` for a correct gramatics.
* Added `f.Address.Direction`. Generates cardinal or ordinal directions.
* Added `f.Address.CardinalDirection`. Generates "North", "South", etc.
* Added `f.Address.OrdinalDirection`. Generates "Northeast", "Southwest", etc.

## v18.0.2
Release Date: 2017-09-14

* Issue 86: Removed diacritic mark/accents (á, í, ó, ú, etc) from generated email addresses and user names.
* Added `string.RemoveDiacritics` helper method.

## v18.0.1
Release Date: 2017-09-13

* Fixed bug in Finland's `f.Person.Henkilötunnus` personal identity code generator that sometimes produced 11 characters.
* Added `f.Finance.Ethereum`. Generate an Ethereum address.
* Added `f.Finance.CreditCardCvv`. Generate a random credit card CVV number.
* Improved `f.Finance.CreditCardNumber`. Generate a random credit card number.
* Added `f.Random.Hexadecimal`. Generates a random hexadecimal string.
* Added `f.System.DirectoryPath`. Generates a random directory path.
* Added `f.System.FilePath`. Generates a random file path.
* Added `f.Date.Soon`. Generates a date and time that will happen soon.
* Added `f.Random.ArrayElements`. Gets a random subset of an array.
* Added `f.Random.ListItems`. Gets a random subset of a list.
* Added `f.Company.Cnpj` extension method for Brazil. Generates Brazilian company document.
* Improved `f.PhoneNumbers`. More realistic US phone numbers.
* Improved `f.Address.Latitude/Longitude` with min and max parameters.
* Minimum for `f.Commerce.Price` is now $1.00 (not zero).
* Reduced assembly size by removing redundant locale data.
* Locale updates:
* `en_AU` - Update Australian postcode ranges.
* `en_IND` - Indian postcodes are always numeric.
* `ru` - Word corrections.

## v17.0.1
Release Date: 2017-08-24

* Migration to **.NET Standard 2.0**.

## v16.0.3
Release Date: 2017-08-24

* With additional overloads for `.PickRandom(IList)` and `.PickRandom(ICollection)` we can now add `.PickRandom("cat", "dog", "fish")` back to the API. 

## v16.0.2
Release Date: 2017-08-23

* BREAKING CHANGE: `Faker.Generate(n)` now calls `.ToList()` under the hood to escape LINQ deferred execution. Remembering to call `.ToList()` after `.Generate(n)` was a sticking point for new users writing test assertions on generated values. Please do not call `Faker.Generate(n).ToList()` as it would execute `.ToList()` twice. Simply, `Faker.Generate(n)` is enough.
* `f.Generate` and `f => f.Make` now return `IList<T>` to signify the breaking change above. 
* Issue #92: Added `.GenerateLazy` to keep old behavior and returns `IEnumerable<T>`.
* Issue #93: Renamed a `PickRandom` overload to avoid the compiler from picking wrong `PickRandom` method.
* Added `f.PickRandomParam("cat","dog","fish")`. 
* Removed `[Obsolete]` methods. 

## v15.0.7
Release Date: 2017-08-20

* Issue #88 - API aesthetics: Added `Name.FullName()` convenience method to generate a full name.

## v15.0.6
Release Date: 2017-08-02

* PR #87: Added `.Rules()` method on `RuleSet`. Thanks @digitalcyote.

## v15.0.5
Release Date: 2017-07-28

* Add parameter for including `Currency` fund codes (BOV, CLF, COU, MXV, UYI).
* Fixed minor issue in `Person.Email` having duplicate names.
* Helper method: `f.PickRandomWithout(ExcludeItem1, ExcludeItem2)` added.
* Helper method: `f.PickRandom("cat", "dog", "fish")` added.
* Performance: 40% reduction in Bogus' DLL size and memory footprint by removing whitespace in **Json** data files.
* Newtonsoft dependency update 10.0.3.  

## v15.0.3
Release Date: 2017-05-06

* Added `f => f.Rant` to generate random user content like product reviews.
* Added `new Faker[T].Rules( (f, t) => ...)` as a shortcut for building rules quickly.
* Added `Address.FullAddress`
* Added `Internet.UrlWithPath` allowing to create URLs with random paths.
* Added `ru` (Russian locale) hacker adjective, ing-verb, noun, and verb.
* Added `Internet.Mac` address separator parameter.
* Feature parity with **faker.js** @ 6cdb93ef...
* Using new C# 7 features. =)

## v15.0.1
Release Date: 2017-04-11

* Building with Visual Studio 2017.
* Issue 70: Fixed `ArgumentException` that occurs with derived hidden `new` properties.

## v12.0.2
* `f => f.Generate(n, i => ...)` overload allows use of index when using `f.Generate`.

## v12.0.1
Release Date: 2017-03-27

* PR 64: Improved `.PickRandom(IEnumerable)` performance. Thanks @chuuddo.
* Added `"string".ClampLength(max,min)` extension method to clamp length of strings between min and max.
* Issue 67: Fixed `Randomizer.Int(int.MaxValue, int.MinValue)` range overflow not returning random `int32` values.

## v11.0.5
Release Date: 2017-03-20

* Compatibility with `Newtonsoft.Json` v10.0.1

## v11.0.4
Release Date: 2017-03-14

* Added `.RuleFor(x.Item, "foo")`. Eliminates ceremony of `f =>` for simple values.

## v11.0.3
Release Date: 2017-03-13

* Added range option to `Sentence`.

## v11.0.2
Release Date: 2017-02-23

* New Feature: Allow implicit and explicit type casts: `Order o = orderFaker` and `var o = (Order)orderFaker` without having to call `orderFaker.Generate()`.

## v11.0.1
Release Date: 2017-02-21

* Added `IndexGlobal` alias for `UniqueIndex`.
* Added `IndexFaker` for uniqueness in Faker[T] lifetime.
* Added `IndexVariable` a developer controlled index convenience variable. 
* Added `Database` dataset to `f => f.Database` facade.
* Fixed Issue 57 - Avoid unexpected behavior with Parent-Child generators using `UniqueIndex`.
* Removed some `Internet.Avatars` that returned 404.
* Reached feature/data parity with `faker.js` v4.1.0.

## v10.0.1
Release Date: 2017-02-18

* `Internet.UserAgent` - Generates browser user agent strings.
* `Internet.Password` - Generates user passwords using regex.
* Added `az`/Azerbaijani locale.
* Disallow `/` character in `System.FileName`.
* `Helpers.Slugify` properly replaces spaces with `-` dashes.
* `Lorem.Slug` slugs some lorem text.
* `Finance.Iban` - Generates International Bank Account Numbers (IBAN).
* `Finance.Bic` - Generates Bank Identifier Code (BIC) codes.
* `Random.WeightedRandom` - Returns a weighted random distribution of items.
* Allow `https://` in random images.
* `Images.DataUri` - Generates "data:image/svg" URI with width and height.
* `Database` data set for generating column, collation, type stuff.

## v9.0.2
Release Date: 2017-01-19

* Bug: Issue 54: Work around for Visual Studio IntelliSense.

## v9.0.1
Release Date: 2017-01-18

* New Feature: Bogus is now a signed assembly; PublicToken: fa1bb3f3f218129a

## v8.0.4
Release Date: 2017-01-16

* New Feature: Added `PickRandom(IEnumerable)` overload. Thanks joleharkes.

## v8.0.3
Release Date: 2016-12-20

* New Feature: `RuleForType(typeof(string))` allows bulk/default for a particular type on a class. Useful for very large classes with a specific type.

## v8.0.2
Release Date: 2016-12-07

* Issue 46. Fixed threading deadlock situation with static faker initialization. Thanks Mpdreamz.
* Added `f => f.Generate(count, ()=> f.Phone.PhoneNumber())` helper for better fluency when filling properties with `List` of `T`.

## v8.0.1
Release Date: 2016-11-25

* Added `pt_PT` Portuguese (Portugal) locale. 

## v8.0.1-beta-1
Release Date: 2016-10-22

* Allow `Faker<T>.RuleFor` rules to be overridden. Last set rule wins.

## v7.1.7
Release Date: 2016-10-11

* `Faker<T>.AssertConfigurationIsValid` to help in unit testing scenarios.
* Add `Internet.Ipv6` method to generate IPv6 addresses.

## v7.1.6
Release Date: 2016-08-07

* Added `f => f.Commerce` on `Faker`.

## v7.1.5
Release Date: 2016-07-27

* Added `cz`/Czech locale
* Updated `en`, `nl`, `pl`, `sk`, `sv` locales.
* Realistic Dutch city naming
* `Randomizer.AlphaNumeric` added.
* `Randomizer.Double` now accepts `(min,max)` arguments
* Added convenience `Randomizer` for random `Decimal`, `Float`, `Byte`, `Bytes`, `SByte`, `Int`, `UInt`, `ULong`, `Long`, `Short`, `UShort`, `Char` and `Chars`.

## v7.1.4
Release Date: 2016-07-06

* Newtonsoft Json 9.0.1 dependency support.

## v7.1.3
Release Date: 2016-06-27

* :boom: .NET Core 1.0 RTM Support.

## v7.1.3-beta-1
Release Date: 2016-05-20

* Compatibility with .NET Standard 1.3 and .NET Core RC2.

## v7.1.2
Release Date: 2016-05-16

* Roll-up Release for .NET Framework since last non-beta release.
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v7.1.2-beta-1
Release Date: 2016-05-16

* Clamp Randomizer maximum value to int.MaxValue.

## v7.1.1
Release Date: 2016-05-15

* Roll-up Release for .NET Framework since last non-beta release.
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v7.1.1-beta-1
Release Date: 2016-05-15

* Locale update
* Date.Recent(0) generates random times for current date between midnight and now.
* New `System` data set for generating fake file names and mime-types.
* Added `Date.Timespan` for random timespan values.
* Added `System.Semver` for random semantic versions.
* Added `System.Version` for random System.Version objects.
* Added `Internet.ExampleEmail` for simple @example.com email generation.
* Added `Finance.BitcoinAddress` for random bitcoin addresses.
* BREAKING: Fake "seeded" data generated by Bogus may be different from previous versions.
* WARN: Address.City may have changed in some random seeds

## v6.1.1
Release Date: 2016-03-29

* Roll-up Release for .NET Framework since last non-beta release.
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v6.1.1-beta-1
Release Date: 2016-03-29

* Fixed index out of bounds bug in faker.Random.Word().
* Commerce.Department output may have changed as a result of this fix.

## v5.1.1-beta-3
Release Date: 2016-03-23

* Removed RuleFor(x = x.Prop, constantValue), was confusing the API.
* Added 0-arity RuleFor(x = x.Prop, () => someValue)

## v5.1.1-beta-2
Release Date: 2016-03-22

* Make f.UniqueIndex as int for convenience.
* Use generic RuleFor(x = x.Prop, constantValue).

## v5.1.1-beta-1
Release Date: 2016-03-21

* New RuleFor(x = x.Prop, constantValue)
* Support for Hashids.net: RuleFor(x = x.Id, f = f.Hashids.Encode())
* New f.UniqueIndex, useful for composing property values that require uniqueness.

## v5.0.1
Release Date: 2016-02-25

* Roll-up Release for .NET Framework since v4.0.1.
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v5.0.1-beta-2
Release Date: 2016-02-25

* JvanderStad PR15: Lazy load Person. Avoids extra Seed.Next calls that may interfere with seeded content.
* JvanderStad PR16: Better address generation. Respects locale address formats.
* Added "dotnet5.4" moniker support.
* BREAKING: Fake "seeded" data generated by Bogus may be different from previous versions.

## v4.0.1
Release Date: 2016-02-15

* Roll-up Release for .NET Framework since v3.0.6.
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v4.0.1-beta-1
Release Date: 2016-02-15

* Bogus - Feature parity with faker.js.
* System module added. Generate random file names and extensions.
* Randomizer - Added Uuid().
* Locales Updated: en_GB, sv, sk, de_CH, en.
* Locales Added: id_ID, el, lv.
* Prevent apostrophes in return value of Internet.DomainWords
* Added more parameters for Image data set.
* BREAKING API METHODS:
* Lorem - Better API methods: Seeded tests based on "content" will fail due to upgrade.

## v3.0.6
Release Date: 2016-01-21

* Roll-up Release for .NET Framework since v3.0.5.
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v3.0.6-beta-1
Release Date: 2016-01-21

* Issue #13: Fixed StrictMode to exclude private fields.
* New Feature: Ignore property or field in StrictMode: Faker[Order].Ignore(o => o.OrderId).
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v3.0.5
Release Date: 2016-01-20

* Roll-up Release for .NET Framework since v3.0.4.
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v3.0.5-beta-4
Release Date: 2016-01-19

* Issue #13: StrictMode() now ignores read-only properties.
* Newtonsoft.Json v8 compatibility.
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v3.0.5-beta-3
Release Date: 2016-01-18

* Issue #12: Make Bogus thread-safe on Generate() and DataSets. Avoids threading issues in test runners.
* CoreCLR users please continue using latest beta release until CoreCLR is RTM.

## v3.0.5-beta-2
Release Date: 2016-01-11

* CoreCLR support (CoreCLR users please continue using latest beta release until CoreCLR is RTM.).

## v3.0.4
Release Date: 2015-12-10

* Issue 10: Make Bogus work with fields also, not just properties. Fixes LINQPad issues.

## v3.0.3
Release Date: 2015-12-09

* PR 9: quantumplation - Fixed typo in Lorem.Sentance() -> Lorem.Sentence()

## v3.0.2
Release Date: 2015-11-24

* Generate US: SSN - Social Security Numbers.
* Generate Canada: SIN - Social Insurance Numbers.
* Generate Brazil: Cadastro de Pessoas Fisicas - CPF Numbers.
* Generate Finland: Henkilotunnus - Person ID numbers
* Generate Denmark: Det Centrale Personregister - Person ID numbers.
* Allow exclude values on Randomizer.Enum.
* Randomizer.Replace accepts '*' replace with letter or digit.
* Added Lorem.Letter(num).
* Can switch locale on Name: f.Name["en"].LastName()

## v3.0.1
Release Date: 2015-10-22

* Added debug symbols to symbolsource.org.
* PR#6: Fixed lastname and empty list exception -salixzs
* Switch to semantic versioning at par with FakerJS.

## v3.0.0.4
* Adding generators: Date.Month(), Date.Weekday()
* Sentences using lexically correct "A foo bar."
* Added Spanish Mexico (es_MX) locale.

## v3.0.0.3
Release Date: 2015-07-21

* Issue #2: Use latest Newtonsoft.Json 7.0.0.0 -Mpdreamz

## v3.0.0.2
Release Date: 2015-07-11

* Includes Ireland (English) locale.

## v3.0.0.1
Release Date: 2015-07-11

* Migrated to new FakerJS datafile format. Build system uses gulp file to directly import FakerJS locales.
* Faker.Parse() can now tokenize and replace handlebar formats.
* Added Faker.Hacker and Faker.Company properties.
* Added Custom separator on Lorem.Paragraph.
* Added Canada (French) (fr_CA) locale.
* Added Ukrainian (uk) locale.
* Added Ireland (en_IE) locale.
* Added Internet.Mac for mac addresses.
* Support for Canadian post/zip codes.
* Exposed Name.JobTitle, Name.JobDescriptor, Name.JobArea, Name.JobType
* Exposed Address.CountryCode
* Replace symbols in domain words so it generates output for all locales
* Support for gender names, but only for locales that support it. Russian('ru') but not English('en').
* Corrected abbreviation for Yukon to reflect its official abbreviation of "YT".

## v2.1.5.2
Release Date: 2015-06-22

* Fixed instantiating a Person in a non-US locale. -antongeorgiev

## v2.1.5.1
Release Date: 2015-06-11

* Added Georgian, Turkish, and Chinese (Taiwan) locales.
* Added Name.JobTitle()
* Added Internet.Url() and Internet.Protocol().
* Sync'd up with faker.js v2.1.5.

## v2.1.4.2
Release Date: 2015-06-11

* Fixed bug in Faker.Person and Faker[T] that generates new person context after every new object.
* Added support for .FinishWith() for post-processing that runs after all rules but before returning new instance.
* Added Newtonsoft.Json as NuGet dependency.

## v2.1.4.1
Release Date: 2015-06-10

* Minor changes, mostly XML doc update and Person moved from DataSet to Bogus namespace.

## v2.1.4
Release Date: 2015-06-08

* Initial port from faker.js 2.1.4.

================================================
FILE: LICENSE
================================================
MIT License

Bogus - Copyright (c) 2015 Brian Chavez 
* http://github.com/bchavez/Bogus
* http://bchavez.bitarmory.com

faker.js - Copyright (c) 2014-2015 Matthew Bergman & Marak Squires
http://github.com/marak/faker.js/

faker.js was inspired by and has used data definitions from:

Copyright (c) 2007-2010 Benjamin Curtis
https://github.com/stympy/faker/

Copyright 2004-2005 by Jason Kohles
http://search.cpan.org/~jasonk/Data-Faker-0.07/

Copyright (c) ZZZ Projects Inc. 2014 - 2016
https://github.com/zzzprojects/Z.ExtensionMethods/

Copyright (c) 2015 kernys
https://github.com/kernys/Kernys.Bson

Copyright (c) 2015 Victor Quinn
https://github.com/chancejs/chancejs

Copyright (c) 2014 Chris Veness
https://github.com/chrisveness/geodesy/

Copyright (c) 2013, Richard Morris
https://github.com/domaindrivendev/Swashbuckle/blob/master/LICENSE

Copyright (c) 2012 Daniele Faraglia
https://github.com/joke2k/faker/


Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

================================================================================

The BSD 3-Clause License (BSD3)

Copyright (c) 2013-2017 Sascha Droste <pid@posteo.net>
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* Neither the name of the author nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior
written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: README.md
================================================
[![Downloads](https://img.shields.io/nuget/dt/Bogus.svg)](https://www.nuget.org/packages/Bogus/) [![Build status](https://ci.appveyor.com/api/projects/status/dxa14myphnlbplc6/branch/master?svg=true)](https://ci.appveyor.com/project/bchavez/bogus)  [![Twitter](https://img.shields.io/twitter/url/https/github.com/bchavez/Bogus.svg?style=social)](https://twitter.com/intent/tweet?text=Simple%20Fake%20Data%20Generator%20for%20.NET:&amp;amp;url=https%3A%2F%2Fgithub.com%2Fbchavez%2FBogus) [![Chat](https://img.shields.io/badge/chat-discussions-green)](https://github.com/bchavez/Bogus/discussions) <img src="https://raw.githubusercontent.com/bchavez/Bogus/master/Docs/logo.png" align='right' />

Bogus for .NET: C#, F#, and VB.NET
======================

Project Description
-------------------
Hello. I'm your host **[Brian Chavez](https://github.com/bchavez)** ([twitter](https://twitter.com/bchavez)). **Bogus** is a simple fake data generator for **.NET** languages like **C#**, **F#** and **VB.NET**. **Bogus** is fundamentally a **C#** port of [`faker.js`](https://github.com/faker-js/faker.js/)
and inspired by [`FluentValidation`](https://github.com/JeremySkinner/FluentValidation)'s syntax sugar.

**Bogus** will help you load databases, UI and apps with fake data for your testing needs. If you like **Bogus** star :star: the repository and show your friends! :smile: If you find **Bogus** useful consider supporting the project by purchasing a [**Bogus Premium**](#bogus-premium-extensions) license that gives you extra **Bogus** superpowers! :dizzy: :muscle: You can also [sponsor the project here](https://github.com/sponsors/bchavez)! :moneybag: :dollar:


### Download & Install
**Nuget Package [Bogus](https://www.nuget.org/packages/Bogus/)**

```powershell
Install-Package Bogus
```
Minimum Requirements: **.NET Standard 1.3** or **.NET Standard 2.0** or **.NET Framework 4.0**.

##### Projects That Use Bogus

* [**Bitwarden Passwordless Server**](https://github.com/bitwarden/passwordless-server) [[code]](https://github.com/bitwarden/passwordless-server/blob/147e0ffa6e687634edcda7ac89518eab56936835/tests/Api.IntegrationTests/Helpers/User/UserHelpers.cs#L12-L22)
* [**Elasticsearch .NET Client (NEST)**](https://github.com/elastic/elasticsearch-net) [[code]](https://github.com/elastic/elasticsearch-net/tree/82c938893b2ff4ddca03a8e977ad14a16da712ba/src/Tests/Framework/MockData)
* [**FluentValidation**](https://github.com/FluentValidation/FluentValidation) [[code]](https://github.com/FluentValidation/FluentValidation/search?q=Bogus)
* [**Microsoft Windows-XAML / Template10**](https://github.com/Windows-XAML/Template10) [[code]](https://github.com/Windows-XAML/Template10/blob/beed5e58a4f8ab381cff6f063d2a91db5b4fc3bc/Basics/PrismSample/Services/DataService.cs#L1)
* [**Microsoft Learning / Cloud-Native Applications Using Microsoft Azure Cosmos DB**](https://github.com/MicrosoftLearning/dp-420-cosmos-db-dev) [[code]](https://github.com/MicrosoftLearning/dp-420-cosmos-db-dev/blob/fdbb3811c20a601fdfda8ea04c9c7de89b8afb19/instructions/08-sdk-bulk.md)
* **Microsoft Office Developer**
    * [**Office 365 Development Training Content**](https://github.com/OfficeDev/TrainingContent) [[code]](https://github.com/OfficeDev/TrainingContent/blob/0b2579517f0271f9a64f613b2046ab2821a73956/Teams/03%20Authentication/LabFiles/Starter/officedev-talent-management/DataModel/PositionCandidateData.cs)
    * [**Microsoft Teams Sample Connector**](https://github.com/OfficeDev/microsoft-teams-sample-connector-csharp) [[code]](https://github.com/OfficeDev/microsoft-teams-sample-connector-csharp/blob/8805bb1acb136949905e4644c4e714dd7b70a61a/TeamsToDoAppConnector/Utils/TaskHelper.cs)

##### Featured In
* [**Amazon AWS .NET Open Source Fund Recipient - Oct. 1st, 2024**](#sponsors)
* [**Microsoft 'On .NET Live': Next-level EF Core Data Seeding with Bogus - Apr. 15th, 2024**](https://www.youtube.com/watch?v=KoEOsfrRUqk&t=170s)
* [**Adventures in .NET: Building Bogus with Brian Chavez - Jan 5th, 2024**](https://www.youtube.com/watch?v=C1WwGKUY9K4)
* [**Microsoft Docs: Deploy Orleans to Azure App Service - May 5th, 2022**](https://docs.microsoft.com/en-us/dotnet/orleans/deployment/deploy-to-azure-app-service)
* [**Microsoft Docs: Modernize a WPF app tutorial - Aug. 2nd, 2019**](https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/modernize-wpf-tutorial-1#configure-nuget-packages-and-dependencies)
* [**Microsoft Build 2018: Azure Tips and Tricks - May 8th, 2018**](https://www.youtube.com/watch?v=088e5IUqF6g&t=12m31s)
* **[NuGet Must Haves: Top 10 Unit Testing Libraries in 2017](http://nugetmusthaves.com/article/top-unit-testing-libraries)**
* **[.NET Rocks Podcast: #BetterKnowThatFramework - Mar. 16th 2017](https://twitter.com/bchavez/status/842479138850070528)**, **[Sep. 13th, 2018](https://twitter.com/bchavez/status/1040479669743628290)**, and **[May 7th, 2020](https://twitter.com/bchavez/status/1264047877245988864)**
* **[.NET Engineering Blog: NuGet Package of the week #1. - "This week in .NET - December 8th 2015"](https://blogs.msdn.microsoft.com/dotnet/2015/12/08/the-week-in-net-12082015/)**

##### Blog Posts
* [Nick Chapsas](https://twitter.com/nickchapsas) - [Generating realistic fake data in .NET using Bogus [YouTube]](https://www.youtube.com/watch?v=T9pwE1GAr_U)
* [Jack Histon](https://twitter.com/jackhiston) - [How to Create Bogus Data in C#](http://jackhiston.com/2017/10/1/how-to-create-bogus-data-in-c/)
* [Christos Matskas](https://twitter.com/christosmatskas) - [Creating .NET fakes using Bogus](https://cmatskas.com/creating-net-fakes-using-bogus-2/)
* [Jason Roberts](https://twitter.com/robertsjason) - [Lifelike Test Data Generation with Bogus](http://dontcodetired.com/blog/post/Lifelike-Test-Data-Generation-with-Bogus)
* Mark Timmings - [Auto generating test data with Bogus](http://putridparrot.com/blog/auto-generating-test-data-with-bogus/)
* [.NET Core Generating Test Data](https://coderulez.wordpress.com/2017/05/10/net-core-generating-test-data/)
* Steve Leigh - [Seedy Fake Users](http://stevesspace.com/2017/01/seedy-fake-users/)
* [Volkan Paksoy](https://twitter.com/volkan_paksoy) - [Generating Test Data with Bogus](https://volkanpaksoy.com/archive/2019/06/27/Generating-Test-Data-with-Bogus/)
* Alican Demirtas - [Bogus on F#](https://www.compositional-it.com/news-blog/bogus-on-f/)
* [Khalid Abuhakmeh](https://twitter.com/buhakmeh) - [Seed Entity Framework Core With Bogus](https://khalidabuhakmeh.com/seed-entity-framework-core-with-bogus)
* [Sander ten Brinke](https://twitter.com/sandertenbrinke) - [Taking Entity Framework Core data seeding to the next level with Bogus](https://stenbrinke.nl/blog/taking-ef-core-data-seeding-to-the-next-level-with-bogus/)

##### The Crypto Tip Jar!
<a href="https://commerce.coinbase.com/checkout/2faa393a-6fc3-4365-993a-6cc110bc4d35"><img src="https://raw.githubusercontent.com/bchavez/Bogus/master/Docs/tipjar.png" /></a>


Usage
-----
### The Great C# Example

```csharp
public enum Gender
{
    Male,
    Female
}

//Set the randomizer seed if you wish to generate repeatable data sets.
Randomizer.Seed = new Random(8675309);

var fruit = new[] { "apple", "banana", "orange", "strawberry", "kiwi" };

var orderIds = 0;
var testOrders = new Faker<Order>()
    //Ensure all properties have rules. By default, StrictMode is false
    //Set a global policy by using Faker.DefaultStrictMode
    .StrictMode(true)
    //OrderId is deterministic
    .RuleFor(o => o.OrderId, f => orderIds++)
    //Pick some fruit from a basket
    .RuleFor(o => o.Item, f => f.PickRandom(fruit))
    //A random quantity from 1 to 10
    .RuleFor(o => o.Quantity, f => f.Random.Number(1, 10))
    //A nullable int? with 80% probability of being null.
    //The .OrNull extension is in the Bogus.Extensions namespace.
    .RuleFor(o => o.LotNumber, f => f.Random.Int(0, 100).OrNull(f, .8f));


var userIds = 0;
var testUsers = new Faker<User>()
    //Optional: Call for objects that have complex initialization
    .CustomInstantiator(f => new User(userIds++, f.Random.Replace("###-##-####")))

    //Use an enum outside scope.
    .RuleFor(u => u.Gender, f => f.PickRandom<Gender>())

    //Basic rules using built-in generators
    .RuleFor(u => u.FirstName, (f, u) => f.Name.FirstName(u.Gender))
    .RuleFor(u => u.LastName, (f, u) => f.Name.LastName(u.Gender))
    .RuleFor(u => u.Avatar, f => f.Internet.Avatar())
    .RuleFor(u => u.UserName, (f, u) => f.Internet.UserName(u.FirstName, u.LastName))
    .RuleFor(u => u.Email, (f, u) => f.Internet.Email(u.FirstName, u.LastName))
    .RuleFor(u => u.SomethingUnique, f => $"Value {f.UniqueIndex}")

    //Use a method outside scope.
    .RuleFor(u => u.CartId, f => Guid.NewGuid())
    //Compound property with context, use the first/last name properties
    .RuleFor(u => u.FullName, (f, u) => u.FirstName + " " + u.LastName)
    //And composability of a complex collection.
    .RuleFor(u => u.Orders, f => testOrders.Generate(3).ToList())
    //Optional: After all rules are applied finish with the following action
    .FinishWith((f, u) =>
        {
            Console.WriteLine("User Created! Id={0}", u.Id);
        });

var user = testUsers.Generate();
Console.WriteLine(user.DumpAsJson());

/* OUTPUT:
User Created! Id=0
 *
{
  "Id": 0,
  "FirstName": "Audrey",
  "LastName": "Spencer",
  "FullName": "Audrey Spencer",
  "UserName": "Audrey_Spencer72",
  "Email": "Audrey82@gmail.com",
  "Avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/itstotallyamy/128.jpg",
  "CartId": "863f9462-5b88-471f-b833-991d68db8c93",
  "SSN": "923-88-4231",
  "Gender": 0,
  "Orders": [
    {
      "OrderId": 0,
      "Item": "orange",
      "Quantity": 8
    },
    {
      "OrderId": 1,
      "Item": "banana",
      "Quantity": 2
    },
    {
      "OrderId": 2,
      "Item": "kiwi",
      "Quantity": 9
    }
  ]
} */
```

#### More Examples!
| Language  | Description | 
|:---------:| ----------- |
| **C#**    | [**Full working example of 'The Great C# Example'**](https://github.com/bchavez/Bogus/tree/master/Examples/GettingStarted) |
| **C#**    | [**Using Bogus and EF Core to a seed database**](https://github.com/bchavez/Bogus/tree/master/Examples/EFCoreSeedDb) |
| **C#**    | [**Extending Bogus with custom APIs and data**](https://github.com/bchavez/Bogus/tree/master/Examples/ExtendingBogus) |
| **F#**    | [**Using Bogus with F#**](#the-fabulous-f-examples) |
| **VB.NET** | [**Using Bogus with VB.NET**](#the-very-basic-vbnet-example) |


### Locales

Since we're a port of **faker.js**, we support a whole bunch of different
locales. Here's an example in Korean:

```csharp
[Test]
public void With_Korean_Locale()
{
    var lorem = new Bogus.DataSets.Lorem(locale: "ko");
    Console.WriteLine(lorem.Sentence(5));
}

/* 국가는 무상으로 행위로 의무를 구성하지 신체의 처벌받지 예술가의 경우와 */
```

**Bogus** supports the following locales:

| Locale Code  | Language                | | Locale Code  | Language                 |
|:------------:|:-----------------------:|-|:------------:|:------------------------:|
|`af_ZA`       |Afrikaans                 ||`fr_CH`       |French (Switzerland)      |
|`ar`          |Arabic                    ||`ge`          |Georgian                  |
|`az`          |Azerbaijani               ||`hr`          |Hrvatski                  |
|`cz`          |Czech                     ||`id_ID`       |Indonesia                 |
|`de`          |German                    ||`it`          |Italian                   |
|`de_AT`       |German (Austria)          ||`ja`          |Japanese                  |
|`de_CH`       |German (Switzerland)      ||`ko`          |Korean                    |
|`el`          |Greek                     ||`lv`          |Latvian                   |
|`en`          |English                   ||`nb_NO`       |Norwegian                 |
|`en_AU`       |English (Australia)       ||`ne`          |Nepalese                  |
|`en_AU_ocker` |English (Australia Ocker) ||`nl`          |Dutch                     |
|`en_BORK`     |English (Bork)            ||`nl_BE`       |Dutch (Belgium)           |
|`en_CA`       |English (Canada)          ||`pl`          |Polish                    |
|`en_GB`       |English (Great Britain)   ||`pt_BR`       |Portuguese (Brazil)       |
|`en_IE`       |English (Ireland)         ||`pt_PT`       |Portuguese (Portugal)     |
|`en_IND`      |English (India)           ||`ro`          |Romanian                  |
|`en_NG`       |Nigeria (English)         ||`ru`          |Russian                   |
|`en_US`       |English (United States)   ||`sk`          |Slovakian                 |
|`en_ZA`       |English (South Africa)    ||`sv`          |Swedish                   |
|`es`          |Spanish                   ||`tr`          |Turkish                   |
|`es_MX`       |Spanish (Mexico)          ||`uk`          |Ukrainian                 |
|`fa`          |Farsi                     ||`vi`          |Vietnamese                |
|`fi`          |Finnish                   ||`zh_CN`       |Chinese                   |
|`fr`          |French                    ||`zh_TW`       |Chinese (Taiwan)          |
|`fr_CA`       |French (Canada)           ||`zu_ZA`       |Zulu (South Africa)       |


***Note:*** Some locales may not have a complete data set. For example, [`zh_CN`](https://github.com/faker-js/faker.js/tree/master/lib/locales/zh_CN) does not have a `lorem` data set, but [`ko`](https://github.com/faker-js/faker.js/tree/master/lib/locales/ko) has a `lorem` data set. **Bogus** will default to `en` if a *locale-specific* data set is not found. To further illustrate the previous example, the missing `zh_CN:lorem` data set will default to the `en:lorem` data set.

If you'd like to help contribute new locales or update existing ones please see our
[Creating Locales](https://github.com/bchavez/Bogus/wiki/Creating-Locales) wiki page
for more info.

### Without Fluent Syntax

You can use **Bogus** without a fluent setup. The examples below highlight three alternative ways to use **Bogus** without a fluent syntax setup.

* Using the `Faker` facade.
* Using **DataSets** directly.
* Using `Faker<T>` **inheritance**.

#### Using the `Faker` facade:
```csharp
public void Using_The_Faker_Facade()
{
   var faker = new Faker("en");
   var o = new Order()
       {
           OrderId = faker.Random.Number(1, 100),
           Item = faker.Lorem.Sentence(),
           Quantity = faker.Random.Number(1, 10)
       };
   o.Dump();
}
```

#### Using **DataSets** directly:
```csharp
public void Using_DataSets_Directly()
{
   var random = new Bogus.Randomizer();
   var lorem = new Bogus.DataSets.Lorem("en");
   var o = new Order()
       {
           OrderId = random.Number(1, 100),
           Item = lorem.Sentence(),
           Quantity = random.Number(1, 10)
       };
   o.Dump();
}
```

#### Using `Faker<T>` inheritance:
```csharp
public class OrderFaker : Faker<Order> {
   public OrderFaker() {
      RuleFor(o => o.OrderId, f => f.Random.Number(1, 100));
      RuleFor(o => o.Item, f => f.Lorem.Sentence());
      RuleFor(o => o.Quantity, f => f.Random.Number(1, 10));
   }
}

public void Using_FakerT_Inheritance()
{
   var orderFaker = new OrderFaker();
   var o = orderFaker.Generate();
   o.Dump();
}
```

In the examples above, all three alternative styles of using **Bogus** produce the same `Order` result:
```
{
  "OrderId": 61,
  "Item": "vel est ipsa",
  "Quantity": 7
}
```

### Bogus API Support
* **`Address`**
	* `ZipCode` - Get a zipcode.
	* `City` - Get a city name.
	* `StreetAddress` - Get a street address.
	* `CityPrefix` - Get a city prefix.
	* `CitySuffix` - Get a city suffix.
	* `StreetName` - Get a street name.
	* `BuildingNumber` - Get a building number.
	* `StreetSuffix` - Get a street suffix.
	* `SecondaryAddress` - Get a secondary address like 'Apt. 2' or 'Suite 321'.
	* `County` - Get a county.
	* `Country` - Get a country.
	* `FullAddress` - Get a full address like Street, City, Country.
	* `CountryCode` - Get a random ISO 3166-1 country code.
	* `State` - Get a random state state.
	* `StateAbbr` - Get a state abbreviation.
	* `Latitude` - Get a Latitude.
	* `Longitude` - Get a Longitude.
	* `Direction` - Generates a cardinal or ordinal direction. IE: Northwest, South, SW, E.
	* `CardinalDirection` - Generates a cardinal direction. IE: North, South, E, W.
	* `OrdinalDirection` - Generates an ordinal direction. IE: Northwest, Southeast, SW, NE.
* **`Commerce`**
	* `Department` - Get a random commerce department.
	* `Price` - Get a random product price.
	* `Categories` - Get random product categories.
	* `ProductName` - Get a random product name.
	* `Color` - Get a random color.
	* `Product` - Get a random product.
	* `ProductAdjective` - Random product adjective.
	* `ProductMaterial` - Random product material.
	* `Ean8` - Get a random EAN-8 barcode number.
	* `Ean13` - Get a random EAN-13 barcode number.
* **`Company`**
	* `CompanySuffix` - Get a company suffix. "Inc" and "LLC" etc.
	* `CompanyName` - Get a company name.
	* `CatchPhrase` - Get a company catch phrase.
	* `Bs` - Get a company BS phrase.
* **`Database`**
	* `Column` - Generates a column name.
	* `Type` - Generates a column type.
	* `Collation` - Generates a collation.
	* `Engine` - Generates a storage engine.
* **`Date`**
	* `Past` - Get a `DateTime` in the past between `refDate` and `yearsToGoBack`.
	* `PastOffset` - Get a `DateTimeOffset` in the past between `refDate` and `yearsToGoBack`.
	* `Soon` - Get a `DateTime` that will happen soon.
	* `SoonOffset` - Get a `DateTimeOffset` that will happen soon.
	* `Future` - Get a `DateTime` in the future between `refDate` and `yearsToGoForward`.
	* `FutureOffset` - Get a `DateTimeOffset` in the future between `refDate` and `yearsToGoForward`.
	* `Between` - Get a random `DateTime` between `start` and `end`.
	* `BetweenOffset` - Get a random `DateTimeOffset` between `start` and `end`.
	* `Recent` - Get a random `DateTime` within the last few days.
	* `RecentOffset` - Get a random `DateTimeOffset` within the last few days.
	* `Timespan` - Get a random `TimeSpan`.
	* `Month` - Get a random month.
	* `Weekday` - Get a random weekday.
* **`Finance`**
	* `Account` - Get an account number. Default length is 8 digits.
	* `AccountName` - Get an account name. Like "savings", "checking", "Home Loan" etc..
	* `Amount` - Get a random amount. Default 0 - 1000.
	* `TransactionType` - Get a transaction type: "deposit", "withdrawal", "payment", or "invoice".
	* `Currency` - Get a random currency.
	* `CreditCardNumber` - Generate a random credit card number with valid Luhn checksum.
	* `CreditCardCvv` - Generate a credit card CVV.
	* `BitcoinAddress` - Generates a random Bitcoin address.
	* `EthereumAddress` - Generate a random Ethereum address.
	* `RoutingNumber` - Generates an ABA routing number with valid check digit.
	* `Bic` - Generates Bank Identifier Code (BIC) code.
	* `Iban` - Generates an International Bank Account Number (IBAN).
* **`Hacker`**
	* `Abbreviation` - Returns an abbreviation.
	* `Adjective` - Returns a adjective.
	* `Noun` - Returns a noun.
	* `Verb` - Returns a verb.
	* `IngVerb` - Returns a verb ending with -ing.
	* `Phrase` - Returns a phrase.
* **`Images`**
	* `DataUri` - Get a SVG data URI image with a specific width and height.
	* `PicsumUrl` - Get an image from the https://picsum.photos service.
	* `PlaceholderUrl` - Get an image from https://placeholder.com service.
	* `LoremFlickrUrl` - Get an image from https://loremflickr.com service.
* **`Internet`**
	* `Avatar` - Generates a legit Internet URL avatar from twitter accounts.
	* `Email` - Generates an email address.
	* `ExampleEmail` - Generates an example email with @example.com.
	* `UserName` - Generates user names.
	* `UserNameUnicode` - Generates a user name preserving Unicode characters.
	* `DomainName` - Generates a random domain name.
	* `DomainWord` - Generates a domain word used for domain names.
	* `DomainSuffix` - Generates a domain name suffix like .com, .net, .org
	* `Ip` - Gets a random IPv4 address string.
	* `Port` - Generates a random port number.
	* `IpAddress` - Gets a random IPv4 IPAddress type.
	* `IpEndPoint` - Gets a random IPv4 IPEndPoint.
	* `Ipv6` - Generates a random IPv6 address string.
	* `Ipv6Address` - Generate a random IPv6 IPAddress type.
	* `Ipv6EndPoint` - Gets a random IPv6 IPEndPoint.
	* `UserAgent` - Generates a random user agent.
	* `Mac` - Gets a random mac address.
	* `Password` - Generates a random password.
	* `Color` - Gets a random aesthetically pleasing color near the base RGB. See [here](http://stackoverflow.com/questions/43044/algorithm-to-randomly-generate-an-aesthetically-pleasing-color-palette).
	* `Protocol` - Returns a random protocol. HTTP or HTTPS.
	* `Url` - Generates a random URL.
	* `UrlWithPath` - Get an absolute URL with random path.
	* `UrlRootedPath` - Get a rooted URL path like: /foo/bar. Optionally with file extension.
* **`Lorem`**
	* `Word` - Get a random lorem word.
	* `Words` - Get an array of random lorem words.
	* `Letter` - Get a character letter.
	* `Sentence` - Get a random sentence of specific number of words.
	* `Sentences` - Get some sentences.
	* `Paragraph` - Get a paragraph.
	* `Paragraphs` - Get a specified number of paragraphs.
	* `Text` - Get random text on a random lorem methods.
	* `Lines` - Get lines of lorem.
	* `Slug` - Slugify lorem words.
* **`Name`**
	* `FirstName` - Get a first name. Getting a gender specific name is only supported on locales that support it.
	* `LastName` - Get a last name. Getting a gender specific name is only supported on locales that support it.
	* `FullName` - Get a full name, concatenation of calling FirstName and LastName.
	* `Prefix` - Gets a random prefix for a name.
	* `Suffix` - Gets a random suffix for a name.
	* `FindName` - Gets a full name.
	* `JobTitle` - Gets a random job title.
	* `JobDescriptor` - Get a job description.
	* `JobArea` - Get a job area expertise.
	* `JobType` - Get a type of job.
* **`Phone`**
	* `PhoneNumber` - Get a phone number.
	* `PhoneNumberFormat` - Gets a phone number based on the locale's phone_number.formats[] array index.
* **`Rant`**
	* `Review` - Generates a random user review.
	* `Reviews` - Generate an array of random reviews.
* **`System`**
	* `FileName` - Get a random file name.
	* `DirectoryPath` - Get a random directory path (Unix).
	* `FilePath` - Get a random file path (Unix).
	* `CommonFileName` - Generates a random file name with a common file extension.
	* `MimeType` - Get a random mime type.
	* `CommonFileType` - Returns a commonly used file type.
	* `CommonFileExt` - Returns a commonly used file extension.
	* `FileType` - Returns any file type available as mime-type.
	* `FileExt` - Gets a random extension for the given mime type.
	* `Semver` - Get a random semver version string.
	* `Version` - Get a random `Version`.
	* `Exception` - Get a random `Exception` with a fake stack trace.
	* `AndroidId` - Get a random GCM registration ID.
	* `ApplePushToken` - Get a random Apple Push Token.
	* `BlackBerryPin` - Get a random BlackBerry Device PIN.
* **`Vehicle`**
	* `Vin` - Generate a vehicle identification number (VIN).
	* `Manufacturer` - Get a vehicle manufacture name. IE: Toyota, Ford, Porsche.
	* `Model` - Get a vehicle model. IE: Camry, Civic, Accord.
	* `Type` - Get a vehicle type. IE: Minivan, SUV, Sedan.
	* `Fuel` - Get a vehicle fuel type. IE: Electric, Gasoline, Diesel.
* **`Random`/`Randomizer`**
	* `Number` - Get an int from 0 to max.
	* `Digits` - Get a random sequence of digits.
	* `Even` - Returns a random even number.
	* `Odd` - Returns a random odd number.
	* `Double` - Get a random double, between 0.0 and 1.0.
	* `Decimal` - Get a random decimal, between 0.0 and 1.0.
	* `Float` - Get a random float, between 0.0 and 1.0.
	* `Byte` - Generate a random byte between 0 and 255.
	* `Bytes` - Get a random sequence of bytes.
	* `SByte` - Generate a random sbyte between -128 and 127.
	* `Int` - Generate a random int between MinValue and MaxValue.
	* `UInt` - Generate a random uint between MinValue and MaxValue.
	* `ULong` - Generate a random ulong between MinValue and MaxValue.
	* `Long` - Generate a random long between MinValue and MaxValue.
	* `Short` - Generate a random short between MinValue and MaxValue.
	* `UShort` - Generate a random ushort between MinValue and MaxValue.
	* `Char` - Generate a random char between MinValue and MaxValue.
	* `Chars` - Generate a random chars between MinValue and MaxValue.
	* `String` - Get a string of characters of a specific length.
	* `String2` - Get a string of characters with a specific length drawing characters from `chars`.
	* `Hash` - Return a random hex hash. Default 40 characters, aka SHA-1.
	* `Bool` - Get a random boolean.
	* `ArrayElement<T>` - Get a random array element.
	* `ArrayElement` - Get a random array element.
	* `ArrayElements<T>` - Get a random subset of an array.
	* `ListItem<T>` - Get a random list item.
	* `ListItems<T>` - Get a random subset of a List.
	* `CollectionItem<T>` - Get a random collection item.
	* `ReplaceNumbers` - Replaces symbols with numbers.
	* `ReplaceSymbols` - Replaces each character instance in a string.
	* `Replace` - Replaces symbols with numbers and letters. # = number, ? = letter, * = number or letter.
	* `ClampString` - Clamps the length of a string between min and max characters.
	* `Enum<T>` - Picks a random Enum of T. Works only with Enums.
	* `Shuffle<T>` - Shuffles an IEnumerable source.
	* `Word` - Returns a single word or phrase in English.
	* `Words` - Gets some random words and phrases in English.
	* `WordsArray` - Get a range of words in an array (English).
	* `Guid` - Get a random GUID.
	* `Uuid` - Get a random GUID. Alias for Randomizer.Guid().
	* `RandomLocale` - Returns a random locale.
	* `AlphaNumeric` - Returns a random set of alpha numeric characters 0-9, a-z.
	* `Hexadecimal` - Generates a random hexadecimal string.
	* `WeightedRandom<T>` - Returns a selection of T[] based on a weighted distribution of probability.

#### API Extension Methods
* **`using Bogus.Extensions.Belgium;`**
	* `Bogus.Person.NationalNumber()` - Rijksregisternummer / Numéro Nationale
* **`using Bogus.Extensions.Brazil;`**
	* `Bogus.Person.Cpf()` - Cadastro de Pessoas Físicas
	* `Bogus.DataSets.Company.Cnpj()` - Cadastro Nacional da Pessoa Jurídica
* **`using Bogus.Extensions.Canada;`**
	* `Bogus.Person.Sin()` - Social Insurance Number for Canada
* **`using Bogus.Extensions.Denmark;`**
	* `Bogus.Person.Cpr()` - Danish Personal Identification number
* **`using Bogus.Extensions.Finland;`**
	* `Bogus.Person.Henkilotunnus()` - Finnish Henkilötunnus
* **`using Bogus.Extensions.Italy;`**
	* `Bogus.Person.CodiceFiscale()` - Codice Fiscale
	* `Bogus.DataSets.Finance.CodiceFiscale()` - Codice Fiscale
* **`using Bogus.Extensions.Norway;`**
	* `Bogus.Person.Fodselsnummer()` - Norwegian national identity number
* **`using Bogus.Extensions.Poland;`**
	* `Bogus.Person.Pesel()` - Number of Powszechny Elektroniczny System Ewidencji Ludności (PESEL)
	* `Bogus.DataSets.Company.Nip()` - Numer identyfikacji podatkowej (NIP)
	* `Bogus.DataSets.Company.Regon()` - Number of Rejestr Gospodarki Narodowej (REGON)
* **`using Bogus.Extensions.Portugal;`**
	* `Bogus.Person.Nif()` - Número de Identificação Fiscal (NIF)
	* `Bogus.DataSets.Company.Nipc()` - Número de Identificação de Pessoa Colectiva (NIPC)
* **`using Bogus.Extensions.Romania;`**
	* `Bogus.Person.Cnp()` - Romanian Personal Identification number (CNP)
* **`using Bogus.Extensions.Sweden;`**
	* `Bogus.Person.Personnummer()` - Swedish national identity number
	* `Bogus.Person.Samordningsnummer()` - Swedish coordination number
* **`using Bogus.Extensions.UnitedKingdom;`**
	* `Bogus.DataSets.Vehicle.GbRegistrationPlate()` - GB Vehicle Registration Plate
	* `Bogus.DataSets.Finance.SortCode()` - Banking Sort Code
	* `Bogus.DataSets.Finance.Nino()` - National Insurance Number
	* `Bogus.DataSets.Finance.VatNumber()` - Generates a UK compatible VAT registration number
	* `Bogus.DataSets.Address.CountryOfUnitedKingdom()` - Country of the United Kingdom
* **`using Bogus.Extensions.UnitedStates;`**
	* `Bogus.Person.Ssn()` - Social Security Number
	* `Bogus.DataSets.Company.Ein()` - Employer Identification Number
* **`using Bogus.Distributions.Gaussian;`**
    * `Randomizer.GaussianInt()` - Generate an `int` based on a specific normal distribution.
    * `Randomizer.GaussianFloat()` - Generate a `float` based on a specific normal distribution.
    * `Randomizer.GaussianDouble()` - Generate a `double` based on a specific normal distribution.
    * `Randomizer.GaussianDecimal()` - Generate a `decimal` based on a specific normal distribution.
    
#### Amazing Community Extensions
* [**AutoBogus**](https://github.com/nickdodd79/AutoBogus) ([`NuGet Package`](https://www.nuget.org/packages?q=AutoBogus)) by [@nickdodd79](https://github.com/nickdodd79/) - Extends **Bogus** by adding automatic `.RuleFor()` creation and population capabilities.
* [**NaughtyStrings.Bogus**](https://github.com/SimonCropp/NaughtyStrings) ([`NuGet Package`](https://www.nuget.org/packages/NaughtyStrings.Bogus/)) by [@SimonCropp](https://github.com/SimonCropp) - Extends **Bogus** with list of naughty strings which have a high probability of causing issues when used as user-input data. Examples:
    * `.SQLInjection()` - Strings which can cause a SQL injection if inputs are not sanitized.
    * `.ScriptInjection()` - Strings which attempt to invoke a benign script injection; shows vulnerability to XSS.
    * `.iOSVulnerabilities()` - Strings which crashed iMessage in various versions of iOS. 
    * `.KnownCVEsandVulnerabilities()` - Strings that test for known vulnerabilities.
    * `.ServerCodeInjection()` - Strings which can cause user to run code on server as a privileged user.
    * and more!
* [**WaffleGenerator.Bogus**](https://github.com/SimonCropp/WaffleGenerator) ([`NuGet Package`](https://www.nuget.org/packages/WaffleGenerator.Bogus/)) by [@SimonCropp](https://github.com/SimonCropp) - The Waffle Generator produces of text which, on first glance, looks like real, ponderous, prose; replete with clichés.
* [**NodaTime.Bogus**](https://github.com/SimonCropp/NodaTime.Bogus) ([`NuGet Package`](https://www.nuget.org/packages/NodaTime.Bogus/)) by [@SimonCropp](https://github.com/SimonCropp) - Adds support for [NodaTime](https://nodatime.org/) to **Bogus**. 
* [**CountryData.Bogus**](https://github.com/SimonCropp/CountryData) ([`NuGet Package`](https://www.nuget.org/packages/CountryData.Bogus/)) by [@SimonCropp](https://github.com/SimonCropp) - Wrapper around [GeoNames Data](https://www.geonames.org/). Examples:
    * `.Country().Name()` - Random country name.
    * `.Country().CurrencyCode()` - Random currency code.
    * `.Australia().Capital()` - Country capital.
    * `.Country().Iceland().PostCode()` - Random country post code.
* [**AustralianElectorates.Bogus**](https://github.com/pmcau/AustralianElectorates) ([`NuGet Package`](https://www.nuget.org/packages/AustralianElectorates.Bogus/)) by [@SimonCropp](https://github.com/SimonCropp) - Wrapper around Australian Electoral Commission (AEC) data (https://www.aec.gov.au/). Examples:
    * `.AustralianElectorates().Electorate()` - Random electorate.
    * `.AustralianElectorates().Name()` - Random electorate name.
    * `.AustralianElectorates().CurrentMember()` - Random current electorate member for parliament.
    * `.AustralianElectorates().CurrentMemberName()` - Random name of current a electorate member for parliament.
    * `.AustralianElectorates().Member()` - Random electorate member for parliament.
    * `.AustralianElectorates().MemberName()` - Random name of a electorate member for parliament.

## Bogus Premium Extensions!
<img src="https://raw.githubusercontent.com/bchavez/Bogus/master/Docs/logo_green.png" align='left' height="42px" width="42px" style="padding-right: 15px" /> **Bogus Premium** [[**Purchase Now!**](https://github.com/bchavez/Bogus/wiki/Bogus-Premium)] by [@bchavez](https://github.com/bchavez)<br/>You can help support the **Bogus** open source project by purchasing a [**Bogus Premium**](https://github.com/bchavez/Bogus/wiki/Bogus-Premium) license! With an active premium license you'll be supporting this cool open-source project. You'll also gain new superpowers that extended **Bogus** with new features and exclusive data sets! Check 'em out below!

* **Premium:** [**Bogus.Tools.Analyzer**](https://github.com/bchavez/Bogus/wiki/Bogus-Premium) ([NuGet Package](https://www.nuget.org/packages/Bogus.Tools.Analyzer/)) - Save time using this handy Roslyn analyzer to generate and detect missing `.RuleFor()` rules at development & compile time! This tool is included with the [**Bogus Premium**](https://github.com/bchavez/Bogus/wiki/Bogus-Premium) license!
  <img src="https://raw.githubusercontent.com/bchavez/Bogus/master/Docs/bogus_premium_tools_analyzer_demo.gif" />
* **Premium:** [**Bogus.Locations**](https://github.com/bchavez/Bogus/wiki/Bogus-Premium) ([NuGet Package](https://www.nuget.org/packages/Bogus.Locations/)) - A dataset that contains real geographical information for places and things. Create fake GPS points and paths. Helpful for creating geodesic data for location-based aware apps.
  * **`Location`**
    * `Altitude` - Generate a random altitude, in meters. Default max height is 8848m (Mount Everest). Heights are always positive.
    * `AreaCircle` - Get a latitude and longitude within a specific radius in meters.
    * `Depth` - Generate a random depth, in meters. Default max depth is -10994m (Mariana Trench). Depths are always negative.
    * `Geohash` - Generates a random Geohash. [See](https://en.wikipedia.org/wiki/Geohash).
* **Premium:** [**Bogus.Healthcare**](https://github.com/bchavez/Bogus/wiki/Bogus-Premium) ([NuGet Package](https://www.nuget.org/packages/Bogus.Healthcare/)) - A data set for the Healthcare industry. Generate fake medical records, injuries, diagnosis, drugs, dosages, human anatomy, and ICD-9 medical codes. Especially helpful in HIPAA regulated environments!
  * **`Drugs`**
    * `Administration` - Get how a drug should be administered. IE: oral, nasal, injection.
    * `Dosage` - Get a drug dosage with MG units
    * `DosageAmount` - Get a drug dosage.
    * `DosageForm` - Get the form of a drug. IE: tablet, capsule, gel.
    * `Ingredient` - Get a drug ingredient. IE: folic acid, magnesium hydroxide, ibuprofen.
    * `Vitamin` - Get a random vitamin.
  * **`Human`**
    * `BloodType` - Get a random blood type. Ex: A+, OB
    * `BodyPartExternal` - Get an external body part name. IE: Head, Arm, Leg.
    * `BodyPartInternal` - Get an internal body part name. IE: Bladder, Lung, Heart.
    * `BodyRegion` - Get a human body region. IE: Head and Neck, Thorax.
    * `BodySystem` - Get a human body system. IE: Digestive, Nervous, Circulatory.
    * `Diagnosis` - Shortcut to Icd9.DiagnosisLongDescription".
    * `InfectiousDisease` - Get an infectious disease. IE: Chickenpox, Polio, Zika Fever.
    * `Pain` - Get a human pain. Ex: Chest pain, Headache, Toothache.
    * `Plasma` - Get a random plasma type. Ex: O, A, B, AB
    * `Procedure` - Shortcut to Icd9.ProcedureLongDescription.
  * **`Icd9`**
    * `DiagnosisCode` - Get a ICD9 diagnosis code.
    * `DiagnosisEntry` - Get a medical diagnosis.
    * `DiagnosisLongDescription` - Get a medical diagnosis description. IE: Meningitis due to coxsackie virus.
    * `DiagnosisShortDescription` - Get a short description of a medical diagnosis.
    * `ProcedureCode` - Get a ICD9 procedure code.
    * `ProcedureEntry` - Get a medical procedure.
    * `ProcedureLongDescription` - Get a medical procedure description.
    * `ProcedureShortDescription` - Get a short description of a medical procedure.
  * **`Icd10`**
    * `DiagnosisCode` - Get a ICD10 diagnosis code.
    * `DiagnosisEntry` - Get a medical diagnosis.
    * `DiagnosisLongDescription` - Get a medical diagnosis description. IE: Meningitis due to coxsackie virus.
    * `DiagnosisShortDescription` - Get a short description of a medical diagnosis.
    * `ProcedureCode` - Get a ICD10 procedure code.
    * `ProcedureEntry` - Get a medical procedure.
    * `ProcedureLongDescription` - Get a medical procedure description.
    * `ProcedureShortDescription` - Get a short description of a medical procedure.
  * **`Medical`**
    * `Hospital` - Get a random hospital.
    * `HospitalCity` - Get a hospital city.
    * `HospitalName` - Get a random hospital name. IE: UCLA Medical Center
    * `HospitalState` - Get a hospital state.
    * `HospitalStreetAddress` - Get a hospital street address.
    * `HospitalZipCode` - Get a hospital ZipCode.
    * `Phrase` - Get a random medical phrase.
    * `Word` - Get a medical word.
* **Premium:** [**Bogus.Hollywood**](https://github.com/bchavez/Bogus/wiki/Bogus-Premium) ([NuGet Package](https://www.nuget.org/packages/Bogus.Hollywood/))- A dataset for the Entertainment industry.
  * **`Movies`**
    * `ActorName` - Get a famous actor. IE: Keanu Reeves, Liam Neeson, and Natalie Portman.
    * `MovieCollection` - Get a random movie collection. IE: Star Wars Collection, Indiana Jones Collection.
    * `MovieOverview` - Get a random movie overview
    * `MovieReleaseDate` - Get a random movie release date.
    * `MovieTagline` - Get a random movie tagline.
    * `MovieTitle` - Get a random movie title
    * `Production` - Get a production company.
  * **`Tv`**
    * `ActorName` - Get a famous actor. IE: Keanu Reeves, Liam Neeson, and Natalie Portman.
    * `Network` - Get a random TV network. IE: BBC, ABC, NBC, FOX.
    * `Production` - Get a production company
    * `Series` - Get a name of a TV series. IE: Rick and Morty, Silicon Valley, The Walking Dead
* **Premium:** [**Bogus.Text**](https://github.com/bchavez/Bogus/wiki/Bogus-Premium) ([NuGet Package](https://www.nuget.org/packages/Bogus.Text/)) - A dataset that contains historical texts in the public domain. Create fake sentences from famous speeches, classic books, and law
  * **`Literature`**
    * `CommonSense` - Text from "Common Sense, by Thomas Paine (1776)"
    * `JfkSpeech` - Text from "JFK's Inaugural Address"
    * `Knowledge` - Text from "A Treatise Concerning the Principles of Human knowledge, by George Berkeley (1710)"

---

### Helper Methods
The features shown below come standard with the [**Bogus**](https://www.nuget.org/packages/Bogus/) NuGet package.

#### Person
If you want to generate a `Person` with context relevant properties like
an email that looks like it belongs to someone with the same first/last name,
create a person!

```csharp
[Test]
public void Create_Context_Related_Person()
{
    var person = new Bogus.Person();

    person.Dump();
}

/* OUTPUT:
{
  "FirstName": "Lee",
  "LastName": "Brown",
  "UserName": "Lee_Brown3",
  "Avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/ccinojasso1/128.jpg",
  "Email": "Lee_Brown369@yahoo.com",
  "DateOfBirth": "1984-01-16T21:31:27.87666",
  "Address": {
    "Street": "2552 Bernard Rapid",
    "Suite": "Suite 199",
    "City": "New Haskell side",
    "ZipCode": "78425-0411",
    "Geo": {
      "Lat": -35.8154,
      "Lng": -140.2044
    }
  },
  "Phone": "1-500-790-8836 x5069",
  "Website": "javier.biz",
  "Company": {
    "Name": "Kuphal and Sons",
    "CatchPhrase": "Organic even-keeled monitoring",
    "Bs": "open-source brand e-business"
  }
} */
```

#### Replace

Replace a formatted string with random numbers `#`, letters `?`, or `*` random number or letter:
```csharp
[Test]
public void Create_an_SSN()
{
    var ssn = new Bogus.Randomizer().Replace("###-##-####");
    ssn.Dump();

    var code = new Randomizer().Replace("##? ??? ####");
    code.Dump();

    var serial = new Randomizer().Replace("**-****");
    serial.Dump();
}
/* OUTPUT:
"618-19-3064"
"39E SPC 0790"
"L3-J9N5"
*/
```

#### Parse Handlebars
You can also parse strings in the following format:
```csharp
[Test]
public void Handlebar()
{
    var faker = new Faker();
    var randomName = faker.Parse("{{name.lastName}}, {{name.firstName}} {{name.suffix}}");
    randomName.Dump();
}

/* OUTPUT:
"Roob, Michale PhD"
*/
```
The name of a dataset is determined using `DataCategory` attribute or class name otherwise. (i.e `PhoneNumber` dataset in handlebars expression should be named as `phone_number`)

You can pass parameters to methods using braces:

```csharp
[Test]
public void HandlebarWithParameters()
{
    var faker = new Faker();
    var randomName = faker.Parse("{{name.firstname(Female)}}, {{name.firstname(Male)}}");
    randomName.Dump();
}

/* OUTPUT:
"Lindsay, Jonathan"
*/
```

#### Implicit and Explicit Type Conversion
You can also use implicit type conversion to make your code look cleaner without having to explicitly call `Faker<T>.Generate()`.

```csharp
var orderFaker = new Faker<Order>()
                     .RuleFor(o => o.OrderId, f => f.IndexVariable++)
                     .RuleFor(o => o.Item, f => f.Commerce.Product())
                     .RuleFor(o => o.Quantity, f => f.Random.Number(1,3));

Order testOrder1 = orderFaker;
Order testOrder2 = orderFaker;
testOrder1.Dump();
testOrder2.Dump();

/* OUTPUT:
{
  "OrderId": 0,
  "Item": "Computer",
  "Quantity": 2
}
{
  "OrderId": 1,
  "Item": "Tuna",
  "Quantity": 3
}
*/

//Explicit works too!
var anotherOrder = (Order)orderFaker;
```

#### Bulk Rules
Sometimes writing `.RuleFor(x => x.Prop, ...)` can get repetitive, use the `.Rules((f, t) => {...})` shortcut to specify rules in bulk as shown below:

```csharp
public void create_rules_for_an_object_the_easy_way()
{
    var faker = new Faker<Order>()
        .StrictMode(false)
        .Rules((f, o) =>
            {
                o.Quantity = f.Random.Number(1, 4);
                o.Item = f.Commerce.Product();
                o.OrderId = 25;
            });
    Order o = faker.Generate();
}
```

***Note***: When using the bulk `.Rules(...)` action, `StrictMode` cannot be set to `true` since individual properties of type `T` cannot be independently checked to ensure each property has a rule.


### Using `Enumerable.Range()` and LINQ 
The `Enumerable.Range()` and LINQ are a great supplement when creating data with **Bogus**. Here's how to generate a simple list of email addresses:

```csharp
var faker = new Faker("en");

var emailList = Enumerable.Range(1, 5)
      .Select(_ => faker.Internet.Email())
      .ToList();

//OUTPUT:
Gustave83@hotmail.com    
Evie33@gmail.com 
Abby_Wilkinson@yahoo.com 
Cecilia.Hahn@yahoo.com   
Jasen.Waelchi85@gmail.com     
```

Advanced Topics, Guidance, and Best Practices
---------------------------------------------
### Determinism
Determinism is a first class concept in **Bogus**. **Bogus** goes to great lengths so developers can generate the same sequence of data over multiple program executions. **Bogus** has two strategies of setting up deterministic behavior:

1. **Global Seed** determinism through the `Randomizer.Seed` **global static** property.  
    ***Pros:*** Easy to get deterministic data setup quickly.  
    ***Cons:*** Code changes can impact other data values. Not so good for unit tests.

2. **Local Seed** determinism through instance **properties** and **methods**. Specifically,  
    * The `Faker<T>.UseSeed(int)` **method**.  
    * The `.Random` **property** on the `Faker` facade and **DataSets**.
  
    ***Pros:*** Code changes can be isolated with minimal impact on determinism. Good for unit tests.    
    ***Cons:*** Requires some forethought in design.

When **Local Seed** determinism is used to set a seed value, the **global static** source of randomness is ignored. This has some interesting implications as described below.

#### Using Global Seed determinism
The easiest way to get deterministic data values over multiple executions of a program is to set the `Randomizer.Seed` property as demonstrated below:

```csharp
Randomizer.Seed = new Random(1338);
var orderIds = 0;
var orderFaker = new Faker<Order>()
    .RuleFor(o => o.OrderId, f => orderIds++)
    .RuleFor(o => o.Item, f => f.Commerce.Product())
    .RuleFor(o => o.Quantity, f => f.Random.Number(1, 5));

orderFaker.Generate(5).Dump();
```
|  OrderId  |  Item    |  Quantity  |
|:---------:|:--------:|:----------:|
|  0        |  Fish    |  3         |
|  1        |  Chair   |  1         |
|  2        |  Gloves  |  5         |
|  3        |  Shirt   |  4         |
|  4        |  Hat     |  4         |


Re-running the code above with `1338` as a global static seed value will produce the same table of data over and over again.

Next, add a new `Description` property to the `Order` class along with a new `.RuleFor(o => o.Description, ..)` rule and see the data changes:
```csharp
Randomizer.Seed = new Random(1338);
var orderIds = 0;
var orderFaker = new Faker<Order>()
    .RuleFor(o => o.OrderId, f => orderIds++)
    .RuleFor(o => o.Item, f => f.Commerce.Product())
    .RuleFor(o => o.Description, f => f.Commerce.ProductAdjective()) //New Rule
    .RuleFor(o => o.Quantity, f => f.Random.Number(1, 5));

orderFaker.Generate(5).Dump();
```
| OrderId | Item     | Description | Quantity |
|---------|----------|-------------|----------|
| 0       | Fish     | Fantastic   | :triangular_flag_on_post: 1 |
| 1       | :triangular_flag_on_post: Keyboard | :triangular_flag_on_post: Gorgeous    | :triangular_flag_on_post: 5 |
| 2       | :triangular_flag_on_post: Shirt    | :triangular_flag_on_post: Handcrafted | :triangular_flag_on_post: 3 |
| 3       | :triangular_flag_on_post: Tuna     | :triangular_flag_on_post: Small       | :triangular_flag_on_post: 1 |
| 4       | :triangular_flag_on_post: Table    | :triangular_flag_on_post: Awesome     | :triangular_flag_on_post: 3 |

A couple of observations:
* `Order 0: Item` value `Fish` remained the same.
* `Order 0: Quantity` changed from `3` to `1`.
* `Order 1: Item` has changed from a `Chair` to a `Keyboard`.

In fact, every data value with a :triangular_flag_on_post: icon has changed. This is due to the newly added property which has the effect of shifting the entire global static pseudo-random sequence off by +1. This rippling effect can be a problem if unit tests are expecting data values to remain the same. The following section below shows how we can improve the situation.

#### Using Local Seed determinism
Making use of the `Faker<T>.UseSeed(int)` method can help limit the impact of POCO schema changes on deterministic data values that span across an entire run. Consider the following code that uses a seed value for each instance of a POCO object:
```csharp
var orderIds = 0;
var orderFaker = new Faker<Order>()
    .RuleFor(o => o.OrderId, f => orderIds++)
    .RuleFor(o => o.Item, f => f.Commerce.Product())
    .RuleFor(o => o.Quantity, f => f.Random.Number(1, 5));
    
Order SeededOrder(int seed){
   return orderFaker.UseSeed(seed).Generate();
}

var orders = Enumerable.Range(1, 5)
   .Select(SeededOrder)
   .ToList();

orders.Dump();
```
|  OrderId  |  Item    |  Quantity  |
|:---------:|:--------:|:----------:|
| 0         | Bike     | 1        |
| 1         | Cheese   | 3        |
| 2         | Gloves   | 4        |
| 3         | Bacon    | 5        |
| 4         | Pants    | 2        |


Next, adding the `Description` property to the `Order` class and examining the output:

```csharp
var orderIds = 0;
var orderFaker = new Faker<Order>()
    .RuleFor(o => o.OrderId, f => orderIds++)
    .RuleFor(o => o.Item, f => f.Commerce.Product())
    .RuleFor(o => o.Description, f => f.Commerce.ProductAdjective()) //New Rule
    .RuleFor(o => o.Quantity, f => f.Random.Number(1, 5));
    
Order SeededOrder(int seed){
   return orderFaker.UseSeed(seed).Generate();
}

var orders = Enumerable.Range(1,5)
   .Select(SeededOrder)
   .ToList();

orders.Dump();
```

| OrderId | Item   | Description | Quantity |
|---------|--------|-------------|----------|
| 0       | Bike   | Ergonomic   | :triangular_flag_on_post: 3 |
| 1       | Cheese | Fantastic   | :triangular_flag_on_post: 1 |
| 2       | Gloves | Handcrafted | :triangular_flag_on_post: 5 |
| 3       | Bacon  | Tasty       | :triangular_flag_on_post: 3 |
| 4       | Pants  | Gorgeous    | :triangular_flag_on_post: 2 |


Progress! This time only the `Quantity` data values with the :triangular_flag_on_post: icon have changed. The `Item` column remained the same before and after the new addition of the `Description` property.

We can further prevent the `Quantity` data values from changing by moving the `RuleFor(o => o.Description,...)` rule line to the end of the `Faker<Order>` declaration as shown below:

```csharp
var orderIds = 0;
var orderFaker = new Faker<Order>()
    .RuleFor(o => o.OrderId, f => orderIds++)
    .RuleFor(o => o.Item, f => f.Commerce.Product())
    .RuleFor(o => o.Quantity, f => f.Random.Number(1, 5))
    .RuleFor(o => o.Description, f => f.Commerce.ProductAdjective()); //New Rule
    
Order MakeOrder(int seed){
   return orderFaker.UseSeed(seed).Generate();
}

var orders = Enumerable.Range(1,5)
   .Select(MakeOrder)
   .ToList();

orders.Dump();
````
| OrderId | Item   | Quantity | Description |
|:---------:|:--------:|:----------:|:-------------:|
| 0       | Bike   | 1        | Practical   |
| 1       | Cheese | 3        | Rustic      |
| 2       | Gloves | 4        | Refined     |
| 3       | Bacon  | 5        | Awesome     |
| 4       | Pants  | 2        | Gorgeous    |

Much success! :100: :tada: The `Item` and `Quantity` values remain unchanged! The new `Description` property is added to the POCO object without any impact to other deterministic data values.

As a best practice, to achieve maximum deterministic behavior and unit test robustness with **Bogus**:

* :heavy_check_mark: Add new `RuleFor` rules last in `Faker<T>` declarations.  
* :heavy_check_mark: Avoid changing existing rules.  
* :heavy_check_mark: Always use `Faker<T>.UseSeed(int)` to avoid using the global static seed as a source for randomness.  
* :heavy_check_mark: When possible assert that a value exists, not the literal value itself. In other words,
  ```csharp
  // Don't do this:
  firstOrder.Item.Should().Be("Bike");

  // Instead, do this:
  firstOrder.Item.Should().NotBeNullOrWhiteSpace();
  ```

-------

The `Faker` facade and individual **DataSets** can also be prepared to use **local seeds** as well. The following shows how to set up the `Faker` facade and **DataSets** to use local seeds:

```csharp
var faker = new Faker("en")
                {
                   Random = new Randomizer(1338)
                };
var lorem = new Bogus.DataSets.Lorem("en"){
                   Random = new Randomizer(1338)
                };
faker.Lorem.Word().Dump();
lorem.Word().Dump();

//OUTPUT:
minus
minus
```

The `.Random` property can be set multiple times without any ill effects. 

#### Versioning can effect determinism
Updating to new versions of **Bogus** on NuGet can effect determinism too. For example, when **Bogus** updates locales from **faker.js** or issues bug fixes, sometimes deterministic sequences can change. Changes to deterministic outputs are usually highlighted in the [release notes](https://github.com/bchavez/Bogus/blob/master/HISTORY.md). Changes to deterministic outputs is also considered a breaking change. **Bogus** generally follows semantic versioning rules. For example:

| Version | Description |
|---------|-------------|
| **Bogus** v25.0.**1** | Initial version.                                                                           |
| **Bogus** v25.0.**2** | No change to deterministic outputs or breaking changes. Possible bug fixes & improvements. |
| **Bogus** v**26**.0.1 | Deterministic outputs may have changed or may include other breaking changes.              |

As a general rule of thumb,

* :heavy_check_mark: For maximum stability for unit tests, stay within the same major versions of **Bogus**.  
* :heavy_check_mark: For those wanting to stay up to date, assert that a value exists, not a literal value itself. In other words,
  ```csharp
  // Don't do this:
  firstOrder.Item.Should().Be("Bike");

  // Instead, do this:
  firstOrder.Item.Should().NotBeNullOrWhiteSpace();
  ```

#### Deterministic Dates and Times

**Bogus** can generate deterministic dates and times. However, generating deterministic dates and times requires the following:

1. Setting up a [seed value](#determinism).
1. Setting up a time reference for your Faker object instance.

The following code shows how to setup deterministic dates and times:

```csharp
// Faker[T]: Set a local seed and a time reference
var fakerT = new Faker<Order>()
                 .UseSeed(1338)
                 .UseDateTimeReference(DateTime.Parse("1/1/1980"))
                 .RuleFor(o => o.SoonValue,   f => f.Date.Soon())
                 .RuleFor(o => o.RecentValue, f => f.Date.Recent());
fakerT.Generate().Dump();
//  { "SoonValue":   "1980-01-01T17:33:05",
//    "RecentValue": "1979-12-31T14:07:31" }

// Faker: Set a local seed and a time reference
var faker = new Faker
   {
      Random = new Randomizer(1338),
      DateTimeReference = DateTime.Parse("1/1/1980")
   };
faker.Date.Soon();   // "1980-01-01T17:33:05"
faker.Date.Recent(); // "1979-12-31T14:07:31"
```
With a time reference set and a [seed](#determinism), dates and times should be deterministic across multiple runs of a program.


F# and VB.NET Examples
----------------------
#### The Fabulous F# Examples
* Using the `Faker` facade with immutable **F#** record types:

```fsharp
type Customer = { FirstName : string
                  LastName : string
                  Age : int
                  Title : string }

//The faker facade
let f = Faker();

let generator() = 
   { FirstName = f.Name.FirstName()
     LastName  = f.Name.LastName()
     Age       = f.Random.Number(18,60)
     Title     = f.Name.JobTitle() }
     
generator() |> Dump |> ignore

(* OUTPUT:
  FirstName = "Russell"
  LastName = "Nader"
  Age = 34
  Title = "Senior Web Officer"
*)
```

* Using the `Faker<T>` class with immutable **F#** record types:

```fsharp
type Customer = { FirstName : string
                  LastName : string
                  Age : int
                  Title : string }

let customerFaker =
    Bogus
        .Faker<Customer>()
        .CustomInstantiator(fun f ->
             { FirstName = f.Name.FirstName()
               LastName  = f.Name.LastName()
               Age       = f.Random.Number(18,60)
               Title     = f.Name.JobTitle() })

customerFaker.Generate() |> Dump |> ignore

(* OUTPUT:
  FirstName = "Sasha"
  LastName = "Roberts"
  Age = 20;
  Title = "Internal Security Specialist"
*)
```

* Using the `Faker<T>` class with mutable classes in **F#**:

```fsharp
open Bogus
type Customer() =
  member val FirstName = "" with get, set
  member val LastName = "" with get, set
  member val Age = 0 with get, set
  member val Title = "" with get, set

let faker = 
        Faker<Customer>()
          //Make a rule for each property
          .RuleFor( (fun c -> c.FirstName), fun (f:Faker) -> f.Name.FirstName() )
          .RuleFor( (fun c -> c.LastName), fun (f:Faker) -> f.Name.LastName() )

          //Or, alternatively, in bulk with .Rules()
          .Rules( fun f c -> 
                    c.Age <- f.Random.Int(18,35) 
                    c.Title <- f.Name.JobTitle() )
  
faker.Generate() |> Dump |> ignore

(* OUTPUT:
  FirstName: Jarrell
  LastName: Tremblay
  Age: 32
  Title: Senior Web Designer
*)
```

#### The Very Basic VB.NET Example
```vb
Imports Bogus

Public Class Customer
    Public Property FirstName() As String
    Public Property LastName() As String
    Public Property Age() As Integer
    Public Property Title() As String
End Class

Sub Main
    Dim faker As New Faker(Of Customer)
    
    '-- Make a rule for each property
    faker.RuleFor( Function(c) c.FirstName, Function(f) f.Name.FirstName) _
         .RuleFor( Function(c) c.LastName, Function(f) f.Name.LastName) _
         _
         .Rules( Sub(f, c)   '-- Or, alternatively, in bulk with .Rules() 
                   c.Age = f.Random.Int(18,35) 
                   c.Title = f.Name.JobTitle()
                 End Sub )
            
    faker.Generate.Dump
End Sub

' OUTPUT:
' FirstName: Jeremie 
' LastName: Mills 
' Age: 32 
' Title: Quality Supervisor 
```



Building From Source
--------

The following section is only useful for people looking to contribute to **Bogus** or make custom modifications to **Bogus**. This section includes information about building **Bogus** from source code and is not required to operate or run **Bogus** in **.NET** applications.

The minimum requirements to build **Bogus** from source code are as follows:
* **Windows 11** or later.
* [**Git for Windows**](https://git-scm.com/downloads) `v2.39.2` or later.
* [**.NET Framework**](https://dotnet.microsoft.com/download/dotnet-framework) `v4.7.2`.
* **.NET SDK**
    * LTS [`SDK v10.0.100`](https://dotnet.microsoft.com/download/dotnet/10.0)
    * LTS [`SDK v8.0.100`](https://dotnet.microsoft.com/download/dotnet/8.0)
    * LTS [`SDK v6.0.417`](https://dotnet.microsoft.com/download/dotnet/6.0)
* Optional:
    * Visual Studio 2026 or later - IDE with C# 14 support.

#### Build Instructions
* Download the source code.
* Open command prompt and run `build.cmd`:
    * `build restore` - restores all project references.
    * `build compile` - the main dotnet build task.
    * `build clean` - cleans sources and files.
    * `build zip` - creates a nice zip file with debug and release binaries.
    * `build pack` - builds **NuGet** packages.
    * `build test` - runs all unit tests. 
    
The following folders will be created depending on the build task executed:
 * `\__compile` - binary output folder for the compiler.
 * `\__package` - output folder for zip and **NuGet** packages.
 * `\__test` - test results folder.

#### Build Environment Variables
* `set FORCE_VERSION=1.2.3`  
   If `FORCE_VERSION` environment variable is set with a semantic version number (eg: `x.y.z`), the build tasks will use the `FORCE_VERSION` to produce builds with the exact version number. Useful for testing out-of-band custom builds. However, it is not possible to reproduce exact binary equivalents of released **NuGet** packages because packages release on **NuGet** contain assemblies that are digitally signed with assembly signing enabled. The public does not have access to the signing key. 

#### Rebundling Locales
Re-bundling the latest locale data from **faker.js** requires the following software installed:  

* [**Volta 1.1.1**](https://volta.sh) or later:
   * Installs [**NodeJS**](https://nodejs.org/) `v12.18.1` or higher.
* [**gulp**](https://gulpjs.com/) `v4` or higher.

Steps to re-bundle locale data from **faker.js**:
1. `git clone https://github.com/bchavez/Bogus.git`
1. `cd Bogus` 
1. `git submodule init`
1. `git submodule update`
1. Ensure **NodeJS** and `gulp` are properly installed.
1. `cd Source\Builder`
1. `npm install` to install required dev dependencies.
1. `npx gulp importLocales` to regenerate locales in `Source\Bogus\data`.
1. Finally, run `build.cmd`.

### License
* [MIT License](https://github.com/bchavez/Bogus/blob/master/LICENSE)


Sponsors
---------
A special thank you to the companies that have sponsored and helped with the development of **Bogus** in big ways.

| Date |   | Company |
|------|---|-------|
| **2024 - October** | <img src="https://raw.githubusercontent.com/bchavez/Bogus/master/Docs/aws.svg" width="100" /> | [**Amazon AWS .NET FOSS Fund**](https://github.com/aws/dotnet-foss?tab=readme-ov-file#funding-recipients)
| **2022 - June** | <img src="https://raw.githubusercontent.com/bchavez/Bogus/master/Docs/github.svg" width="100" /> | [**GitHub**](https://github.blog/open-source/maintainers/thank-you-to-our-maintainers) |


Contributors
---------
Created by [Brian Chavez](https://bchavez.bitarmory.com).

A big thanks to GitHub and all contributors:

* [Anton Georgiev](https://github.com/antongeorgiev)
* [Martijn Laarman](https://github.com/Mpdreamz)
* [Anrijs Vitolins](https://github.com/salixzs)
* [Pi Lanningham](https://github.com/quantumplation)
* [JvanderStad](https://github.com/JvanderStad)
* [Giuseppe Dimauro](https://github.com/gdimauro)




================================================
FILE: Source/.editorconfig
================================================
[*]
end_of_line=crlf
trim_trailing_whitespace=false
insert_final_newline=false
indent_style=space
indent_size=3

[{*.yml,*.yaml}]
indent_style=space
indent_size=3



================================================
FILE: Source/Benchmark/BenchGenerate.cs
================================================
using System.Linq;
using BenchmarkDotNet.Attributes;
using Bogus;

namespace Benchmark
{
   [MarkdownExporter, MemoryDiagnoser]
   public class BenchGenerate
   {
      public class Project
      {
         public long Id { get; set; }
         public string Name { get; set; }
         public string Description { get; set; }
      }

      private static Faker<Project> FakerDefault { get; set; }
      private static Faker<Project> FakerCustom { get; set; }
      private static Faker<Project> FakerWithRules { get; set; }
      private static Faker<Project> FakerWithRulesComplex { get; set; }

      [GlobalSetup]
      public void Setup()
      {
         FakerDefault = new Faker<Project>().UseSeed(1337);
         FakerCustom = new Faker<Project>()
            .CustomInstantiator(f=> new Project())
            .UseSeed(1337);
         FakerWithRules = new Faker<Project>()
            .CustomInstantiator(f=> new Project())
            .RuleFor(p=>p.Id, f => f.IndexGlobal)
            .UseSeed(1337);
         FakerWithRulesComplex = new Faker<Project>()
            .CustomInstantiator(f=> new Project())
            .RuleFor(p=>p.Id, f => f.IndexGlobal)
            .RuleFor(p => p.Name, f => f.Person.Company.Name + f.UniqueIndex.ToString())
            .RuleFor(p => p.Description, f => f.Lorem.Paragraphs(3))
            .UseSeed(1337);
      }

//      [Benchmark]
      public void Generate_Default()
      {
         var projects = FakerDefault.Generate(10_000).ToList();
      }

//      [Benchmark]
      public void Generate_CustomInstantiator()
      {
         var projects = FakerDefault.Generate(10_000).ToList();
      }

      [Benchmark]
      public void Generate_WithRules()
      {
         var projects = FakerWithRules.Generate(10_000).ToList();
      }

      //[Benchmark]
      public void Generate_WithRulesComplex()
      {
         var projects = FakerWithRulesComplex.Generate(10_000).ToList();
      }

//      [Benchmark]
      public void Constructor()
      {
         var projects = Enumerable.Range(0, 10_000).Select(i => new Project {Id = i}).ToList();
      }
   }
}

================================================
FILE: Source/Benchmark/BenchRandomSubset.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using BenchmarkDotNet.Attributes;
using Bogus;

namespace Benchmark
{
    [RPlotExporter]
    public class BenchRandomSubset
    {
        private Randomizer r;
        private List<int> items;

        [Params(2, 10, 100, 500, 1000, 1999)]
        public int Selections { get; set; }

        [GlobalSetup]
        public void Setup()
        {
            r = new Randomizer();
            items = Enumerable.Range(1, 2000).ToList();
        }

        [Benchmark]
        public void PickRandom()
        {
            PickRandom(items, this.Selections).ToList();
        }

        [Benchmark]
        public void ShuffleTake()
        {
            r.Shuffle(items).Take(this.Selections).ToList();
        }


        /// <summary>
        /// Helper to pick random subset of elements out of the list.
        /// </summary>
        /// <param name="amountToPick">amount of elements to pick of the list.</param>
        /// <exception cref="ArgumentException">if amountToPick is lower than zero.</exception>
        public IEnumerable<T> PickRandom<T>(IEnumerable<T> items, int amountToPick)
        {
            if (amountToPick < 0)
            {
                throw new ArgumentOutOfRangeException($"{nameof(amountToPick)} needs to be a positive integer.");
            }
            var size = items.Count();
            if (amountToPick > size)
            {
                throw new ArgumentOutOfRangeException($"{nameof(amountToPick)} is greater than the number of items.");
            }

            foreach (var item in items)
            {
                if (amountToPick <= 0)
                {
                    yield break;
                }
                if (r.Int(1, size) <= amountToPick)
                {
                    amountToPick--;
                    yield return item;
                }
                size--;
            }
        }

    }
}

================================================
FILE: Source/Benchmark/BenchSsn.cs
================================================
using BenchmarkDotNet.Attributes;
using Bogus;

namespace Benchmark
{
   [RPlotExporter]
   public class BenchSsn
   {
      private Randomizer r;

      [GlobalSetup]
      public void Setup()
      {
         r = new Randomizer(1337);
      }

      [Benchmark]
      public void SsnAlgo1()
      {
         var a = r.Int(1, 898);
         if (a == 666) a++;

         var b = r.Int(1, 99);
         var c = r.Int(1, 9999);

         var result = $"{a:000}-{b:00}-{c:0000}";
      }

      [Benchmark]
      public void SsnAlgo2()
      {
         var a = r.Int(1, 898);
         if (a == 666) a++;

         var b = r.Int(1, 99);
         var c = r.Int(1, 9999);

         var result = $"{a:000}-{b:00}-{c:0000}";
      }

      [Benchmark]
      public void SsnAlgo3()
      {
         var x = r.Int();

         // right shift all bits except fir the first 10 bits = 2^10 = 1024.
         var a = (x >> (32 - 10)) % 898;
         if (a is 0 or 666) a++;

         // use the first 7 bits = 2^7 = 128
         var b = (x & 0x7F);
         if (b == 0) b++;

         // last 2^14 = 16384, for last 4 digits of SSN
         var c = (x >> 7) & 0x3FFF;
         if (c == 0) c++;

         var result = $"{a:000}-{b:00}-{c:0000}";
      }
   }
}

================================================
FILE: Source/Benchmark/BenchStringFill.cs
================================================
using System.Text;
using BenchmarkDotNet.Attributes;
using Bogus;

namespace Benchmark
{
   [RPlotExporter]
   public class BenchStringFill
   {
      [Params(2, 10, 100, 500, 1000, 5000, 20000)]
      public int TargetLength { get; set; }

      //[Params("abcd","abcdefghijklmnopqrstuvwxyz",
      //   "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")]
      public string Pool { get; set; } = "abcdefghijklmnopqrstuvwxyz";

      [GlobalSetup]
      public void Setup()
      {
         this.r = new Randomizer();
      }

      private Randomizer r;

      private string result;

      [Benchmark]
      public void FillWithStringBuilder()
      {
         var sb = new StringBuilder(this.TargetLength);

         for( int i = 0; i < this.TargetLength; i++ )
         {
            var idx = r.Number(0, this.Pool.Length - 1);
            sb.Append(this.Pool[idx]);
         }

         this.result = sb.ToString();
      }

      [Benchmark]
      public void FillWithFixedCharArray()
      {
         var target = new char[this.TargetLength];

         for (int i = 0; i < this.TargetLength; i++)
         {
            var idx = r.Number(0, this.Pool.Length - 1);
            target[i] = this.Pool[idx];
         }

         this.result = new string(target);
      }
   }
}

================================================
FILE: Source/Benchmark/Benchmark.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
     <TargetFrameworks>netstandard2.0</TargetFrameworks>
  </PropertyGroup>

   <PropertyGroup>
      <PlatformTarget>AnyCPU</PlatformTarget>
      <DebugType>portable</DebugType>
      <DebugSymbols>true</DebugSymbols>
      <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
      <Optimize>true</Optimize>
      <Configuration>Release</Configuration>
   </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="BenchmarkDotNet" Version="0.12.1" />
    <PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.12.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Bogus\Bogus.csproj" />
  </ItemGroup>
</Project>


================================================
FILE: Source/Benchmark/PR300_BenchDecimal.cs
================================================
using System;
using System.Threading;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using Bogus;

namespace Benchmark
{
   [SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net471)]
   [MarkdownExporter, MemoryDiagnoser, RPlotExporter]
   public class PR300_BenchDecimal
   {
      private CustomRandomizer r;

      [GlobalSetup]
      public void Setup()
      {
         r = new CustomRandomizer();
      }

      [Benchmark]
      public decimal OldMethod()
      {
         return r.Decimal();
      }

      [Benchmark]
      public decimal JDGMethod()
      {
         return r.DecimalJDG();
      }

      [Benchmark]
      public decimal JDGMethodNoAlloc()
      {
         return r.DecimalJDGNoAlloc();
      }

      [Benchmark]
      public decimal JDGMethodNoAllocMult()
      {
         return r.DecimalJDGNoAllocMult();
      }
   }

   public class CustomRandomizer : Randomizer
   {
      internal static Lazy<object> Locker = new(() => new object(), LazyThreadSafetyMode.ExecutionAndPublication);

      private readonly Random localSeed = new();

      public int NumberJDG(int min = 0, int max = 1)
      {
         //lock any seed access, for thread safety.
         lock (Locker.Value)
         {
            if (max < int.MaxValue) return localSeed.Next(min, max + 1);
            if (min > int.MinValue) return 1 + localSeed.Next(min - 1, max);

            int sample1 = localSeed.Next();
            int sample2 = localSeed.Next();

            int topHalf = (sample1 >> 8) & 0xFFFF;
            int bottomHalf = (sample2 >> 8) & 0xFFFF;

            return (topHalf << 16) | bottomHalf;
         }
      }

      public decimal DecimalJDG(decimal min = 0.0m, decimal max = 1.0m)
      {
         // Decimal: 128 bits wide
         //   bit 0: sign bit
         //   bit 1-10: not used
         //   bit 11-15: scale (values 29, 30, 31 not used)
         //   bit 16-31: not used
         //   bit 32-127: mantissa (96 bits)

         // Max value: 00000000 FFFFFFFF FFFFFFFF FFFFFFFF
         //          = 79228162514264337593543950335

         // Max value with max scaling: 001C0000  FFFFFFFF  FFFFFFFF  FFFFFFFF
         //                           = 7.9228162514264337593543950335

         // Step 1: Generate a value with uniform distribution between 0 and this value.
         // This ensures the greatest level of precision in the distribution of bits;
         // the resulting value, after it is adjusted into the caller's desired range,
         // should not skip any possible values at the least significant end of the
         // mantissa.

         int[] bits = new int[4];

         bits[0] = NumberJDG(int.MinValue, int.MaxValue);
         bits[1] = NumberJDG(int.MinValue, int.MaxValue);
         bits[2] = NumberJDG(int.MinValue, int.MaxValue);
         bits[3] = 0x1C0000;

         decimal result = new decimal(bits);

         // Step 2: Scale the value and adjust it to the desired range. This may decrease
         // the accuracy by adjusting the scale as necessary, but we get the best possible
         // outcome by starting with the most precise scale.
         return result * (max - min) / 7.9228162514264337593543950335m + min;
      }

      public decimal DecimalJDGNoAlloc(decimal min = 0.0m, decimal max = 1.0m)
      {
         int lo = NumberJDG(int.MinValue, int.MaxValue);
         int mid = NumberJDG(int.MinValue, int.MaxValue);
         int hi = NumberJDG(int.MinValue, int.MaxValue);
         byte scale = 0x1C;

         decimal result = new decimal(lo, mid, hi, false, scale);

         return result * (max - min) / 7.9228162514264337593543950335m + min;
      }

      public decimal DecimalJDGNoAllocMult(decimal min = 0.0m, decimal max = 1.0m)
      {
         int lo = NumberJDG(int.MinValue, int.MaxValue);
         int mid = NumberJDG(int.MinValue, int.MaxValue);
         int hi = NumberJDG(int.MinValue, int.MaxValue);
         byte scale = 0x1C;

         decimal result = new decimal(lo, mid, hi, false, scale);

         return result * (max - min) * 0.1262177448353618888658765704m + min;
      }
   }
}

================================================
FILE: Source/Benchmark/PR300_BenchRandomNumber.cs
================================================
using System;
using System.Threading;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using Bogus;

namespace Benchmark
{
   [SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net471)]
   [MarkdownExporter, MemoryDiagnoser, RPlotExporter]
   public class PR300_BenchRandomNumber
   {
      private NumberTests n;

      [GlobalSetup]
      public void Setup()
      {
         n = new NumberTests();
      }

      [Benchmark]
      public int OldMethod()
      {
         return n.Number(int.MinValue, int.MaxValue);
      }

      [Benchmark]
      public int BitShift()
      {
         return n.NumberBitShift(int.MinValue, int.MaxValue);
      }

      [Benchmark]
      public int JDGMethod()
      {
         return n.NumberJDG(int.MinValue, int.MaxValue);
      }

      [Benchmark]
      public int JDGMethod2()
      {
         return n.NumberJDG2(int.MinValue, int.MaxValue);
      }
   }

   public class NumberTests
   {
      internal static Lazy<object> Locker = new(() => new object(), LazyThreadSafetyMode.ExecutionAndPublication);

      private readonly Random localSeed = new();

      private static byte[] temp = new byte[4];

      public int Number(int min = 0, int max = 1)
      {
         //lock any seed access, for thread safety.
         lock (Locker.Value)
         {
            //Clamp max value, Issue #30.
            max = max == int.MaxValue ? max : max + 1;
            return localSeed.Next(min, max);
         }
      }

      public int NumberBitShift(int min = 0, int max = 1)
      {
         //lock any seed access, for thread safety.
         lock (Locker.Value)
         {
            // Adjust the range as needed to make max inclusive. The Random.Next function uses exclusive upper bounds.

            // If max can be extended by 1, just do that.
            if (max < int.MaxValue) return localSeed.Next(min, max + 1);

            // If max is exactly int.MaxValue, then check if min can be used to push the range out by one the other way.
            // If so, then we can simply add one to the result to put it back in the correct range.
            if (min > int.MinValue) return 1 + localSeed.Next(min - 1, max);

            localSeed.NextBytes(temp);
            return temp[0] << 24 | temp[1] << 16 | temp[2] << 8 | temp[3];
         }
      }

      public int NumberJDG(int min = 0, int max = 1)
      {
         //lock any seed access, for thread safety.
         lock (Locker.Value)
         {
            // Adjust the range as needed to make max inclusive. The Random.Next function uses exclusive upper bounds.

            // If max can be extended by 1, just do that.
            if (max < int.MaxValue) return localSeed.Next(min, max + 1);

            // If max is exactly int.MaxValue, then check if min can be used to push the range out by one the other way.
            // If so, then we can simply add one to the result to put it back in the correct range.
            if (min > int.MinValue) return 1 + localSeed.Next(min - 1, max);

            // If we hit this line, then min is int.MinValue and max is int.MaxValue, which mean the caller wants a
            // number from a range spanning all possible values of int. The Random class only supports exclusive
            // upper bounds, period, and the upper bound must be specified as an int, so the best we can get in a
            // single call is a value in the range (int.MinValue, int.MaxValue - 1). Instead, what we do is get two
            // samples, one in the range (int.MinValue, -1) and the other as unbiased as possible, and using the
            // second one to decide, 50% of the time we invert all the bits in the sample, shifting its range to
            // (0, int.MaxValue).
            var result = localSeed.Next(int.MinValue, 0);

            if ((localSeed.Next() & 0x10000000) == 0)
               result = ~result;

            return result;
         }
      }

      public int NumberJDG2(int min = 0, int max = 1)
      {
         lock( Locker.Value )
         {
            if (max < int.MaxValue) return localSeed.Next(min, max + 1);
            if (min > int.MinValue) return 1 + localSeed.Next(min - 1, max);

            int sample1 = localSeed.Next();
            int sample2 = localSeed.Next();

            int topHalf = (sample1 >> 8) & 0xFFFF;
            int bottomHalf = (sample2 >> 8) & 0xFFFF;

            return (topHalf << 16) | bottomHalf;
         }
      }
   }
}

================================================
FILE: Source/Benchmark/README.md
================================================
### Running Benchmarks

**Requirements:**
* **.NET 3.1 SDK** or later.
* **[`R` project for Statistical Computing](https://www.r-project.org/) version 3.3.3 (2017-03-06)** or later.
  * Ensure `rscript.exe` is in your path as [instructed here](https://benchmarkdotnet.org/articles/configs/exporters.html#plots) so that plots can be generated.

You must compile this `Benchmark` project in `Release` mode.

```csharp
dotnet build -c Release
```

After compiling in `Release` mode, execute the following command from the command line:
```
$> dotnet benchmark bin\Release\netstandard2.0\Benchmark.dll
```

Pick your benchmark to run. Your benchmark results will be in `\BenchmarkDotNet.Artifacts`.

### Other Notes

**DO NOT** attempt to run these benchmarks through **Visual Studio**'s debugger or **F5** runner.

More on benchmarking:
http://benchmarkdotnet.org/index.htm


================================================
FILE: Source/Bogus/Binder.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using Bogus.Platform;

namespace Bogus;

/// <summary>
/// A binder is used in Faker[T] for extracting MemberInfo from T
/// that are candidates for property/field faking.
/// </summary>
public interface IBinder
{
   /// <summary>
   /// Given T, the method must return a Dictionary[string,MemberInfo] where
   /// string is the field/property name and MemberInfo is the reflected
   /// member info of the field/property that will be used for invoking
   /// and setting values. The returned Dictionary must encompass the full
   /// set of viable properties/fields that can be faked on T.
   /// </summary>
   /// <returns>The full set of MemberInfos for injection.</returns>
   Dictionary<string, MemberInfo> GetMembers(Type t);
}

/// <summary>
/// The default binder used in Faker[T] for extracting MemberInfo from T
/// that are candidates for property/field faking.
/// </summary>
public class Binder : IBinder
{
   /// <summary>
   /// The binding flags to use when reflecting over T.
   /// </summary>
   protected internal BindingFlags BindingFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public;

   /// <summary>
   /// Construct a binder with default binding flags. Public/internal properties and public/internal fields.
   /// </summary>
   public Binder()
   {
   }

   /// <summary>
   /// Construct a binder with custom binding flags.
   /// </summary>
   public Binder(BindingFlags bindingFlags)
   {
      BindingFlags = bindingFlags;
   }
   

   /// <summary>
   /// Given T, the method will return a Dictionary[string,MemberInfo] where
   /// string is the field/property name and MemberInfo is the reflected
   /// member info of the field/property that will be used for invocation 
   /// and setting values. The returned Dictionary must encompass the full
   /// set of viable properties/fields that can be faked on T.
   /// </summary>
   /// <returns>The full set of MemberInfos for injection.</returns>
   public virtual Dictionary<string, MemberInfo> GetMembers(Type t)
   {
      var allReflectedMembers = t.GetAllMembers(this.BindingFlags)
                                 .Select(m => UseBaseTypeDeclaredPropertyInfo(t, m));

      var settableMembers = allReflectedMembers
         .Where(m =>
            {
               if( m.GetCustomAttributes(typeof(CompilerGeneratedAttribute), true).Any() )
               {
                  //no compiler generated stuff
                  return false;
               }

               if( m is PropertyInfo pi )
               {
                  return pi.CanWrite;
               }

               if( m is FieldInfo fi )
               {
                  //No private fields.
                  //GitHub Issue #13
                  return !fi.IsPrivate;
               }

               return false;
            });

      var settableMembersByName = settableMembers.GroupBy(mi => mi.Name);

      //Issue #70 we could get back multiple keys
      //when reflecting over a type. Consider:
      //
      //   ClassA { public int Value {get;set} }
      //   DerivedA : ClassA { public new int Value {get;set;} }
      //
      //So, when reflecting over DerivedA, grab the first
      //reflected MemberInfo that was returned from
      //reflection; the second one was the inherited
      //ClassA.Value.
      return settableMembersByName.ToDictionary(k => k.Key, g => g.First());
   }

   //Issue #389 - Use Declaring Base Type PropertyInfo instead of a DerivedA's 
   //PropertyInfo because DerivedA's PropertyInfo could say property is not
   //write-able.
   protected virtual MemberInfo UseBaseTypeDeclaredPropertyInfo(Type t, MemberInfo m)
   {
      if( m is PropertyInfo {CanWrite: false} && m.DeclaringType is not null && m.DeclaringType != t )
      {
         var newPropInfo = m.DeclaringType.GetProperty(m.Name, this.BindingFlags);
         if( newPropInfo is not null )
            return newPropInfo;
      }

      return m;
   }
}

================================================
FILE: Source/Bogus/Bogus.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <Description>A simple and sane data generator for populating objects that supports different locales. A delightful port of the famed faker.js and inspired by FluentValidation. Use Bogus to create UIs with fake data or seed databases. Get started by using Faker class or a DataSet directly.</Description>
    <NukeProjectTitle>Bogus Fake Data Generator for .NET</NukeProjectTitle>
    <PackageReleaseNotes></PackageReleaseNotes>
    <Version>0.0.0-localbuild</Version>
    <Authors>Brian Chavez</Authors>
    <TargetFrameworks>net40;netstandard1.3;netstandard2.0;net6.0</TargetFrameworks>
    <CodeAnalysisRuleSet>Bogus.ruleset</CodeAnalysisRuleSet>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <AssemblyOriginatorKeyFile></AssemblyOriginatorKeyFile>
    <SignAssembly>false</SignAssembly>
    <AssemblyName>Bogus</AssemblyName>
    <PackageId>Bogus</PackageId>
    <PackageTags>faker;fake;bogus;poco;data;generator;database;seed;values;test-data;test;data;tdd;testing;.net;EF</PackageTags>
    <PackageIcon>bogus.128.png</PackageIcon>
    <PackageIconUrl>https://raw.githubusercontent.com/bchavez/Bogus/master/Docs/logo.png</PackageIconUrl>
    <PackageProjectUrl>https://github.com/bchavez/Bogus</PackageProjectUrl>
    <PackageLicenseFile>LICENSE</PackageLicenseFile>
    <RepositoryType>git</RepositoryType>
    <RepositoryUrl>https://github.com/bchavez/Bogus</RepositoryUrl>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <NoWarn>1591,1573</NoWarn>
    <!--Source Link Settings-->
    <PublishRepositoryUrl>true</PublishRepositoryUrl>
    <EmbedUntrackedSources>false</EmbedUntrackedSources>
    <IncludeSymbols>true</IncludeSymbols>
    <SymbolPackageFormat>snupkg</SymbolPackageFormat>
  </PropertyGroup>
  <PropertyGroup Condition="'$(CI)' == 'true'">
    <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
    <DefineConstants>$(DefineConstants);STANDARD;STANDARD20</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
    <DefineConstants>$(DefineConstants);STANDARD;STANDARD13</DefineConstants>
  </PropertyGroup>
  <ItemGroup>
    <None Include="../../LICENSE" Pack="true" PackagePath="" />
    <None Include="../../Docs/logo.png" Pack="true" PackagePath="bogus.128.png" />
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Include="data\*.locale.bson" Exclude="bin\**;obj\**;**\*.xproj;packages\**;@(EmbeddedResource)" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Roslynator.Analyzers" Version="1.9.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="All" />
  </ItemGroup>
  <ItemGroup Condition=" '$(TargetFramework)' == 'net40' ">
    <Reference Include="System" />
    <Reference Include="Microsoft.CSharp" />
  </ItemGroup>
  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
    <PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" />
    <PackageReference Include="System.Globalization.Extensions" Version="4.3.0" />
  </ItemGroup>
</Project>

================================================
FILE: Source/Bogus/Bogus.ruleset
================================================
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Default" Description="Default" ToolsVersion="14.0">
  <Rules AnalyzerId="Roslynator.CSharp.Analyzers" RuleNamespace="Roslynator.CSharp.Analyzers">
    <Rule Id="RCS1090" Action="Error" />
  </Rules>
</RuleSet>

================================================
FILE: Source/Bogus/BogusException.cs
================================================
using System;

namespace Bogus;

/// <summary>
/// General exception for Bogus.
/// </summary>
public class BogusException : Exception
{
   public BogusException()
   {
   }

   public BogusException(string message) : base(message)
   {
   }

   public BogusException(string message, Exception innerException) : base(message, innerException)
   {
   }
}

================================================
FILE: Source/Bogus/Bson/BArray.cs
================================================
#pragma warning disable 1591

using System.Collections;
using System.Collections.Generic;

namespace Bogus.Bson;

public class BArray : BValue, IEnumerable
{
   private readonly List<BValue> items = [];

   public BArray() : base(BValueType.Array)
   {
   }

   public override BValue this[int index]
   {
      get => items[index];
      set => items[index] = value;
   }

   public bool HasValues => items.Count > 0;

   public int Count => items.Count;

   public override void Add(BValue v) => items.Add(v);

   public int IndexOf(BValue item) => items.IndexOf(item);

   public void Insert(int index, BValue item) => items.Insert(index, item);

   public bool Remove(BValue v) => items.Remove(v);

   public void RemoveAt(int index) => items.RemoveAt(index);

   public override void Clear() => items.Clear();

   public virtual bool Contains(BValue v) => items.Contains(v);

   IEnumerator IEnumerable.GetEnumerator()
   {
      return items.GetEnumerator();
   }
}

================================================
FILE: Source/Bogus/Bson/BObject.cs
================================================
#pragma warning disable 1591

using System.Collections;
using System.Collections.Generic;

namespace Bogus.Bson;

public class BObject : BValue, IEnumerable
{
   private Dictionary<string, BValue> map = new();

   public BObject() : base(BValueType.Object)
   {
   }

   public ICollection<string> Keys => map.Keys;

   public ICollection<BValue> Values => map.Values;

   public int Count => map.Count;

   public override BValue this[string key]
   {
      get
      {
         map.TryGetValue(key, out BValue val);
         return val;
      }
      set => map[key] = value;
   }

   public override void Clear() => map.Clear();

   public override void Add(string key, BValue value) => map.Add(key, value);


   public override bool Contains(BValue v) => map.ContainsValue(v);

   public override bool ContainsKey(string key) => map.ContainsKey(key);

   public bool Remove(string key) => map.Remove(key);

   public bool TryGetValue(string key, out BValue value) => map.TryGetValue(key, out value);

   IEnumerator IEnumerable.GetEnumerator()
   {
      return map.GetEnumerator();
   }
}

================================================
FILE: Source/Bogus/Bson/BValue.cs
================================================
#pragma warning disable 1591

using System;
using System.Text;

namespace Bogus.Bson;

/// <summary>
/// Most, if not all of this BSON implementation was copied from https://github.com/kernys/Kernys.Bson.
/// Just polished it up a bit for Bogus in 2017/C# 7.1.
/// </summary>
public class BValue
{
   private BValueType valueType;
   private Double _double;
   private string _string;
   private byte[] _binary;
   private bool _bool;
   private DateTime _dateTime;
   private Int32 _int32;
   private Int64 _int64;

   public BValueType ValueType => valueType;

   public Double DoubleValue
   {
      get
      {
         switch( this.valueType )
         {
            case BValueType.Int32:
               return _int32;
            case BValueType.Int64:
               return _int64;
            case BValueType.Double:
               return _double;
            case BValueType.None:
               return float.NaN;
         }

         throw new Exception($"Original type is {this.valueType}. Cannot convert from {this.valueType} to double");
      }
   }

   public Int32 Int32Value
   {
      get
      {
         switch( this.valueType )
         {
            case BValueType.Int32:
               return _int32;
            case BValueType.Int64:
               return (Int32)_int64;
            case BValueType.Double:
               return (Int32)_double;
         }

         throw new Exception($"Original type is {this.valueType}. Cannot convert from {this.valueType} to Int32");
      }
   }

   public Int64 Int64Value
   {
      get
      {
         switch( this.valueType )
         {
            case BValueType.Int32:
               return _int32;
            case BValueType.Int64:
               return _int64;
            case BValueType.Double:
               return (Int64)_double;
         }

         throw new Exception($"Original type is {this.valueType}. Cannot convert from {this.valueType} to Int64");
      }
   }

   public byte[] BinaryValue
   {
      get
      {
         switch( valueType )
         {
            case BValueType.Binary:
               return _binary;
         }

         throw new Exception($"Original type is {this.valueType}. Cannot convert from {this.valueType} to binary");
      }
   }

   public DateTime DateTimeValue
   {
      get
      {
         switch( valueType )
         {
            case BValueType.UTCDateTime:
               return _dateTime;
         }

         throw new Exception($"Original type is {this.valueType}. Cannot convert from {this.valueType} to DateTime");
      }
   }

   public String StringValue
   {
      get
      {
         switch( valueType )
         {
            case BValueType.Int32:
               return Convert.ToString(_int32);
            case BValueType.Int64:
               return Convert.ToString(_int64);
            case BValueType.Double:
               return Convert.ToString(_double);
            case BValueType.String:
               return _string != null ? _string.TrimEnd((char)0) : null;
            case BValueType.Binary:
               return Encoding.UTF8.GetString(_binary).TrimEnd((char)0);
         }

         throw new Exception($"Original type is {this.valueType}. Cannot convert from {this.valueType} to string");
      }
   }

   public bool BoolValue
   {
      get
      {
         switch( valueType )
         {
            case BValueType.Boolean:
               return _bool;
         }

         throw new Exception($"Original type is {this.valueType}. Cannot convert from {this.valueType} to bool");
      }
   }

   public bool IsNone => valueType == BValueType.None;

   public virtual BValue this[string key]
   {
      get { return null; }
      set { }
   }

   public virtual BValue this[int index]
   {
      get { return null; }
      set { }
   }

   public virtual void Clear() { }
   public virtual void Add(string key, BValue value) { }
   public virtual void Add(BValue value) { }
   public virtual bool Contains(BValue v) { return false; }
   public virtual bool ContainsKey(string key) { return false; }

   public static implicit operator BValue(double v) => new(v);

   public static implicit operator BValue(Int32 v) => new(v);

   public static implicit operator BValue(Int64 v) => new(v);

   public static implicit operator BValue(byte[] v) => new(v);

   public static implicit operator BValue(DateTime v) => new(v);

   public static implicit operator BValue(string v) => new(v);

   public static implicit operator double(BValue v) => v.DoubleValue;

   public static implicit operator Int32(BValue v) => v.Int32Value;

   public static implicit operator Int64(BValue v) => v.Int64Value;

   public static implicit operator byte[] (BValue v) => v.BinaryValue;

   public static implicit operator DateTime(BValue v) => v.DateTimeValue;

   public static implicit operator string(BValue v) => v.StringValue;

   protected BValue(BValueType valueType)
   {
      this.valueType = valueType;
   }

   public BValue()
   {
      this.valueType = BValueType.None;
   }

   public BValue(double v)
   {
      this.valueType = BValueType.Double;
      _double = v;
   }

   public BValue(String v)
   {
      this.valueType = BValueType.String;
      _string = v;
   }

   public BValue(byte[] v)
   {
      this.valueType = BValueType.Binary;
      _binary = v;
   }

   public BValue(bool v)
   {
      this.valueType = BValueType.Boolean;
      _bool = v;
   }

   public BValue(DateTime dt)
   {
      this.valueType = BValueType.UTCDateTime;
      _dateTime = dt;
   }

   public BValue(Int32 v)
   {
      this.valueType = BValueType.Int32;
      _int32 = v;
   }

   public BValue(Int64 v)
   {
      this.valueType = BValueType.Int64;
      _int64 = v;
   }


   public static bool operator ==(BValue a, object b) => ReferenceEquals(a, b);

   public static bool operator !=(BValue a, object b) => !(a == b);
}

================================================
FILE: Source/Bogus/Bson/BValueType.cs
================================================
#pragma warning disable 1591

namespace Bogus.Bson;

public enum BValueType
{
   Double,
   String,
   Array,
   Binary,
   Boolean,
   UTCDateTime,
   None,
   Int32,
   Int64,
   Object
}

================================================
FILE: Source/Bogus/Bson/Bson.cs
================================================
#pragma warning disable 1591

using System;
using System.IO;
using System.Text;

namespace Bogus.Bson;

public class Bson
{
   private readonly MemoryStream stream;
   private BinaryReader reader;

   public static BObject Load(byte[] buf)
   {
      var bson = new Bson(buf);

      return bson.DecodeDocument();
   }

   private Bson(byte[] buf)
   {
      stream = new MemoryStream(buf);
      reader = new BinaryReader(stream);
   }

   private BValue DecodeElement(out string name)
   {
      byte elementType = reader.ReadByte();

      if( elementType == 0x01 )
      {
         // Double
         name = DecodeCString();
         return new BValue(reader.ReadDouble());
      }
      if( elementType == 0x02 )
      {
         // String
         name = DecodeCString();
         return new BValue(DecodeString());
      }
      if( elementType == 0x03 )
      {
         // Document
         name = DecodeCString();
         return DecodeDocument();
      }
      if( elementType == 0x04 )
      {
         // Array
         name = DecodeCString();
         return DecodeArray();
      }
      if( elementType == 0x05 )
      {
         // Binary
         name = DecodeCString();
         int length = reader.ReadInt32();
         byte binaryType = reader.ReadByte();

         return new BValue(reader.ReadBytes(length));
      }
      if( elementType == 0x08 )
      {
         // Boolean
         name = DecodeCString();
         return new BValue(reader.ReadBoolean());
      }
      if( elementType == 0x09 )
      {
         // DateTime
         name = DecodeCString();
         Int64 time = reader.ReadInt64();
         return new BValue(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) + new TimeSpan(time * 10000));
      }
      if( elementType == 0x0A )
      {
         // None
         name = DecodeCString();
         return new BValue();
      }
      if( elementType == 0x10 )
      {
         // Int32
         name = DecodeCString();
         return new BValue(reader.ReadInt32());
      }
      if( elementType == 0x12 )
      {
         // Int64
         name = DecodeCString();
         return new BValue(reader.ReadInt64());
      }

      throw new Exception($"Don't know elementType={elementType}");
   }

   private BObject DecodeDocument()
   {
      int length = reader.ReadInt32() - 4;

      BObject obj = new BObject();

      int i = (int)reader.BaseStream.Position;
      while( reader.BaseStream.Position < i + length - 1 )
      {
         BValue value = DecodeElement(out var name);
         obj.Add(name, value);
      }

      reader.ReadByte(); // zero
      return obj;
   }

   private BArray DecodeArray()
   {
      BObject obj = DecodeDocument();

      int i = 0;
      BArray array = new BArray();
      while( obj.ContainsKey(Convert.ToString(i)) )
      {
         array.Add(obj[Convert.ToString(i)]);

         i += 1;
      }

      return array;
   }

   private string DecodeString()
   {
      int length = reader.ReadInt32();
      byte[] buf = reader.ReadBytes(length);

      return Encoding.UTF8.GetString(buf);
   }

   private string DecodeCString()
   {
      using var ms = new MemoryStream();
      while( true )
      {
         byte buf = reader.ReadByte();
         if( buf == 0 )
            break;
         ms.WriteByte(buf);
      }
      return Encoding.UTF8.GetString(ms.ToArray(), 0, (int)ms.Position);
   }


   #region ENCODING

   private Bson()
   {
      stream = new MemoryStream();
   }

   public static byte[] Serialize(BObject obj)
   {
      var bson = new Bson();
      var ms = new MemoryStream();

      bson.EncodeDocument(ms, obj);

      byte[] buf = new byte[ms.Position];
      ms.Seek(0, SeekOrigin.Begin);
      ms.Read(buf, 0, buf.Length);

      return buf;
   }

   private void EncodeElement(MemoryStream ms, string name, BValue v)
   {
      switch( v.ValueType )
      {
         case BValueType.Double:
            ms.WriteByte(0x01);
            EncodeCString(ms, name);
            EncodeDouble(ms, v.DoubleValue);
            return;
         case BValueType.String:
            ms.WriteByte(0x02);
            EncodeCString(ms, name);
            EncodeString(ms, v.StringValue);
            return;
         case BValueType.Object:
            ms.WriteByte(0x03);
            EncodeCString(ms, name);
            EncodeDocument(ms, (BObject)v);
            return;
         case BValueType.Array:
            ms.WriteByte(0x04);
            EncodeCString(ms, name);
            EncodeArray(ms, (BArray)v);
            return;
         case BValueType.Binary:
            ms.WriteByte(0x05);
            EncodeCString(ms, name);
            EncodeBinary(ms, v.BinaryValue);
            return;
         case BValueType.Boolean:
            ms.WriteByte(0x08);
            EncodeCString(ms, name);
            EncodeBool(ms, v.BoolValue);
            return;
         case BValueType.UTCDateTime:
            ms.WriteByte(0x09);
            EncodeCString(ms, name);
            EncodeUTCDateTime(ms, v.DateTimeValue);
            return;
         case BValueType.None:
            ms.WriteByte(0x0A);
            EncodeCString(ms, name);
            return;
         case BValueType.Int32:
            ms.WriteByte(0x10);
            EncodeCString(ms, name);
            EncodeInt32(ms, v.Int32Value);
            return;
         case BValueType.Int64:
            ms.WriteByte(0x12);
            EncodeCString(ms, name);
            EncodeInt64(ms, v.Int64Value);
            return;
      }
   }

   private void EncodeDocument(MemoryStream ms, BObject obj)
   {
      var dms = new MemoryStream();
      foreach( string str in obj.Keys )
      {
         EncodeElement(dms, str, obj[str]);
      }

      var bw = new BinaryWriter(ms);
      bw.Write((Int32)(dms.Position + 4 + 1));
      bw.Write(dms.ToArray(), 0, (int)dms.Position);
      bw.Write((byte)0);
   }

   private void EncodeArray(MemoryStream ms, BArray lst)
   {
      var obj = new BObject();
      for( int i = 0; i < lst.Count; ++i )
      {
         obj.Add(Convert.ToString(i), lst[i]);
      }

      EncodeDocument(ms, obj);
   }

   private void EncodeBinary(MemoryStream ms, byte[] buf)
   {
      byte[] aBuf = BitConverter.GetBytes(buf.Length);
      ms.Write(aBuf, 0, aBuf.Length);
      ms.WriteByte(0);
      ms.Write(buf, 0, buf.Length);
   }

   private void EncodeCString(MemoryStream ms, string v)
   {
      byte[] buf = new UTF8Encoding().GetBytes(v);
      ms.Write(buf, 0, buf.Length);
      ms.WriteByte(0);
   }

   private void EncodeString(MemoryStream ms, string v)
   {
      byte[] strBuf = new UTF8Encoding().GetBytes(v);
      byte[] buf = BitConverter.GetBytes(strBuf.Length + 1);

      ms.Write(buf, 0, buf.Length);
      ms.Write(strBuf, 0, strBuf.Length);
      ms.WriteByte(0);
   }

   private void EncodeDouble(MemoryStream ms, double v)
   {
      byte[] buf = BitConverter.GetBytes(v);
      ms.Write(buf, 0, buf.Length);
   }

   private void EncodeBool(MemoryStream ms, bool v)
   {
      byte[] buf = BitConverter.GetBytes(v);
      ms.Write(buf, 0, buf.Length);
   }

   private void EncodeInt32(MemoryStream ms, Int32 v)
   {
      byte[] buf = BitConverter.GetBytes(v);
      ms.Write(buf, 0, buf.Length);
   }

   private void EncodeInt64(MemoryStream ms, Int64 v)
   {
      byte[] buf = BitConverter.GetBytes(v);
      ms.Write(buf, 0, buf.Length);
   }

   private void EncodeUTCDateTime(MemoryStream ms, DateTime dt)
   {
      TimeSpan span;
      if( dt.Kind == DateTimeKind.Local )
      {
         span = (dt - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).ToLocalTime());
      }
      else
      {
         span = dt - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
      }
      byte[] buf = BitConverter.GetBytes((Int64)(span.TotalSeconds * 1000));
      ms.Write(buf, 0, buf.Length);
   }
   #endregion
}



================================================
FILE: Source/Bogus/Chars.cs
================================================
using System.ComponentModel;

namespace Bogus;

/// <summary>
/// Static class for holding character string constants.
/// </summary>
public static class Chars
{
   /// <summary>
   /// Lower case, a-z.
   /// </summary>
   public const string LowerCase = "abcdefghijklmnopqrstuvwxyz";

   /// <summary>
   /// Upper case, A-Z.
   /// </summary>
   public const string UpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

   /// <summary>
   /// Numbers, 0-9.
   /// </summary>
   public const string Numbers = "0123456789";

   /// <summary>
   /// Hexadecimal, 0-9 and a-f.
   /// </summary>
   public const string HexLowerCase = Numbers + "abcdef";

   /// <summary>
   /// Hexadecimal, 0-9 and A-F.
   /// </summary>
   public const string HexUpperCase = Numbers + "ABCDEF";


   /// <summary>
   /// Alphanumeric upper case 0-9 and A-Z.
   /// </summary>
   public const string AlphaNumericUpperCase = Numbers + UpperCase;
   
   /// <summary>
   /// Alphanumeric lower case 0-9 and a-z.
   /// </summary>
   public const string AlphaNumericLowerCase = Numbers + LowerCase;
}

/// <summary>
/// Contains information about contiguous blocks of unicode character ranges.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public static class SafeUnicodeRanges
{
   /// <summary>
   /// Contiguous blocks of unicode scalars that are not surrogates and where
   /// char.IsLetterOrDigit is true.
   /// </summary>
   public static string[] Basic = {
         "\u0030-\u0039",
         "\u0041-\u005A",
         "\u0061-\u007A",
         "\u00C0-\u00D6",
         "\u00D8-\u00F6",
         "\u00F8-\u02C1",
         "\u02C6-\u02D1",
         "\u02E0-\u02E4",
         "\u037A-\u037D",
         "\u0388-\u038A",
         "\u038E-\u03A1",
         "\u03A3-\u03CE",
         "\u03D0-\u03F5",
         "\u03F7-\u0481",
         "\u048A-\u0513",
         "\u0531-\u0556",
         "\u0561-\u0587",
         "\u05D0-\u05EA",
         "\u05F0-\u05F2",
         "\u0621-\u063A",
         "\u0640-\u064A",
         "\u0660-\u0669",
         "\u066E-\u066F",
         "\u0671-\u06D3",
         "\u06E5-\u06E6",
         "\u06EE-\u06FC",
         "\u0712-\u072F",
         "\u074D-\u076D",
         "\u0780-\u07A5",
         "\u07C0-\u07EA",
         "\u07F4-\u07F5",
         "\u0904-\u0939",
         "\u0958-\u0961",
         "\u0966-\u096F",
         "\u097B-\u097F",
         "\u0985-\u098C",
         "\u098F-\u0990",
         "\u0993-\u09A8",
         "\u09AA-\u09B0",
         "\u09B6-\u09B9",
         "\u09DC-\u09DD",
         "\u09DF-\u09E1",
         "\u09E6-\u09F1",
         "\u0A05-\u0A0A",
         "\u0A0F-\u0A10",
         "\u0A13-\u0A28",
         "\u0A2A-\u0A30",
         "\u0A32-\u0A33",
         "\u0A35-\u0A36",
         "\u0A38-\u0A39",
         "\u0A59-\u0A5C",
         "\u0A66-\u0A6F",
         "\u0A72-\u0A74",
         "\u0A85-\u0A8D",
         "\u0A8F-\u0A91",
         "\u0A93-\u0AA8",
         "\u0AAA-\u0AB0",
         "\u0AB2-\u0AB3",
         "\u0AB5-\u0AB9",
         "\u0AE0-\u0AE1",
         "\u0AE6-\u0AEF",
         "\u0B05-\u0B0C",
         "\u0B0F-\u0B10",
         "\u0B13-\u0B28",
         "\u0B2A-\u0B30",
         "\u0B32-\u0B33",
         "\u0B35-\u0B39",
         "\u0B5C-\u0B5D",
         "\u0B5F-\u0B61",
         "\u0B66-\u0B6F",
         "\u0B85-\u0B8A",
         "\u0B8E-\u0B90",
         "\u0B92-\u0B95",
         "\u0B99-\u0B9A",
         "\u0B9E-\u0B9F",
         "\u0BA3-\u0BA4",
         "\u0BA8-\u0BAA",
         "\u0BAE-\u0BB9",
         "\u0BE6-\u0BEF",
         "\u0C05-\u0C0C",
         "\u0C0E-\u0C10",
         "\u0C12-\u0C28",
         "\u0C2A-\u0C33",
         "\u0C35-\u0C39",
         "\u0C60-\u0C61",
         "\u0C66-\u0C6F",
         "\u0C85-\u0C8C",
         "\u0C8E-\u0C90",
         "\u0C92-\u0CA8",
         "\u0CAA-\u0CB3",
         "\u0CB5-\u0CB9",
         "\u0CE0-\u0CE1",
         "\u0CE6-\u0CEF",
         "\u0CF1-\u0CF2",
         "\u0D05-\u0D0C",
         "\u0D0E-\u0D10",
         "\u0D12-\u0D28",
         "\u0D2A-\u0D39",
         "\u0D60-\u0D61",
         "\u0D66-\u0D6F",
         "\u0D85-\u0D96",
         "\u0D9A-\u0DB1",
         "\u0DB3-\u0DBB",
         "\u0DC0-\u0DC6",
         "\u0E01-\u0E30",
         "\u0E32-\u0E33",
         "\u0E40-\u0E46",
         "\u0E50-\u0E59",
         "\u0E81-\u0E82",
         "\u0E87-\u0E88",
         "\u0E94-\u0E97",
         "\u0E99-\u0E9F",
         "\u0EA1-\u0EA3",
         "\u0EAA-\u0EAB",
         "\u0EAD-\u0EB0",
         "\u0EB2-\u0EB3",
         "\u0EC0-\u0EC4",
         "\u0ED0-\u0ED9",
         "\u0EDC-\u0EDD",
         "\u0F20-\u0F29",
         "\u0F40-\u0F47",
         "\u0F49-\u0F6A",
         "\u0F88-\u0F8B",
         "\u1000-\u1021",
         "\u1023-\u1027",
         "\u1029-\u102A",
         "\u1040-\u1049",
         "\u1050-\u1055",
         "\u10A0-\u10C5",
         "\u10D0-\u10FA",
         "\u1100-\u1159",
         "\u115F-\u11A2",
         "\u11A8-\u11F9",
         "\u1200-\u1248",
         "\u124A-\u124D",
         "\u1250-\u1256",
         "\u125A-\u125D",
         "\u1260-\u1288",
         "\u128A-\u128D",
         "\u1290-\u12B0",
         "\u12B2-\u12B5",
         "\u12B8-\u12BE",
         "\u12C2-\u12C5",
         "\u12C8-\u12D6",
         "\u12D8-\u1310",
         "\u1312-\u1315",
         "\u1318-\u135A",
         "\u1380-\u138F",
         "\u13A0-\u13F4",
         "\u1401-\u166C",
         "\u166F-\u1676",
         "\u1681-\u169A",
         "\u16A0-\u16EA",
         "\u1700-\u170C",
         "\u170E-\u1711",
         "\u1720-\u1731",
         "\u1740-\u1751",
         "\u1760-\u176C",
         "\u176E-\u1770",
         "\u1780-\u17B3",
         "\u17E0-\u17E9",
         "\u1810-\u1819",
         "\u1820-\u1877",
         "\u1880-\u18A8",
         "\u1900-\u191C",
         "\u1946-\u196D",
         "\u1970-\u1974",
         "\u1980-\u19A9",
         "\u19B0-\u19C9",
         "\u19D0-\u19D9",
         "\u1A00-\u1A16",
         "\u1B05-\u1B33",
         "\u1B45-\u1B4B",
         "\u1B50-\u1B59",
         "\u1D00-\u1DBF",
         "\u1E00-\u1E9B",
         "\u1EA0-\u1EF9",
         "\u1F00-\u1F15",
         "\u1F18-\u1F1D",
         "\u1F20-\u1F45",
         "\u1F48-\u1F4D",
         "\u1F50-\u1F57",
         "\u1F5F-\u1F7D",
         "\u1F80-\u1FB4",
         "\u1FB6-\u1FBC",
         "\u1FC2-\u1FC4",
         "\u1FC6-\u1FCC",
         "\u1FD0-\u1FD3",
         "\u1FD6-\u1FDB",
         "\u1FE0-\u1FEC",
         "\u1FF2-\u1FF4",
         "\u1FF6-\u1FFC",
         "\u2090-\u2094",
         "\u210A-\u2113",
         "\u2119-\u211D",
         "\u212A-\u212D",
         "\u212F-\u2139",
         "\u213C-\u213F",
         "\u2145-\u2149",
         "\u2183-\u2184",
         "\u2C00-\u2C2E",
         "\u2C30-\u2C5E",
         "\u2C60-\u2C6C",
         "\u2C74-\u2C77",
         "\u2C80-\u2CE4",
         "\u2D00-\u2D25",
         "\u2D30-\u2D65",
         "\u2D80-\u2D96",
         "\u2DA0-\u2DA6",
         "\u2DA8-\u2DAE",
         "\u2DB0-\u2DB6",
         "\u2DB8-\u2DBE",
         "\u2DC0-\u2DC6",
         "\u2DC8-\u2DCE",
         "\u2DD0-\u2DD6",
         "\u2DD8-\u2DDE",
         "\u3005-\u3006",
         "\u3031-\u3035",
         "\u303B-\u303C",
         "\u3041-\u3096",
         "\u309D-\u309F",
         "\u30A1-\u30FA",
         "\u30FC-\u30FF",
         "\u3105-\u312C",
         "\u3131-\u318E",
         "\u31A0-\u31B7",
         "\u31F0-\u31FF",
         "\u3400-\u4DB5",
         "\u4E00-\u9FBB",
         "\uA000-\uA48C",
         "\uA717-\uA71A",
         "\uA800-\uA801",
         "\uA803-\uA805",
         "\uA807-\uA80A",
         "\uA80C-\uA822",
         "\uA840-\uA873",
         "\uAC00-\uD7A3",
         "\uF900-\uFA2D",
         "\uFA30-\uFA6A",
         "\uFA70-\uFAD9",
         "\uFB00-\uFB06",
         "\uFB13-\uFB17",
         "\uFB1F-\uFB28",
         "\uFB2A-\uFB36",
         "\uFB38-\uFB3C",
         "\uFB40-\uFB41",
         "\uFB43-\uFB44",
         "\uFB46-\uFBB1",
         "\uFBD3-\uFD3D",
         "\uFD50-\uFD8F",
         "\uFD92-\uFDC7",
         "\uFDF0-\uFDFB",
         "\uFE70-\uFE74",
         "\uFE76-\uFEFC",
         "\uFF10-\uFF19",
         "\uFF21-\uFF3A",
         "\uFF41-\uFF5A",
         "\uFF66-\uFFBE",
         "\uFFC2-\uFFC7",
         "\uFFCA-\uFFCF",
         "\uFFD2-\uFFD7",
         "\uFFDA-\uFFDC",
      };

   /// <summary>
   /// Contiguous blocks of unicode surrogate pairs and where
   /// char.IsLetterOrDigit is true.
   /// </summary>
   public static string[] SurrogatePairs =
      {
         "\uD800\uDC00-\uD800\uDC0B",
         "\uD800\uDC0D-\uD800\uDC26",
         "\uD800\uDC28-\uD800\uDC3A",
         "\uD800\uDC3C-\uD800\uDC3D",
         "\uD800\uDC3F-\uD800\uDC4D",
         "\uD800\uDC50-\uD800\uDC5D",
         "\uD800\uDC80-\uD800\uDCFA",
         "\uD800\uDF00-\uD800\uDF1E",
         "\uD800\uDF30-\uD800\uDF40",
         "\uD800\uDF42-\uD800\uDF49",
         "\uD800\uDF80-\uD800\uDF9D",
         "\uD800\uDFA0-\uD800\uDFC3",
         "\uD800\uDFC8-\uD800\uDFCF",
         "\uD801\uDC00-\uD801\uDC9D",
         "\uD801\uDCA0-\uD801\uDCA9",
         "\uD802\uDC00-\uD802\uDC05",
         "\uD802\uDC0A-\uD802\uDC35",
         "\uD802\uDC37-\uD802\uDC38",
         "\uD802\uDD00-\uD802\uDD15",
         "\uD802\uDE10-\uD802\uDE13",
         "\uD802\uDE15-\uD802\uDE17",
         "\uD802\uDE19-\uD802\uDE33",
         "\uD808\uDC00-\uD808\uDF6E",
         "\uD835\uDC00-\uD835\uDC54",
         "\uD835\uDC56-\uD835\uDC9C",
         "\uD835\uDC9E-\uD835\uDC9F",
         "\uD835\uDCA5-\uD835\uDCA6",
         "\uD835\uDCA9-\uD835\uDCAC",
         "\uD835\uDCAE-\uD835\uDCB9",
         "\uD835\uDCBD-\uD835\uDCC3",
         "\uD835\uDCC5-\uD835\uDD05",
         "\uD835\uDD07-\uD835\uDD0A",
         "\uD835\uDD0D-\uD835\uDD14",
         "\uD835\uDD16-\uD835\uDD1C",
         "\uD835\uDD1E-\uD835\uDD39",
         "\uD835\uDD3B-\uD835\uDD3E",
         "\uD835\uDD40-\uD835\uDD44",
         "\uD835\uDD4A-\uD835\uDD50",
         "\uD835\uDD52-\uD835\uDEA5",
         "\uD835\uDEA8-\uD835\uDEC0",
         "\uD835\uDEC2-\uD835\uDEDA",
         "\uD835\uDEDC-\uD835\uDEFA",
         "\uD835\uDEFC-\uD835\uDF14",
         "\uD835\uDF16-\uD835\uDF34",
         "\uD835\uDF36-\uD835\uDF4E",
         "\uD835\uDF50-\uD835\uDF6E",
         "\uD835\uDF70-\uD835\uDF88",
         "\uD835\uDF8A-\uD835\uDFA8",
         "\uD835\uDFAA-\uD835\uDFC2",
         "\uD835\uDFC4-\uD835\uDFCB",
         "\uD835\uDFCE-\uD835\uDFFF",
         "\uD840\uDC00-\uD840\uDFFF",
         "\uD841\uDC00-\uD841\uDFFF",
         "\uD842\uDC00-\uD842\uDFFF",
         "\uD843\uDC00-\uD843\uDFFF",
         "\uD844\uDC00-\uD844\uDFFF",
         "\uD845\uDC00-\uD845\uDFFF",
         "\uD846\uDC00-\uD846\uDFFF",
         "\uD847\uDC00-\uD847\uDFFF",
         "\uD848\uDC00-\uD848\uDFFF",
         "\uD849\uDC00-\uD849\uDFFF",
         "\uD84A\uDC00-\uD84A\uDFFF",
         "\uD84B\uDC00-\uD84B\uDFFF",
         "\uD84C\uDC00-\uD84C\uDFFF",
         "\uD84D\uDC00-\uD84D\uDFFF",
         "\uD84E\uDC00-\uD84E\uDFFF",
         "\uD84F\uDC00-\uD84F\uDFFF",
         "\uD850\uDC00-\uD850\uDFFF",
         "\uD851\uDC00-\uD851\uDFFF",
         "\uD852\uDC00-\uD852\uDFFF",
         "\uD853\uDC00-\uD853\uDFFF",
         "\uD854\uDC00-\uD854\uDFFF",
         "\uD855\uDC00-\uD855\uDFFF",
         "\uD856\uDC00-\uD856\uDFFF",
         "\uD857\uDC00-\uD857\uDFFF",
         "\uD858\uDC00-\uD858\uDFFF",
         "\uD859\uDC00-\uD859\uDFFF",
         "\uD85A\uDC00-\uD85A\uDFFF",
         "\uD85B\uDC00-\uD85B\uDFFF",
         "\uD85C\uDC00-\uD85C\uDFFF",
         "\uD85D\uDC00-\uD85D\uDFFF",
         "\uD85E\uDC00-\uD85E\uDFFF",
         "\uD85F\uDC00-\uD85F\uDFFF",
         "\uD860\uDC00-\uD860\uDFFF",
         "\uD861\uDC00-\uD861\uDFFF",
         "\uD862\uDC00-\uD862\uDFFF",
         "\uD863\uDC00-\uD863\uDFFF",
         "\uD864\uDC00-\uD864\uDFFF",
         "\uD865\uDC00-\uD865\uDFFF",
         "\uD866\uDC00-\uD866\uDFFF",
         "\uD867\uDC00-\uD867\uDFFF",
         "\uD868\uDC00-\uD868\uDFFF",
         "\uD869\uDC00-\uD869\uDED6"
      };
}

================================================
FILE: Source/Bogus/DataCategoryAttribute.cs
================================================
using System;

namespace Bogus;

/// <summary>
/// DataCategory is used when resolving the final category name inside the locale.
/// For example, a 'phone_numbers' is the data set name in a locale, but the 
/// C# style DataSet is PhoneNumbers; When a dataset is marked with DataCategory,
/// you can specify that category name manually. If no data category is specified,
/// then the C# class name is used.
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
public class DataCategoryAttribute : Attribute
{
   /// <summary>
   /// The category name.
   /// </summary>
   public string Name { get; set; }

   /// <summary>
   /// Creates a data category attribute with a specified category name.
   /// </summary>
   public DataCategoryAttribute(string name)
   {
      this.Name = name;
   }
}

================================================
FILE: Source/Bogus/DataSet.cs
================================================
using Bogus.Bson;
using Bogus.Platform;
using System;
using System.Text.RegularExpressions;

namespace Bogus;

/// <summary>
/// Data set methods that access the BSON database of locales.
/// </summary>
public class DataSet : ILocaleAware, IHasRandomizer
{
   /// <summary>
   /// Initializes a new instance of the <see cref="DataSet"/> class.
   /// </summary>
   /// <param name="locale">The locale wanting to be set. Default is "en" for English.</param>
   /// <exception cref="BogusException">
   /// When the given <paramref name="locale"/> isn't found.
   /// </exception>
   public DataSet(string locale = "en")
   {
      if (!Database.LocaleResourceExists(locale))
      {
         throw new BogusException(
            $"The locale '{locale}' does not exist. To see all available locales visit {AssemblyVersionInformation.AssemblyDescription}.");
      }

      this.Locale = locale;

      this.Category = ResolveCategory(this.GetType());
   }

   /// <summary>
   /// Gets or sets the category name inside the locale.
   /// </summary>
   protected string Category { get; set; }

   /// <summary>
   /// Gets or sets the curre
Download .txt
gitextract_1wf4tuk4/

├── .config/
│   └── dotnet-tools.json
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   └── ISSUE_TEMPLATE/
│       ├── bug_report.yml
│       ├── config.yml
│       ├── feature_request.yml
│       └── support.yml
├── .gitignore
├── .gitmodules
├── .nuke/
│   ├── build.schema.json
│   └── parameters.json
├── CONTRIBUTING.md
├── Examples/
│   ├── EFCoreSeedDb/
│   │   ├── .config/
│   │   │   └── dotnet-tools.json
│   │   ├── EFCoreSeedDb.csproj
│   │   ├── Program.cs
│   │   └── README.md
│   ├── Examples.sln
│   ├── ExtendingBogus/
│   │   ├── ExtendingBogus.csproj
│   │   ├── ExtensionsForAddress.cs
│   │   ├── ExtensionsForTesting.cs
│   │   ├── FoodDataSet.cs
│   │   ├── Program.cs
│   │   └── README.md
│   └── GettingStarted/
│       ├── GettingStarted.csproj
│       ├── Program.cs
│       └── README.md
├── HISTORY.md
├── LICENSE
├── README.md
├── Source/
│   ├── .editorconfig
│   ├── Benchmark/
│   │   ├── BenchGenerate.cs
│   │   ├── BenchRandomSubset.cs
│   │   ├── BenchSsn.cs
│   │   ├── BenchStringFill.cs
│   │   ├── Benchmark.csproj
│   │   ├── PR300_BenchDecimal.cs
│   │   ├── PR300_BenchRandomNumber.cs
│   │   └── README.md
│   ├── Bogus/
│   │   ├── Binder.cs
│   │   ├── Bogus.csproj
│   │   ├── Bogus.ruleset
│   │   ├── BogusException.cs
│   │   ├── Bson/
│   │   │   ├── BArray.cs
│   │   │   ├── BObject.cs
│   │   │   ├── BValue.cs
│   │   │   ├── BValueType.cs
│   │   │   └── Bson.cs
│   │   ├── Chars.cs
│   │   ├── DataCategoryAttribute.cs
│   │   ├── DataSet.cs
│   │   ├── DataSets/
│   │   │   ├── Address.cs
│   │   │   ├── ColorFormat.cs
│   │   │   ├── Commerce.cs
│   │   │   ├── Company.cs
│   │   │   ├── Database.cs
│   │   │   ├── Date.cs
│   │   │   ├── Date.net60.cs
│   │   │   ├── Finance.cs
│   │   │   ├── Hacker.cs
│   │   │   ├── Images.PlaceImg.cs
│   │   │   ├── Images.cs
│   │   │   ├── Internet.cs
│   │   │   ├── Lorem.cs
│   │   │   ├── Music.cs
│   │   │   ├── Name.cs
│   │   │   ├── PhoneNumbers.cs
│   │   │   ├── Rant.cs
│   │   │   ├── System.cs
│   │   │   └── Vehicle.cs
│   │   ├── Database.cs
│   │   ├── Distributions/
│   │   │   └── Gaussian/
│   │   │       └── ExtensionsForRandomizer.cs
│   │   ├── Extensions/
│   │   │   ├── Belgium/
│   │   │   │   └── ExtensionsForBelgium.cs
│   │   │   ├── Brazil/
│   │   │   │   └── ExtensionsForBrazil.cs
│   │   │   ├── Canada/
│   │   │   │   └── ExtensionsForCanada.cs
│   │   │   ├── Denmark/
│   │   │   │   └── ExtensionsForDenmark.cs
│   │   │   ├── ExtensionsForCultureInfo.cs
│   │   │   ├── ExtensionsForPropertyInfo.cs
│   │   │   ├── ExtensionsForRandomizer.cs
│   │   │   ├── ExtensionsForString.cs
│   │   │   ├── Extras/
│   │   │   │   ├── CheckDigitExtension.cs
│   │   │   │   └── FinanceExtensions.cs
│   │   │   ├── Finland/
│   │   │   │   └── ExtensionsForFinland.cs
│   │   │   ├── Iran/
│   │   │   │   └── ExtensionsForIran.cs
│   │   │   ├── Italy/
│   │   │   │   ├── ExtensionsForItaly.CodiceFiscale.cs
│   │   │   │   └── ExtensionsForItaly.cs
│   │   │   ├── Norway/
│   │   │   │   └── ExtensionsForNorway.cs
│   │   │   ├── Poland/
│   │   │   │   └── ExtensionsForPoland.cs
│   │   │   ├── Portugal/
│   │   │   │   ├── ExtensionsForPortugal.cs
│   │   │   │   └── TaxNumberGenerator.cs
│   │   │   ├── Romania/
│   │   │   │   ├── ExtensionsForRomania.cs
│   │   │   │   └── RomanianBirthCounty.cs
│   │   │   ├── Sweden/
│   │   │   │   └── ExtensionsForSweden.cs
│   │   │   ├── UnitedKingdom/
│   │   │   │   ├── ExtensionsForGreatBritainRegistrationPlate.cs
│   │   │   │   ├── ExtensionsForUnitedKingdom.cs
│   │   │   │   └── VatRegistrationNumberType.cs
│   │   │   └── UnitedStates/
│   │   │       └── ExtensionsForUnitedStates.cs
│   │   ├── Faker.cs
│   │   ├── Faker[T].Extensions.cs
│   │   ├── Faker[T].cs
│   │   ├── Hashids.cs
│   │   ├── IHashids.cs
│   │   ├── ILocaleAware.cs
│   │   ├── IRuleSet.cs
│   │   ├── Person.cs
│   │   ├── Platform/
│   │   │   └── ExtensionsForType.cs
│   │   ├── Premium/
│   │   │   ├── ContextHelper.cs
│   │   │   ├── License.cs
│   │   │   ├── LicenseVerifier.cs
│   │   │   └── PremiumDataSet.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── PropertyName.cs
│   │   ├── Randomizer.cs
│   │   ├── ResourceHelper.cs
│   │   ├── Rule.cs
│   │   ├── SeedNotifier[T].cs
│   │   ├── Tokenizer.cs
│   │   ├── Transliterater.Generated.cs
│   │   ├── Transliterater.cs
│   │   ├── Utils.cs
│   │   ├── ValidationException.cs
│   │   ├── ValidationResult.cs
│   │   ├── Vendor/
│   │   │   └── UserAgentGenerator.cs
│   │   ├── data/
│   │   │   ├── README.md
│   │   │   ├── _DO_NOT_MODIFY_FILES_IN_THIS_FOLDER
│   │   │   ├── af_ZA.locale.bson
│   │   │   ├── af_ZA.locale.json
│   │   │   ├── af_ZA.locale.schema.verified.txt
│   │   │   ├── ar.locale.bson
│   │   │   ├── ar.locale.json
│   │   │   ├── ar.locale.schema.verified.txt
│   │   │   ├── az.locale.bson
│   │   │   ├── az.locale.json
│   │   │   ├── az.locale.schema.verified.txt
│   │   │   ├── cz.locale.bson
│   │   │   ├── cz.locale.json
│   │   │   ├── cz.locale.schema.verified.txt
│   │   │   ├── de.locale.bson
│   │   │   ├── de.locale.json
│   │   │   ├── de.locale.schema.verified.txt
│   │   │   ├── de_AT.locale.bson
│   │   │   ├── de_AT.locale.json
│   │   │   ├── de_AT.locale.schema.verified.txt
│   │   │   ├── de_CH.locale.bson
│   │   │   ├── de_CH.locale.json
│   │   │   ├── de_CH.locale.schema.verified.txt
│   │   │   ├── el.locale.bson
│   │   │   ├── el.locale.json
│   │   │   ├── el.locale.schema.verified.txt
│   │   │   ├── en.locale.bson
│   │   │   ├── en.locale.json
│   │   │   ├── en.locale.schema.verified.txt
│   │   │   ├── en_AU.locale.bson
│   │   │   ├── en_AU.locale.json
│   │   │   ├── en_AU.locale.schema.verified.txt
│   │   │   ├── en_AU_ocker.locale.bson
│   │   │   ├── en_AU_ocker.locale.json
│   │   │   ├── en_AU_ocker.locale.schema.verified.txt
│   │   │   ├── en_BORK.locale.bson
│   │   │   ├── en_BORK.locale.json
│   │   │   ├── en_BORK.locale.schema.verified.txt
│   │   │   ├── en_CA.locale.bson
│   │   │   ├── en_CA.locale.json
│   │   │   ├── en_CA.locale.schema.verified.txt
│   │   │   ├── en_GB.locale.bson
│   │   │   ├── en_GB.locale.json
│   │   │   ├── en_GB.locale.schema.verified.txt
│   │   │   ├── en_IE.locale.bson
│   │   │   ├── en_IE.locale.json
│   │   │   ├── en_IE.locale.schema.verified.txt
│   │   │   ├── en_IND.locale.bson
│   │   │   ├── en_IND.locale.json
│   │   │   ├── en_IND.locale.schema.verified.txt
│   │   │   ├── en_NG.locale.bson
│   │   │   ├── en_NG.locale.json
│   │   │   ├── en_NG.locale.schema.verified.txt
│   │   │   ├── en_US.locale.bson
│   │   │   ├── en_US.locale.json
│   │   │   ├── en_US.locale.schema.verified.txt
│   │   │   ├── en_ZA.locale.bson
│   │   │   ├── en_ZA.locale.json
│   │   │   ├── en_ZA.locale.schema.verified.txt
│   │   │   ├── es.locale.bson
│   │   │   ├── es.locale.json
│   │   │   ├── es.locale.schema.verified.txt
│   │   │   ├── es_MX.locale.bson
│   │   │   ├── es_MX.locale.json
│   │   │   ├── es_MX.locale.schema.verified.txt
│   │   │   ├── fa.locale.bson
│   │   │   ├── fa.locale.json
│   │   │   ├── fa.locale.schema.verified.txt
│   │   │   ├── fi.locale.bson
│   │   │   ├── fi.locale.json
│   │   │   ├── fi.locale.schema.verified.txt
│   │   │   ├── fr.locale.bson
│   │   │   ├── fr.locale.json
│   │   │   ├── fr.locale.schema.verified.txt
│   │   │   ├── fr_CA.locale.bson
│   │   │   ├── fr_CA.locale.json
│   │   │   ├── fr_CA.locale.schema.verified.txt
│   │   │   ├── fr_CH.locale.bson
│   │   │   ├── fr_CH.locale.json
│   │   │   ├── fr_CH.locale.schema.verified.txt
│   │   │   ├── ge.locale.bson
│   │   │   ├── ge.locale.json
│   │   │   ├── ge.locale.schema.verified.txt
│   │   │   ├── hr.locale.bson
│   │   │   ├── hr.locale.json
│   │   │   ├── hr.locale.schema.verified.txt
│   │   │   ├── id_ID.locale.bson
│   │   │   ├── id_ID.locale.json
│   │   │   ├── id_ID.locale.schema.verified.txt
│   │   │   ├── it.locale.bson
│   │   │   ├── it.locale.json
│   │   │   ├── it.locale.schema.verified.txt
│   │   │   ├── ja.locale.bson
│   │   │   ├── ja.locale.json
│   │   │   ├── ja.locale.schema.verified.txt
│   │   │   ├── ko.locale.bson
│   │   │   ├── ko.locale.json
│   │   │   ├── ko.locale.schema.verified.txt
│   │   │   ├── lv.locale.bson
│   │   │   ├── lv.locale.json
│   │   │   ├── lv.locale.schema.verified.txt
│   │   │   ├── nb_NO.locale.bson
│   │   │   ├── nb_NO.locale.json
│   │   │   ├── nb_NO.locale.schema.verified.txt
│   │   │   ├── ne.locale.bson
│   │   │   ├── ne.locale.json
│   │   │   ├── ne.locale.schema.verified.txt
│   │   │   ├── nl.locale.bson
│   │   │   ├── nl.locale.json
│   │   │   ├── nl.locale.schema.verified.txt
│   │   │   ├── nl_BE.locale.bson
│   │   │   ├── nl_BE.locale.json
│   │   │   ├── nl_BE.locale.schema.verified.txt
│   │   │   ├── pl.locale.bson
│   │   │   ├── pl.locale.json
│   │   │   ├── pl.locale.schema.verified.txt
│   │   │   ├── pt_BR.locale.bson
│   │   │   ├── pt_BR.locale.json
│   │   │   ├── pt_BR.locale.schema.verified.txt
│   │   │   ├── pt_PT.locale.bson
│   │   │   ├── pt_PT.locale.json
│   │   │   ├── pt_PT.locale.schema.verified.txt
│   │   │   ├── ro.locale.bson
│   │   │   ├── ro.locale.json
│   │   │   ├── ro.locale.schema.verified.txt
│   │   │   ├── ru.locale.bson
│   │   │   ├── ru.locale.json
│   │   │   ├── ru.locale.schema.verified.txt
│   │   │   ├── sk.locale.bson
│   │   │   ├── sk.locale.json
│   │   │   ├── sk.locale.schema.verified.txt
│   │   │   ├── sv.locale.bson
│   │   │   ├── sv.locale.json
│   │   │   ├── sv.locale.schema.verified.txt
│   │   │   ├── tr.locale.bson
│   │   │   ├── tr.locale.json
│   │   │   ├── tr.locale.schema.verified.txt
│   │   │   ├── uk.locale.bson
│   │   │   ├── uk.locale.json
│   │   │   ├── uk.locale.schema.verified.txt
│   │   │   ├── vi.locale.bson
│   │   │   ├── vi.locale.json
│   │   │   ├── vi.locale.schema.verified.txt
│   │   │   ├── zh_CN.locale.bson
│   │   │   ├── zh_CN.locale.json
│   │   │   ├── zh_CN.locale.schema.verified.txt
│   │   │   ├── zh_TW.locale.bson
│   │   │   ├── zh_TW.locale.json
│   │   │   ├── zh_TW.locale.schema.verified.txt
│   │   │   ├── zu_ZA.locale.bson
│   │   │   ├── zu_ZA.locale.json
│   │   │   └── zu_ZA.locale.schema.verified.txt
│   │   └── data_extend/
│   │       ├── az.locale.json
│   │       ├── en.locale.json
│   │       ├── nl.locale.json
│   │       ├── pt_BR.locale.json
│   │       ├── pt_PT.locale.json
│   │       ├── sv.locale.json
│   │       └── tr.locale.json
│   ├── Bogus.Tests/
│   │   ├── Bogus.Tests.csproj
│   │   ├── BsonTests.cs
│   │   ├── CloneTests.cs
│   │   ├── DataSetTests/
│   │   │   ├── AddressTest.cs
│   │   │   ├── CardTests.cs
│   │   │   ├── CommerceTest.cs
│   │   │   ├── CompanyTest.cs
│   │   │   ├── DatabaseTests.cs
│   │   │   ├── DateTest.cs
│   │   │   ├── DateTest.net60.cs
│   │   │   ├── FinanceTest.cs
│   │   │   ├── HackerTests.cs
│   │   │   ├── ImageTest.cs
│   │   │   ├── InternetTests.cs
│   │   │   ├── LoremTests.cs
│   │   │   ├── MusicTests.cs
│   │   │   ├── NameTests.cs
│   │   │   ├── PhoneNumbersTest.cs
│   │   │   ├── RantTests.cs
│   │   │   ├── SystemTest.cs
│   │   │   └── VehicleTest.cs
│   │   ├── DistributionTests/
│   │   │   └── GaussianTests.cs
│   │   ├── ExtensionTests/
│   │   │   ├── BelgianExtensionTests.cs
│   │   │   ├── DanishExtentionTest.cs
│   │   │   ├── ExtensionTest.cs
│   │   │   ├── IranianExtensionTests.cs
│   │   │   ├── NorwegianExtensionTest.cs
│   │   │   ├── PolishExtensionTest.cs
│   │   │   ├── RegistrationPlateExtensionsForGreatBritainTests.cs
│   │   │   └── SwedishExtensionTest.cs
│   │   ├── ExtensionsForTesting.cs
│   │   ├── FluentTests.cs
│   │   ├── GitHubIssues/
│   │   │   ├── Issue10.cs
│   │   │   ├── Issue100.cs
│   │   │   ├── Issue102.cs
│   │   │   ├── Issue104.cs
│   │   │   ├── Issue114.cs
│   │   │   ├── Issue115.cs
│   │   │   ├── Issue121.cs
│   │   │   ├── Issue124.cs
│   │   │   ├── Issue126.cs
│   │   │   ├── Issue13.cs
│   │   │   ├── Issue132.cs
│   │   │   ├── Issue134.cs
│   │   │   ├── Issue143.cs
│   │   │   ├── Issue152.cs
│   │   │   ├── Issue168.cs
│   │   │   ├── Issue169.cs
│   │   │   ├── Issue178.cs
│   │   │   ├── Issue179.cs
│   │   │   ├── Issue192.cs
│   │   │   ├── Issue193.cs
│   │   │   ├── Issue218.cs
│   │   │   ├── Issue225.cs
│   │   │   ├── Issue23.cs
│   │   │   ├── Issue232.cs
│   │   │   ├── Issue249.cs
│   │   │   ├── Issue253.cs
│   │   │   ├── Issue255.cs
│   │   │   ├── Issue260.cs
│   │   │   ├── Issue271.cs
│   │   │   ├── Issue279.cs
│   │   │   ├── Issue280.cs
│   │   │   ├── Issue309.cs
│   │   │   ├── Issue313.cs
│   │   │   ├── Issue318.cs
│   │   │   ├── Issue319.cs
│   │   │   ├── Issue321.cs
│   │   │   ├── Issue328.cs
│   │   │   ├── Issue342.cs
│   │   │   ├── Issue355.cs
│   │   │   ├── Issue389.cs
│   │   │   ├── Issue411.cs
│   │   │   ├── Issue45.cs
│   │   │   ├── Issue48.cs
│   │   │   ├── Issue49.cs
│   │   │   ├── Issue538.cs
│   │   │   ├── Issue55.cs
│   │   │   ├── Issue581.cs
│   │   │   ├── Issue601.cs
│   │   │   ├── Issue61.cs
│   │   │   ├── Issue70.cs
│   │   │   ├── Issue86.cs
│   │   │   ├── Issue93.cs
│   │   │   ├── Issue99.cs
│   │   │   ├── PullRequest149.cs
│   │   │   ├── PullRequest180.cs
│   │   │   ├── PullRequest194.cs
│   │   │   ├── PullRequest197.cs
│   │   │   ├── PullRequest258.cs
│   │   │   ├── PullRequest259.cs
│   │   │   ├── PullRequest261.cs
│   │   │   ├── PullRequest500.cs
│   │   │   ├── PullRequest510.cs
│   │   │   └── PullRequest513.cs
│   │   ├── HandleBarTests.cs
│   │   ├── HandlebarsTests/
│   │   │   └── ArgumentsTest.cs
│   │   ├── LocaleTests/
│   │   │   ├── PtLocale.cs
│   │   │   └── TrLocale.cs
│   │   ├── Models/
│   │   │   └── Order.cs
│   │   ├── PersonTest.cs
│   │   ├── README_Generator.cs
│   │   ├── RandomizerTest.cs
│   │   ├── Rant_Generator.cs
│   │   ├── Rantionary-3.0.17.rantpkg
│   │   ├── RuleSetTests.cs
│   │   ├── SchemaTests/
│   │   │   └── LocaleSchemaTests.cs
│   │   ├── SeededTest.cs
│   │   ├── StackOverflowQuestions/
│   │   │   ├── Question60136934.cs
│   │   │   └── Question66444118.cs
│   │   ├── StrictModeTests.cs
│   │   ├── TransliterateTests.cs
│   │   ├── UniquenessTests.cs
│   │   └── ValidationDeltaTests.cs
│   ├── Bogus.sln
│   ├── Bogus.snk.pub
│   ├── Builder/
│   │   ├── .editorconfig
│   │   ├── .vscode/
│   │   │   └── launch.json
│   │   ├── Build.cs
│   │   ├── Builder.csproj
│   │   ├── Configuration.cs
│   │   ├── Directory.Build.props
│   │   ├── Directory.Build.targets
│   │   ├── Utils.cs
│   │   ├── gulpfile.js
│   │   ├── package.json
│   │   └── test.js
│   └── Directory.Build.props
├── appveyor.yml
├── build.cmd
├── build.ps1
├── build.sh
└── global.json
Download .txt
SYMBOL INDEX (1688 symbols across 210 files)

FILE: Examples/EFCoreSeedDb/Program.cs
  class Program (line 11) | class Program
    method Main (line 13) | static void Main(string[] args)
  class BloggingContext (line 41) | public class BloggingContext : DbContext
    method OnConfiguring (line 46) | protected override void OnConfiguring(DbContextOptionsBuilder options)
    method OnModelCreating (line 52) | protected override void OnModelCreating(ModelBuilder modelBuilder)
  class FakeData (line 67) | public static class FakeData
    method Init (line 72) | public static void Init(int count)
  class FakeData2 (line 104) | public static class FakeData2
    method Init (line 114) | public static void Init(int count)
    method GenerateBlogs (line 121) | private static void GenerateBlogs(int blogCount)
    method GeneratePost (line 138) | private static void GeneratePost(Blog b, int postCount)
  class Blog (line 155) | public class Blog
  class Post (line 163) | public class Post

FILE: Examples/ExtendingBogus/ExtensionsForAddress.cs
  class ExtensionsForAddress (line 6) | public static class ExtensionsForAddress
    method DowntownTorontoPostalCode (line 15) | public static string DowntownTorontoPostalCode(this Bogus.DataSets.Add...

FILE: Examples/ExtendingBogus/ExtensionsForTesting.cs
  class ExtensionsForTesting (line 6) | public static class ExtensionsForTesting
    method Dump (line 8) | public static void Dump(this object obj)
    method DumpString (line 13) | public static string DumpString(this object obj)

FILE: Examples/ExtendingBogus/FoodDataSet.cs
  class ExtensionsForFood (line 9) | public static class ExtensionsForFood
    method Food (line 11) | public static Food Food(this Faker faker)
  class Food (line 20) | public class Food : DataSet
    method Candy (line 31) | public string Candy()
    method Drink (line 37) | public string Drink()

FILE: Examples/ExtendingBogus/Program.cs
  class Program (line 5) | class Program
    method Main (line 7) | static void Main(string[] args)
  class User (line 21) | public class User

FILE: Examples/GettingStarted/Program.cs
  class Program (line 10) | class Program
    method Main (line 12) | static void Main(string[] args)
  class Order (line 67) | public class Order
  type Gender (line 75) | public enum Gender
  class User (line 81) | public class User
    method User (line 83) | public User(int userId, string ssn)
  class ExtensionsForTesting (line 106) | public static class ExtensionsForTesting
    method Dump (line 108) | public static void Dump(this object obj)
    method DumpString (line 113) | public static string DumpString(this object obj)

FILE: Source/Benchmark/BenchGenerate.cs
  class BenchGenerate (line 7) | [MarkdownExporter, MemoryDiagnoser]
    class Project (line 10) | public class Project
    method Setup (line 22) | [GlobalSetup]
    method Generate_Default (line 42) | public void Generate_Default()
    method Generate_CustomInstantiator (line 48) | public void Generate_CustomInstantiator()
    method Generate_WithRules (line 53) | [Benchmark]
    method Generate_WithRulesComplex (line 60) | public void Generate_WithRulesComplex()
    method Constructor (line 66) | public void Constructor()

FILE: Source/Benchmark/BenchRandomSubset.cs
  class BenchRandomSubset (line 9) | [RPlotExporter]
    method Setup (line 18) | [GlobalSetup]
    method PickRandom (line 25) | [Benchmark]
    method ShuffleTake (line 31) | [Benchmark]
    method PickRandom (line 43) | public IEnumerable<T> PickRandom<T>(IEnumerable<T> items, int amountTo...

FILE: Source/Benchmark/BenchSsn.cs
  class BenchSsn (line 6) | [RPlotExporter]
    method Setup (line 11) | [GlobalSetup]
    method SsnAlgo1 (line 17) | [Benchmark]
    method SsnAlgo2 (line 29) | [Benchmark]
    method SsnAlgo3 (line 41) | [Benchmark]

FILE: Source/Benchmark/BenchStringFill.cs
  class BenchStringFill (line 7) | [RPlotExporter]
    method Setup (line 17) | [GlobalSetup]
    method FillWithStringBuilder (line 27) | [Benchmark]
    method FillWithFixedCharArray (line 41) | [Benchmark]

FILE: Source/Benchmark/PR300_BenchDecimal.cs
  class PR300_BenchDecimal (line 9) | [SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net471)]
    method Setup (line 15) | [GlobalSetup]
    method OldMethod (line 21) | [Benchmark]
    method JDGMethod (line 27) | [Benchmark]
    method JDGMethodNoAlloc (line 33) | [Benchmark]
    method JDGMethodNoAllocMult (line 39) | [Benchmark]
  class CustomRandomizer (line 46) | public class CustomRandomizer : Randomizer
    method NumberJDG (line 52) | public int NumberJDG(int min = 0, int max = 1)
    method DecimalJDG (line 70) | public decimal DecimalJDG(decimal min = 0.0m, decimal max = 1.0m)
    method DecimalJDGNoAlloc (line 106) | public decimal DecimalJDGNoAlloc(decimal min = 0.0m, decimal max = 1.0m)
    method DecimalJDGNoAllocMult (line 118) | public decimal DecimalJDGNoAllocMult(decimal min = 0.0m, decimal max =...

FILE: Source/Benchmark/PR300_BenchRandomNumber.cs
  class PR300_BenchRandomNumber (line 9) | [SimpleJob(RuntimeMoniker.NetCoreApp31), SimpleJob(RuntimeMoniker.Net471)]
    method Setup (line 15) | [GlobalSetup]
    method OldMethod (line 21) | [Benchmark]
    method BitShift (line 27) | [Benchmark]
    method JDGMethod (line 33) | [Benchmark]
    method JDGMethod2 (line 39) | [Benchmark]
  class NumberTests (line 46) | public class NumberTests
    method Number (line 54) | public int Number(int min = 0, int max = 1)
    method NumberBitShift (line 65) | public int NumberBitShift(int min = 0, int max = 1)
    method NumberJDG (line 84) | public int NumberJDG(int min = 0, int max = 1)
    method NumberJDG2 (line 114) | public int NumberJDG2(int min = 0, int max = 1)

FILE: Source/Bogus.Tests/BsonTests.cs
  class ExtraStuff (line 11) | public class ExtraStuff : DataSet
    method JunkFood (line 13) | public string JunkFood()
    method Drink (line 18) | public string Drink()
  class BsonTests (line 24) | public class BsonTests : SeededTest, IDisposable
    method BsonTests (line 28) | public BsonTests(ITestOutputHelper console)
    method Dispose (line 33) | public void Dispose()
    method can_add_new_key_to_database (line 39) | [Fact]
    method should_be_able_to_reset_a_locale (line 49) | [Fact]
    method can_patch_an_existing_category (line 66) | [Fact]
    method PatchEnLocaleWithExtraStuff (line 100) | private void PatchEnLocaleWithExtraStuff()
    method CreateExtraData (line 109) | private BObject CreateExtraData()

FILE: Source/Bogus.Tests/CloneTests.cs
  class CloneTests (line 7) | public class CloneTests : SeededTest
    class Order (line 9) | public class Order
    method can_create_a_simple_clone (line 18) | [Fact]
    method clone_has_different_rules (line 38) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/AddressTest.cs
  class AddressTest (line 8) | public class AddressTest : SeededTest
    method AddressTest (line 12) | public AddressTest(ITestOutputHelper console)
    method can_get_a_city_name (line 20) | [Fact]
    method can_get_a_country (line 26) | [Fact]
    method can_get_a_county (line 32) | [Fact]
    method can_get_a_full_address (line 38) | [Fact]
    method can_get_a_full_street_address (line 44) | [Fact]
    method can_get_a_latitude (line 50) | [Fact]
    method can_get_a_longitude (line 56) | [Fact]
    method can_get_a_random_country_code (line 62) | [Fact]
    method can_get_a_random_country_code_alpha3 (line 68) | [Fact]
    method can_get_a_state (line 74) | [Fact]
    method can_get_a_state_abbreviation (line 80) | [Fact]
    method can_get_a_street_address (line 86) | [Fact]
    method can_get_a_street_suffix (line 92) | [Fact]
    method can_get_a_zipcode (line 98) | [Fact]
    method can_get_canadian_zip_code (line 104) | [Fact]
    method can_get_a_city_prefix (line 111) | [Fact]
    method can_get_a_city_suffix (line 117) | [Fact]
    method can_get_a_street_name (line 123) | [Fact]
    method can_get_a_building_number (line 129) | [Fact]
    method locales_with_no_state_should_return_null (line 135) | [Fact]
    method can_generate_a_direction (line 142) | [Fact]
    method can_generate_a_cardinal_direction (line 149) | [Fact]
    method can_generate_an_ordinal_direction (line 156) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/CardTests.cs
  class CardTests (line 6) | public class CardTests : SeededTest
    method should_be_able_to_get_a_contextually_bogus_person (line 8) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/CommerceTest.cs
  class CommerceTest (line 7) | public class CommerceTest : SeededTest
    method CommerceTest (line 9) | public CommerceTest()
    method can_get_a_color (line 16) | [Fact]
    method can_get_a_product (line 22) | [Fact]
    method can_get_a_product_adj (line 28) | [Fact]
    method can_get_a_product_material (line 34) | [Fact]
    method can_get_a_product_name (line 40) | [Fact]
    method can_get_a_product_description (line 46) | [Fact]
    method can_get_categories (line 52) | [Fact]
    method can_get_list_of_departments (line 58) | [Fact]
    method can_get_price (line 64) | [Fact]
    method can_get_ean8_barcode (line 70) | [Fact]
    method can_get_an_ean13_barcode (line 76) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/CompanyTest.cs
  class CompanyTest (line 9) | public class CompanyTest : SeededTest
    method CompanyTest (line 11) | public CompanyTest()
    method can_get_a_catch_phrase (line 18) | [Fact]
    method can_get_a_company_name_with_custom_format (line 24) | [Fact]
    method can_get_company_bs_phrase (line 30) | [Fact]
    method can_get_company_name (line 36) | [Fact]
    method can_get_company_suffix_array (line 42) | [Fact]
    method can_generate_cnpj_for_brazil (line 50) | [Fact]
    method can_generate_cnpj_for_brazil_without_formatting (line 56) | [Fact]
    method can_generate_an_EIN (line 62) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/DatabaseTests.cs
  class DatabaseTests (line 6) | public class DatabaseTests : SeededTest
    method DatabaseTests (line 8) | public DatabaseTests()
    method can_generate_a_column_name (line 15) | [Fact]
    method can_generate_a_type (line 21) | [Fact]
    method can_generate_collation (line 27) | [Fact]
    method can_generate_engine (line 33) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/DateTest.cs
  class DateTest (line 9) | public partial class DateTest : SeededTest
    method DateTest (line 11) | public DateTest()
    method can_get_a_random_month (line 18) | [Fact]
    method can_get_a_random_weekday (line 25) | [Fact]
    method can_get_a_timespan (line 32) | [Fact]
    method can_get_date_in_future (line 43) | [Fact]
    method can_get_date_in_future_with_set_clock (line 53) | [Fact]
    method can_get_dateOffset_in_future (line 64) | [Fact]
    method can_get_dateOffset_in_future_with_set_clock (line 73) | [Fact]
    method can_get_date_in_future_with_options (line 84) | [Fact]
    method can_get_dateOffset_in_future_with_options (line 94) | [Fact]
    method can_get_date_in_past (line 104) | [Fact]
    method can_get_date_in_past_with_set_clock (line 114) | [Fact]
    method can_get_dateOffset_in_past (line 125) | [Fact]
    method can_get_dateOffset_in_past_with_set_clock (line 135) | [Fact]
    method can_get_date_in_past_0_days_results_in_random_time (line 146) | [Fact]
    method can_get_dateOffset_in_past_0_days_results_in_random_time (line 155) | [Fact]
    method can_get_date_in_past_with_custom_options (line 164) | [Fact]
    method can_get_dateOffset_in_past_with_custom_options (line 174) | [Fact]
    method can_get_date_recently_within_the_year (line 184) | [Fact]
    method can_get_date_recently_with_set_clock (line 195) | [Fact]
    method can_get_dateOffset_recently_within_the_year (line 206) | [Fact]
    method can_get_dateOffset_recently_with_set_clock (line 217) | [Fact]
    method can_get_random_time_between_two_dates (line 228) | [Fact]
    method can_get_random_time_between_two_dateOffsets (line 248) | [Fact]
    method get_a_date_that_will_happen_soon (line 268) | [Fact]
    method can_get_date_soon_with_set_clock (line 275) | [Fact]
    method get_a_dateOffsets_that_will_happen_soon (line 286) | [Fact]
    method can_get_dateOffset_soon_with_set_clock (line 293) | [Fact]
    method soon_explicit_refdate_in_utc_should_return_utc_kind (line 304) | [Fact]
    method soon_explicit_refdate_offset_should_return_explicit_offset (line 321) | [Fact]
    method recent_explicit_refdate_in_utc_should_return_utc_kind (line 338) | [Fact]
    method recent_explicit_refdate_offset_should_return_explicit_offset (line 355) | [Fact]
    method between_explicit_refdate_in_utc_should_return_utc_kind (line 372) | [Fact]
    method between_explicit_start_offset_should_return_explicit_offset (line 389) | [Fact]
    method can_set_global_static_time_source (line 407) | [Fact]
    method use_dataset_localclock_date_if_set (line 437) | [Fact]
    method use_now_param_over_localclock_date (line 450) | [Fact]
    method can_get_timezone_string (line 464) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/DateTest.net60.cs
  class DateTest (line 9) | public partial class DateTest
    method can_get_dateonly_in_past (line 12) | [Fact]
    method can_get_dateonly_in_past_with_set_clock (line 22) | [Fact]
    method can_get_dateonly_in_past_with_custom_options (line 33) | [Fact]
    method get_a_dateonly_that_will_happen_soon (line 44) | [Fact]
    method can_get_dateonly_that_will_happen_soon_with_set_clock (line 55) | [Fact]
    method can_get_dateonly_in_future (line 66) | [Fact]
    method can_get_dateonly_in_future_with_set_clock (line 76) | [Fact]
    method can_get_dateonly_in_future_with_options (line 87) | [Fact]
    method can_get_random_dateonly_between_two_dates (line 97) | [Fact]
    method can_get_dateonly_recently_within_the_year (line 112) | [Fact]
    method can_get_dateonly_recently_within_the_year_with_set_clock (line 123) | [Fact]
    method can_get_random_timeonly_between_two_times_basic (line 135) | [Fact]
    method can_get_random_timeonly_between_two_times_wrap_around (line 148) | [Fact]
    method can_get_a_timeonly_that_will_happen_soon (line 162) | [Fact]
    method can_get_a_timeonly_that_will_happen_soon_with_set_clock (line 173) | [Fact]
    method can_get_a_timeonly_that_happened_recently (line 185) | [Fact]
    method can_get_a_timeonly_that_happened_recently_with_set_clock (line 195) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/FinanceTest.cs
  class FinanceTest (line 10) | public class FinanceTest : SeededTest
    method FinanceTest (line 12) | public FinanceTest()
    method can_get_a_random_account_default (line 19) | [Fact]
    method can_get_a_random_account_12 (line 25) | [Fact]
    method can_get_a_random_account_name (line 31) | [Fact]
    method can_generate_a_random_bitcoin_address (line 37) | [Fact]
    method can_generate_a_random_ethereum_address (line 45) | [Fact]
    method can_generate_a_random_litecoin_address (line 51) | [Fact]
    method can_generate_aba_routing_number (line 57) | [Fact]
    method can_generate_bic (line 63) | [Fact]
    method can_generate_iban (line 69) | [Fact]
    method can_generate_iban2 (line 77) | [Fact]
    method iban_throws_key_not_found_on_invalid_iso3166 (line 84) | [Fact]
    method iban_thows_on_invalid_iso3166_length (line 91) | [Fact]
    method can_get_random_currency (line 98) | [Fact]
    method get_random_amount (line 108) | [Fact]
    method get_random_amount_with_options (line 114) | [Fact]
    method get_random_amount_with_zero_decimals (line 128) | [Fact]
    method should_be_able_to_get_a_transaction_type (line 134) | [Fact]
    method can_get_random_credit_card_number (line 140) | [Fact]
    method can_get_random_credit_card_cvv (line 181) | [Fact]
    method Luhn (line 187) | private static bool Luhn(string digits)

FILE: Source/Bogus.Tests/DataSetTests/HackerTests.cs
  class HackerTests (line 7) | public class HackerTests : SeededTest
    method HackerTests (line 9) | public HackerTests()
    method can_get_a_hacker_phrase (line 16) | [Fact]
    method make_sure_we_have_updated_ru_hacker_locale (line 22) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/ImageTest.cs
  class ImageTest (line 9) | public class ImageTest : SeededTest
    method ImageTest (line 13) | public ImageTest(ITestOutputHelper console)
    method svg_data_url (line 21) | [Fact]
    method url_generated_should_have_https (line 49) | [Fact]
    method can_use_picsum_Url (line 55) | [Fact]
    method can_use_placeholder_url (line 65) | [Fact]
    method can_use_loremflickr (line 75) | [Fact]
    method can_use_placeimg_url (line 104) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/InternetTests.cs
  class InternetTests (line 14) | public class InternetTests : SeededTest
    method InternetTests (line 18) | public InternetTests(ITestOutputHelper console)
    method can_generate_a_password (line 26) | [Fact]
    method can_generate_an_example_email (line 36) | [Fact]
    method can_generate_mac_address (line 45) | [Fact]
    method can_generate_mac_address_with_separator (line 51) | [Fact]
    method can_get_a_domain_name (line 57) | [Fact]
    method can_get_a_domain_suffix (line 63) | [Fact]
    method can_get_a_random_ip_address (line 69) | [Fact]
    method can_get_a_random_ipv6_address (line 75) | [Fact]
    method can_get_a_urlpath_with_a_specific_domain (line 81) | [Fact]
    method can_get_an_email (line 87) | [Fact]
    method can_get_an_username (line 95) | [Fact]
    method can_get_avatar (line 103) | [Fact]
    method can_get_html_color (line 111) | [Fact]
    method can_get_color_in_format (line 117) | [Fact]
    method can_get_color_in_delimited_format (line 123) | [Fact]
    method can_get_color_in_grayscale (line 129) | [Fact]
    method can_get_url_with_path (line 135) | [Fact]
    method can_gets_a_domain_word (line 142) | [Fact]
    method can_make_email_with_custom_options (line 148) | [Fact]
    method can_pick_random_browser (line 160) | [Fact]
    method can_get_username_with_unicode_characters (line 175) | [Theory]
    method can_generate_random_port_number (line 185) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/LoremTests.cs
  class LoremTests (line 10) | public class LoremTests : SeededTest
    method LoremTests (line 14) | public LoremTests(ITestOutputHelper console)
    method can_get_3_words (line 22) | [Fact]
    method can_get_5_words (line 37) | [Fact]
    method can_get_a_paragraph (line 56) | [Fact]
    method paragraph_with_zero_sentences (line 63) | [Fact]
    method can_get_a_random_word (line 75) | [Fact]
    method can_get_a_sentence (line 83) | [Fact]
    method can_get_a_sentence_with_options (line 89) | [Fact]
    method can_get_a_sentences_with_range_option (line 95) | [Fact]
    method can_get_paragraphs (line 101) | [Fact]
    method can_get_random_number_of_paragraphs (line 108) | [Fact]
    method check_separator_works (line 122) | [Fact]
    method can_get_some_letters (line 134) | [Fact]
    method can_get_some_lorem_lines (line 146) | [Fact]
    method can_get_some_lorem_text (line 152) | [Fact]
    method can_slugify_lorem (line 158) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/MusicTests.cs
  class MusicTests (line 8) | public class MusicTests : SeededTest
    method MusicTests (line 13) | public MusicTests(ITestOutputHelper console)
    method can_generate_genre (line 19) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/NameTests.cs
  class NameTests (line 7) | public class NameTests : SeededTest
    method NameTests (line 9) | public NameTests()
    method can_get_first_name (line 16) | [Fact]
    method can_get_female_first_name (line 22) | [Fact]
    method can_get_male_first_name (line 28) | [Fact]
    method can_get_first_name_when_locale_dataset_is_split_in_male_female (line 34) | [Fact]
    method can_get_last_name (line 42) | [Fact]
    method can_get_last_name_when_locale_dataset_is_split_in_male_female (line 48) | [Fact]
    method can_get_prefix (line 56) | [Fact]
    method can_get_suffix (line 62) | [Fact]
    method should_be_able_to_get_any_full_name (line 68) | [Fact]
    method should_be_able_to_get_any_name_with_options (line 76) | [Fact]
    method should_be_able_to_get_job_area (line 95) | [Fact]
    method should_be_able_to_get_job_description (line 101) | [Fact]
    method should_be_able_to_get_job_title (line 107) | [Fact]
    method should_be_able_to_get_job_type (line 113) | [Fact]
    method should_be_able_to_get_locale_full_name (line 119) | [Fact]
    method switch_locale_syntax (line 126) | [Fact]
    method can_get_a_full_name (line 136) | [Fact]
    method full_name_component_genders_should_match (line 142) | [Fact]
    method locales_with_empty_array_suffix_should_be_null (line 152) | [Fact]
    method locales_that_dont_support_gender_first_names_should_return_generic (line 163) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/PhoneNumbersTest.cs
  class PhoneNumbersTest (line 7) | public class PhoneNumbersTest : SeededTest
    method PhoneNumbersTest (line 9) | public PhoneNumbersTest()
    method can_get_phone_number (line 16) | [Fact]
    method can_get_phone_number_of_specific_format (line 23) | [Fact]
    method can_get_phone_number_via_formats_index (line 30) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/RantTests.cs
  class RantTests (line 6) | public class RantTests : SeededTest
    method RantTests (line 8) | public RantTests()
    method can_get_an_array_of_reviews (line 15) | [Fact]
    method can_get_random_product_review (line 30) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/SystemTest.cs
  class SystemTest (line 10) | public class SystemTest : SeededTest
    method SystemTest (line 12) | public SystemTest()
    method can_generate_random_semver (line 19) | [Fact]
    method can_get_a_few_common_file_exts (line 28) | [Fact]
    method can_get_a_random_exception (line 36) | [Fact]
    method can_get_a_random_extension_of_an_unknown_mimetype (line 48) | [Fact]
    method can_get_a_random_system_version (line 56) | [Fact]
    method can_get_random_file_type (line 67) | [Fact]
    method can_get_some_random_mime_types (line 75) | [Fact]
    method can_get_some_common_file_types (line 83) | [Fact]
    method can_get_some_common_random_file_names (line 91) | [Fact]
    method can_get_some_random_extensions (line 99) | [Fact]
    method can_get_some_random_file_names (line 108) | [Fact]
    method merge_test (line 116) | [Fact]
    method can_get_directory_path_unix (line 125) | [Fact]
    method can_get_file_path_unix (line 131) | [Fact]
    method can_get_an_android_id (line 137) | [Fact]
    method can_get_an_apple_push_token (line 143) | [Fact]
    method can_get_a_black_berry_pin (line 149) | [Fact]

FILE: Source/Bogus.Tests/DataSetTests/VehicleTest.cs
  class VehicleTest (line 7) | public class VehicleTest : SeededTest
    method VehicleTest (line 11) | public VehicleTest()
    method can_get_a_vin_number (line 16) | [Fact]
    method cannot_return_vin_bigger_than_17_chars (line 22) | [Fact]
    method can_get_a_strict_vin_number (line 29) | [Fact]
    method can_get_a_manufacture (line 35) | [Fact]
    method can_get_a_model (line 41) | [Fact]
    method can_get_a_type (line 47) | [Fact]
    method can_get_a_fuel (line 53) | [Fact]

FILE: Source/Bogus.Tests/DistributionTests/GaussianTests.cs
  class GaussianTests (line 9) | public class GaussianTests : SeededTest
    method GaussianTests (line 15) | public GaussianTests(ITestOutputHelper console)
    method generated_doubles_should_match_specified_parameters (line 29) | [Fact]
    method generated_decimals_should_match_specified_parameters (line 75) | [Fact]
    method generated_ints_should_match_specified_parameters (line 121) | [Fact]
    method generated_floats_should_match_specified_parameters (line 168) | [Fact]

FILE: Source/Bogus.Tests/ExtensionTests/BelgianExtensionTests.cs
  class BelgianExtensionTests (line 10) | public class BelgianExtensionTests : SeededTest
    method BelgianExtensionTests (line 15) | public BelgianExtensionTests(ITestOutputHelper console)
    method can_generate_national_number_for_belgium (line 21) | [Fact]
    method excludes_formatting_national_number (line 36) | [Fact]
    method includes_formatting_national_number (line 43) | [Fact]
    method checksum_is_zero_padded (line 50) | [Theory]
    method ShouldHaveCorrectChecksum (line 64) | private void ShouldHaveCorrectChecksum(string candidate)
    method ShouldBeLegalBelgianNationalNumber (line 79) | private void ShouldBeLegalBelgianNationalNumber(string candidate)
    method ShouldBeCorrectGenderCode (line 91) | private void ShouldBeCorrectGenderCode(Name.Gender gender, string cand...

FILE: Source/Bogus.Tests/ExtensionTests/DanishExtentionTest.cs
  class DanishExtensionTest (line 9) | public class DanishExtensionTest : SeededTest
    method DanishExtensionTest (line 13) | public DanishExtensionTest()
    method can_generate_cpr_number_for_denmark (line 18) | [Fact]
    method excludes_dash_cpr_number (line 32) | [Fact]
    method is_valid_danish_cpr_number (line 39) | [Theory]
    method is_invalid_danish_cpr_number (line 57) | [Theory]
    method can_generate_valid_danish_cpr_numbers (line 75) | [Theory]
    method ShouldHaveCorrectChecksum (line 106) | private void ShouldHaveCorrectChecksum(string candidate)
    method ShouldBeLegalDanishCprNumber (line 120) | private void ShouldBeLegalDanishCprNumber(string candidate)
    method ShouldBeCorrectGenderCode (line 136) | private void ShouldBeCorrectGenderCode(Name.Gender gender, string cand...

FILE: Source/Bogus.Tests/ExtensionTests/ExtensionTest.cs
  class ExtensionTest (line 12) | public class ExtensionTest : SeededTest
    method can_create_sortcode (line 14) | [Fact]
    method can_create_nino (line 22) | [Fact]
    method can_create_separated_nino (line 31) | [Fact]
    method can_create_codice_fiscale (line 40) | [Fact]
    method codice_fiscale_is_16_chars_long (line 48) | [Fact]
    method codice_fiscale_generated_twice_are_equal (line 59) | [Fact]
    method codice_fiscale_day_part_is_birthday_plus_40_for_females (line 71) | [Fact]
    method codice_fiscale_day_part_is_birthday_for_males (line 86) | [Fact]
    method codice_fiscale_is_case_insensitive (line 101) | [Fact]
    method double_names_are_correctly_squeezed (line 117) | [Fact]
    method more_than_three_consonants_in_first_name_are_squeezed (line 130) | [Fact]
    method more_than_three_consonants_in_last_name_are_squeezed (line 143) | [Fact]
    method names_starting_with_vowel_are_squeezed (line 156) | [Fact]
    method names_with_apostrophe_are_squeezed (line 169) | [Fact]
    method names_with_symbols_are_squeezed (line 182) | [Fact]
    method names_with_one_consonant_are_squeezed (line 195) | [Fact]
    method names_with_three_consonants_are_squeezed (line 208) | [Fact]
    method names_with_two_consonants_are_squeezed (line 221) | [Fact]
    method names_with_two_letters_are_squeezed (line 234) | [Fact]
    method codice_fiscale_can_be_computed_from_finance_class (line 247) | [Fact]
    method nif_generator_for_person (line 256) | [Fact]
    method nif_generator_for_company (line 271) | [Fact]
    method cnp_generator_for_person (line 286) | [Fact]

FILE: Source/Bogus.Tests/ExtensionTests/IranianExtensionTests.cs
  class IranianExtensionTests (line 8) | public class IranianExtensionTests : SeededTest
    method can_create_valid_iranian_national_number (line 10) | [Fact]
    method iranian_national_number_generated_twice_are_equal (line 24) | [Fact]
    method iranian_national_number_should_be_different_for_different_persons (line 39) | [Fact]
    method ValidateIranianNationalNumber (line 62) | private static bool ValidateIranianNationalNumber(string nationalNumber)

FILE: Source/Bogus.Tests/ExtensionTests/NorwegianExtensionTest.cs
  class NorwegianExtensionTest (line 8) | public class NorwegianExtensionTest : SeededTest
    method IsLegalIndividualNumber (line 10) | private void IsLegalIndividualNumber(int readIndNo, int birthYear, Per...
    method IsLegalChecksum (line 44) | private void IsLegalChecksum(string readFødselsnummer)
    method IsLegalFødselsnummer (line 74) | private void IsLegalFødselsnummer(string readFødselsnummer, Person p)
    method can_create_norwegian_fødselsnummer (line 85) | [Fact]
    method can_create_correct_checksum_1 (line 96) | [Fact]
    method can_create_correct_checksum_2 (line 103) | [Fact]

FILE: Source/Bogus.Tests/ExtensionTests/PolishExtensionTest.cs
  class PolishExtensionTest (line 15) | public class PolishExtensionTest : SeededTest
    method PeselWhenPersonIsMaleSecondLastNumberIsOdd (line 17) | [Fact]
    method PeselTest (line 31) | [Fact]
    method NipTest (line 51) | [Fact]
    method Regon9Test (line 68) | [Fact]
    method Regon14Test (line 84) | [Fact]

FILE: Source/Bogus.Tests/ExtensionTests/RegistrationPlateExtensionsForGreatBritainTests.cs
  class RegistrationPlateExtensionsForGreatBritainTests (line 11) | public class RegistrationPlateExtensionsForGreatBritainTests : SeededTest
    method RegistrationPlateExtensionsForGreatBritainTests (line 15) | public RegistrationPlateExtensionsForGreatBritainTests(ITestOutputHelp...
    method reject_registration_date_before_current_style (line 20) | [Fact]
    method reject_registration_date_after_current_style (line 31) | [Fact]
    method date_expressed_wrong_way_around_still_works (line 41) | [Fact]
    method early_part_of_year_is_has_age_holdover_from_previous_year (line 49) | [Fact]
    method mid_part_of_year_is_has_age_equivalent_to_two_digit_year (line 57) | [Fact]
    method end_part_of_year_is_has_age_equivalent_to_two_digit_year_offset_by_fifty (line 65) | [Fact]
    method new_licence_plate_on_each_generate (line 73) | [Fact]
    method edinburgh_mid2007_plates_have_exception_applied_to_them (line 86) | [Fact]
    method export_plates_have_pseudo_location_marker_based_on_registration_date (line 95) | [Theory]

FILE: Source/Bogus.Tests/ExtensionTests/SwedishExtensionTest.cs
  class SwedishExtensionTest (line 10) | public class SwedishExtensionTest : SeededTest
    method can_create_valid_swedish_personnummer (line 12) | [Fact]
    method can_create_valid_swedish_samordningsnummer (line 23) | [Fact]
    method personnummer_should_contain_valid_date_of_birth (line 34) | [Fact]
    method samordningsnummer_should_contain_offset_date_of_birth (line 47) | [Fact]
    method when_person_is_male_second_last_number_is_odd (line 60) | [Theory]
    method when_person_is_female_second_last_number_is_even (line 79) | [Theory]
    method CheckLuhn (line 98) | private static bool CheckLuhn(string digits)
    method ExtractDateParts (line 110) | private static (int year, int month, int day) ExtractDateParts(string ...

FILE: Source/Bogus.Tests/ExtensionsForTesting.cs
  class ExtensionsForTesting (line 7) | public static class ExtensionsForTesting
    method Dump (line 9) | public static void Dump(this object obj)
    method DumpString (line 14) | public static string DumpString(this object obj)
    method Dump (line 19) | public static void Dump(this ITestOutputHelper console, object obj)

FILE: Source/Bogus.Tests/FluentTests.cs
  class Examples (line 12) | public class Examples : SeededTest
    method Examples (line 16) | public Examples(ITestOutputHelper console)
    method TestAPIDesign (line 21) | [Fact]
    method Without_Fluent_Syntax (line 84) | [Fact]
    method With_Faker_Facade (line 100) | [Fact]
    class OrderFaker (line 115) | public class OrderFaker : Faker<Order>
      method OrderFaker (line 117) | public OrderFaker() : base("en")
    method Using_FakerT_Inheritance (line 125) | [Fact]
    method With_Korean_Locale (line 133) | [Fact]
    method Create_Context_Related_Person (line 140) | [Fact]
    method Create_an_SSN (line 148) | [Fact]
    method Handlebar (line 159) | [Fact]
    method TestIgnore (line 167) | [Fact]
    method Can_Define_Rule_By_Type (line 185) | [Fact]
    method Should_Throw_Exception_If_RuleForType_Types_Dont_Match (line 203) | [Fact]
    method implicit_operator_test (line 215) | [Fact]
    method can_clamp_string_length (line 245) | [Fact]
    class Issue47 (line 256) | public class Issue47
    class Order (line 266) | public class Order
    type Gender (line 274) | public enum Gender
    class User (line 280) | public class User
      method User (line 282) | public User(int userId, string ssn)
    method just_want_to_set_a_value (line 305) | [Fact]
    method create_rules_for_an_object_the_easy_way (line 316) | [Fact]
    method can_create_rule_for_object_multiple_times (line 334) | [Fact]
    type Colors (line 352) | public enum Colors
    method pick_random_exclude (line 359) | [Fact]
    method pick_a_random_enum_only_from_the_param_list (line 367) | [Fact]
    method can_pick_a_random_item_from_parameter_list (line 375) | [Fact]
    method can_pick_a_random_item_from_parameter_list2 (line 383) | [Fact]
    method can_pick_a_random_number_int32array (line 391) | [Fact]
    method can_pick_random_item_of_linq_of_things (line 400) | [Fact]
    method can_generate_forever (line 409) | [Fact]
    class Order2 (line 429) | public class Order2
    method can_set_local_time_anchor (line 435) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue10.cs
  class Issue10 (line 9) | public class Issue10 : SeededTest
    class Bar (line 11) | public class Bar
    method issue_10_should_be_able_to_fake_fields (line 19) | [Fact]
    method issue_12_bogus_should_be_thread_safe (line 40) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue100.cs
  class Issue100 (line 10) | public class Issue100 : SeededTest
    method Issue100 (line 14) | public Issue100(ITestOutputHelper console)
    method dataset_test (line 19) | [Fact]
    method faker_test (line 39) | [Fact]
    method randomizer_twice (line 59) | [Fact]
    method faker_test_2 (line 73) | [Fact]
    method simple_faker_t_test (line 90) | [Fact]
    method complex_faker_t_test (line 108) | [Fact]
    method sequence_generate_list_of_4_vs_generate_4_times_should_produce_same_content (line 146) | [Fact]
    method parallel_determinism (line 177) | [Fact]
    method CheckSequence (line 199) | private void CheckSequence(Examples.Order[] items)

FILE: Source/Bogus.Tests/GitHubIssues/Issue102.cs
  class Issue102 (line 6) | public class Issue102 : SeededTest
    method deterministic_uuid_using_global_seed (line 8) | [Fact]
    method deterministic_uuid_using_local_seed (line 20) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue104.cs
  class Issue104 (line 10) | public class Issue104 : SeededTest
    method Issue104 (line 14) | public Issue104(ITestOutputHelper console)
    class Order2 (line 19) | public class Order2 : Order
    method without_derived_faker (line 24) | [Fact]
    method adding_new_property_should_not_change_subsequent_items (line 65) | [Fact]
    method CheckSequence (line 89) | void CheckSequence(IEnumerable<Order> orders)
  class CustomFaker (line 98) | public class CustomFaker<T> : Faker<T> where T : class
    method PopulateInternal (line 101) | protected override void PopulateInternal(T instance, string[] ruleSets)

FILE: Source/Bogus.Tests/GitHubIssues/Issue114.cs
  class Issue114 (line 8) | public class Issue114 : SeededTest
    method should_be_able_to_get_an_obfuscated_credit_card_number (line 10) | [Fact]
    method cn_get_last_for_credit_card_digits (line 17) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue115.cs
  class Issue115 (line 9) | public class Issue115 : SeededTest
    method Issue115 (line 13) | public Issue115(ITestOutputHelper console)
    class Customer (line 18) | public class Customer
    method should_throw_with_nested_expression (line 25) | [Fact]
    method calling_finish_with_twice_is_okay (line 35) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue121.cs
  class Issue121 (line 8) | public class Issue121 : SeededTest
    method Issue121 (line 12) | public Issue121(ITestOutputHelper console)
    class TestObject (line 16) | public class TestObject
    method Test (line 22) | [Fact(Skip = "Their example")]
    method github_issue121_workaround (line 42) | [Fact]
    method last_call_ignoring_a_prop_should_be_ignored (line 67) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue124.cs
  class Issue124 (line 11) | public class Issue124 : SeededTest
    method Issue124 (line 15) | public Issue124(ITestOutputHelper console)
    method test_nullable (line 20) | [Fact]
    method test_nullable_struct (line 35) | [Fact]
    method test_null_reference_type (line 52) | [Fact]
    method test_null_reference_type_between_fakers (line 69) | [Fact]
    method test_deterministic_or_null (line 93) | [Fact]
    method nullable_int_and_nullable_reference_type (line 123) | [Fact]
    class Foo (line 162) | public class Foo
    class Bar (line 168) | public class Bar
    class Qux (line 174) | public class Qux
  class Person (line 183) | public class Person
  class ObjectExtensions (line 189) | public static class ObjectExtensions
    method NullableUuid (line 191) | public static Guid? NullableUuid(this Randomizer r)

FILE: Source/Bogus.Tests/GitHubIssues/Issue126.cs
  class Issue126 (line 10) | public class Issue126 : SeededTest
    method Issue126 (line 14) | public Issue126(ITestOutputHelper console)
    class CustomFaker (line 19) | public class CustomFaker<T> : Faker<T> where T : class
      method Generate (line 21) | public List<T> Generate(int min, int max, string ruleSets = null)
    method can_generate_random_amount_by_derived_faker (line 28) | [Fact]
    method can_generate_random_amount_with_extension_methods (line 42) | [Fact]
    method can_generate_random_amount_with_builtin_generate_between_extension_method (line 55) | [Fact]
  class ExtensionsForFakerT (line 69) | public static class ExtensionsForFakerT
    method Generate (line 71) | public static List<T> Generate<T>(this Faker<T> faker, int min, int ma...

FILE: Source/Bogus.Tests/GitHubIssues/Issue13.cs
  class Issue13 (line 7) | public class Issue13 : SeededTest
    class ReadOnly (line 9) | public class ReadOnly
    method issue_13_readonly_property (line 16) | [Fact]
    method issue_13_with_model (line 27) | [Fact]
    class TestObject (line 58) | public class TestObject

FILE: Source/Bogus.Tests/GitHubIssues/Issue132.cs
  class Issue132 (line 10) | public class Issue132 : SeededTest
    method should_throw_exception_on_invalid_locale_dataset (line 12) | [Fact]
    method should_throw_exception_on_invalid_locale_with_faker_t (line 19) | [Fact]
    method should_throw_exception_on_invalid_locate_with_faker (line 27) | [Fact]
    method ensure_the_project_url_exists (line 35) | [Fact]
    method fr_locale (line 51) | [Fact]
    method nb_NO_locale (line 64) | [Fact]
    method id_ID_locale (line 89) | [Fact]
    method ne_locale (line 101) | [Fact]
    method ge_locale (line 113) | [Fact]
    method ind_locale (line 125) | [Fact]
    method cz_locale (line 133) | [Fact]
    method en_US_locale (line 145) | [Fact]
    method de_locale (line 153) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue134.cs
  class Issue134 (line 9) | public class Issue134 : SeededTest
    method can_make_rules_from_string (line 11) | [Fact]
  class Foo (line 31) | public class Foo
  class HandlebarFaker (line 38) | public class HandlebarFaker<T> : Faker<T> where T : class
    method LoadRulesFromString (line 40) | public HandlebarFaker<T> LoadRulesFromString(string rules)

FILE: Source/Bogus.Tests/GitHubIssues/Issue143.cs
  class Issue143 (line 8) | public class Issue143 : SeededTest
    method Issue143 (line 12) | public Issue143(ITestOutputHelper console)
    method RunAnotherPrecedingFaker (line 17) | private void RunAnotherPrecedingFaker()
    method IndexGlobal_should_be_incremented_when_CustomInstantiator_is_only_used (line 28) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue152.cs
  class Issue152 (line 6) | public class Issue152 : SeededTest
    method make_unique_email_easier_to_generate (line 8) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue168.cs
  class Issue168 (line 6) | public class Issue168 : SeededTest
    method make_sure_person_card_has_a_state (line 8) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue169.cs
  class Issue169 (line 6) | public class Issue169 : SeededTest
    method date_weekday_should_generate_a_weekday (line 8) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue178.cs
  class Issue178 (line 8) | public class Issue178 : SeededTest
    method weighted_null_check (line 10) | [Fact]
    method weighted_default_check (line 27) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue179.cs
  class Issue179 (line 8) | public class Issue179 : SeededTest
    method Issue179 (line 12) | public Issue179(ITestOutputHelper console)
    method should_be_able_to_set_non_public_members_of_T (line 17) | [Fact]
    method can_set_members_on_internal_class (line 37) | [Fact]
  class Buz (line 57) | public class Buz
  class Box (line 66) | internal class Box

FILE: Source/Bogus.Tests/GitHubIssues/Issue192.cs
  class Issue192 (line 6) | public class Issue192 : SeededTest
    method no_company_suffix_should_not_throw (line 9) | [Fact]
    method company_name_should_work_in_az (line 17) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue193.cs
  class Issue193 (line 7) | public class Issue193 : SeededTest
    method tr_locale_should_have_real_state_name (line 9) | [Fact]
    method can_extend_address_with_my_own_iso3166tr (line 17) | [Fact]
  class ExtensionsForTrLocale (line 28) | public static class ExtensionsForTrLocale
    method StateIso3166 (line 115) | public static (string Code, string Name) StateIso3166(this Address add...

FILE: Source/Bogus.Tests/GitHubIssues/Issue218.cs
  class Issue218 (line 8) | public class Issue218 : SeededTest
    method global_strict_mode_should_throw_on_incomplete_rules (line 10) | [Fact]
    method local_struct_mode_faker_t_scope_should_throw_on_incomplete_rules (line 25) | [Fact]
    method local_strict_mode_should_take_precedence_always (line 40) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue225.cs
  class Issue225 (line 8) | public class Issue225 : SeededTest
    method can_generate_sane_email_addresses_in_different_locales (line 10) | [Fact]
    method can_generate_sane_email_address_from_ru (line 18) | [Fact]
    method can_generate_email_without_transliteration (line 25) | [Fact]
    method simple_translation (line 32) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue23.cs
  class Issue23 (line 6) | public class Issue23 : SeededTest
    class TestClass (line 8) | public class TestClass
    method issue_23_should_be_able_to_generate_random_word_without_exception (line 13) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue232.cs
  class Issue232 (line 10) | public class Issue232 : SeededTest
    method Issue232 (line 14) | public Issue232(ITestOutputHelper console)
    method default_value_checks (line 19) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue249.cs
  class Issue249 (line 7) | public class Issue249 : SeededTest
    class UrlModel (line 9) | public class UrlModel
    method should_have_valid_url_for_pt_BR (line 17) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue253.cs
  class Issue253 (line 8) | public class Issue253 : SeededTest
    method can_use_advanced_namespace_rulefor_string (line 10) | [Fact]
    method rulefor_a_field_that_doesnt_exist_throws (line 25) | [Fact]
    method ignoring_a_field_that_doesnt_exist_throws (line 40) | [Fact]
    method should_be_able_to_use_rulefor_with_typeT (line 60) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue255.cs
  class Issue255 (line 7) | public class Issue255 : SeededTest
    type IParent (line 9) | private interface IParent
    type IChild (line 14) | private interface IChild : IParent
    class ChildWithExplicitInterface (line 19) | private class ChildWithExplicitInterface : IChild
    method explicit_interface_properties_in_parent_interfaces (line 25) | [Fact]
    method explicit_interface_properties_in_child_interfaces (line 36) | [Fact]
    method explicit_interface_properties_in_child_interfaces_should_throw_when_strictmode_true (line 47) | [Fact]
    method explicit_interface_properties_in_child_interfaces_should_throw_when_strictmode_true2 (line 59) | [Fact]
    class ChildWithNormalInterface (line 71) | public class ChildWithNormalInterface : IChild
    method regular_interface_properties_in_parent (line 77) | [Fact]
    type IParent2 (line 91) | private interface IParent2
    class ChildWithMixedInterface (line 96) | public class ChildWithMixedInterface : IChild, IParent2
    method strictmode_only_sees_ichild (line 103) | [Fact]
    method strictmode_only_sees_iparent2 (line 117) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue260.cs
  class Issue260 (line 7) | public class Issue260 : SeededTest
    method Issue260 (line 11) | public Issue260(ITestOutputHelper console)
    method fast_algo3_test (line 16) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue271.cs
  class Issue271 (line 7) | public class Issue271 : SeededTest
    method brazil_cpf_format_parameter_should_respect_person_context (line 9) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue279.cs
  class Issue279 (line 16) | public class Issue279 : SeededTest
    class Bar (line 18) | public class Bar
    method last_rule_defined_for_a_property_wins (line 25) | [Fact]
    method modifying_rules_from_initial_order_can_affect_other_initial_rules_too (line 74) | [Fact]
    method redefine_ordering_other_than_initial_order_of_faker_t_rules_throws_by_default (line 100) | [Fact]
    method allow_redefine_ordering_of_faker_t_rules_using_derived_faker_t (line 128) | [Fact]
    method ReverseString (line 157) | private string ReverseString(string value)
    class ReorderFaker (line 162) | public class ReorderFaker<T> : Faker<T> where T : class
      method Reorder (line 169) | public ReorderFaker<T> Reorder()
      method AddRule (line 178) | protected override Faker<T> AddRule(string propertyOrField, Func<Fak...
      method AddOrderedRule (line 204) | public static void AddOrderedRule(Dictionary<string, OrderedDictiona...
      method PopulateInternal (line 220) | protected override void PopulateInternal(T instance, string[] ruleSets)
      method LoadRulesInNewOrder (line 231) | public ReorderFaker<T> LoadRulesInNewOrder()
  class ExtensionsForMultiDictionary (line 274) | public static class ExtensionsForMultiDictionary
    method Clone (line 276) | public static MultiDictionary<T, U, V> Clone<T, U, V>(this MultiDictio...

FILE: Source/Bogus.Tests/GitHubIssues/Issue280.cs
  class Issue280 (line 9) | public class Issue280 : SeededTest
    class Foo (line 11) | public class Foo
    method automatic_type_conversion_fails_by_default (line 18) | [Fact]
    method custom_faker_with_automatic_conversion_does_not_throw (line 31) | [Fact]
    class MagicFaker (line 46) | public class MagicFaker<T> : Faker<T> where T : class
      method AddRule (line 48) | protected override Faker<T> AddRule(string propertyOrField, Func<Fak...
      method ConvertValue (line 58) | private object ConvertValue(string propertyOrField, object initialVa...

FILE: Source/Bogus.Tests/GitHubIssues/Issue309.cs
  class Issue309 (line 10) | public class Issue309 : SeededTest
    method Issue309 (line 14) | public Issue309(ITestOutputHelper console)
    method ruleforlist_addrange (line 19) | [Fact]
    class Hobby (line 46) | public class Hobby
    class User (line 51) | public class User
  class ExtensionsForIssue309 (line 59) | public static class ExtensionsForIssue309
    method RuleForList (line 61) | public static Faker<T> RuleForList<T, U>(this Faker<T> fakerT, Express...

FILE: Source/Bogus.Tests/GitHubIssues/Issue313.cs
  class Issue313 (line 7) | public class Issue313 : SeededTest
    method can_create_custom_credit_card_number_PAN (line 9) | [Fact]
    method Visa16Digit (line 19) | public static string Visa16Digit(Faker f)

FILE: Source/Bogus.Tests/GitHubIssues/Issue318.cs
  class Issue318 (line 7) | public class Issue318 : SeededTest
    method can_get_country_of_uk (line 9) | [Fact]
    method can_get_country_of_uk_without_locale_specified (line 17) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue319.cs
  class Issue319 (line 8) | public class Issue319 : SeededTest
    method can_generate_decimal_edge_case (line 10) | [Fact]
    method decimal2_should_throw_on_edge_case (line 25) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue321.cs
  class Issue321 (line 8) | public class Issue321 : SeededTest
    method Issue321 (line 12) | public Issue321(ITestOutputHelper console)
    method reuse_data_from_custom_instantiator (line 17) | [Fact]
    method CreateAppUser (line 53) | private AppUser CreateAppUser(string email)
    class AppUser (line 58) | public class AppUser
      method AppUser (line 60) | public AppUser(string email)
    class Union (line 71) | public class Union
      method Union (line 73) | public Union(string description)
    class Member (line 84) | public class Member
      method Member (line 98) | public Member(

FILE: Source/Bogus.Tests/GitHubIssues/Issue328.cs
  class Issue328 (line 8) | public class Issue328 : SeededTest
    method can_use_pt_br_locale_address_city_without_exception_thrown (line 10) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue342.cs
  class Issue342 (line 8) | public class Issue342 : SeededTest
    method more_realistic_pt_BR_city_name (line 10) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue355.cs
  class Issue355 (line 7) | public class Issue355 : SeededTest
    method pt_BR_has_gendered_names (line 9) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue389.cs
  class Issue389 (line 6) | public class Issue389
    method property_with_private_setter_in_base_class_is_assigned (line 8) | [Fact]
    class FooBase (line 20) | public class FooBase
    class Foo (line 25) | public class Foo : FooBase
    class Zoo (line 30) | public class Zoo : Foo
    method property_with_private_setter_inheritance_chain_is_assigned (line 35) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue411.cs
  class Issue411 (line 8) | public class Issue411
    method randomizer_uses_custom_PRNG (line 10) | [Fact]
    class CustomRandom (line 24) | private class CustomRandom : Random
      method Next (line 29) | public override int Next()
      method Next (line 39) | public override int Next(int minValue, int maxValue) => Next() % (ma...
      method NextBytes (line 40) | public override void NextBytes(byte[] buffer) => throw new NotImplem...
      method NextDouble (line 41) | public override double NextDouble() => throw new NotImplementedExcep...
    class CustomRandomizer (line 44) | private class CustomRandomizer : Randomizer
      method CustomRandomizer (line 46) | public CustomRandomizer()

FILE: Source/Bogus.Tests/GitHubIssues/Issue45.cs
  class Issue45 (line 8) | public class Issue45 : SeededTest
    class Issue45Object (line 10) | public class Issue45Object
    method issue_45_better_fluency (line 16) | [Fact]
    method with_int_argument (line 28) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue48.cs
  class Issue48 (line 8) | public class Issue48 : SeededTest
    method issue_48 (line 10) | [Fact]
    class User (line 37) | public class User
    class Client (line 45) | public class Client

FILE: Source/Bogus.Tests/GitHubIssues/Issue49.cs
  class Issue49 (line 8) | public class Issue49 : SeededTest
    method issue_49_pr_51_pick_random_subset (line 10) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue538.cs
  class Issue538 (line 7) | public class Issue538 : SeededTest
    method can_generate_valid_costa_rican_iban (line 9) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue55.cs
  class Issue55 (line 9) | public class Issue55 : SeededTest
    class DerivedFaker (line 11) | public class DerivedFaker : Faker<Bar>
      method DerivedFaker (line 13) | public DerivedFaker()
      method Generate (line 19) | public override List<Bar> Generate(int count, string ruleSets = null)
    method issue_55_collection_finish_with_syntax (line 29) | [Fact]
    class Bar (line 37) | public class Bar
    method with_range_and_index_syntax (line 45) | [Fact]
  class ExtensionsForCollection (line 78) | public static class ExtensionsForCollection
    method Apply (line 80) | public static T Apply<T>(this T item, Action<T> applyAction)
    method Apply (line 86) | public static T[] Apply<T>(this T[] array, Action<T> applyAction)
    method Apply (line 94) | public static IEnumerable<T> Apply<T>(this IEnumerable<T> sequence, Ac...

FILE: Source/Bogus.Tests/GitHubIssues/Issue581.cs
  class Issue581 (line 11) | public class Issue581 : SeededTest
    method overflow_test (line 13) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue601.cs
  class Issue601 (line 11) | public class Issue601 : SeededTest
    method can_generate_custom_avatar_ipfs_url (line 13) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue61.cs
  class Issue61 (line 6) | public class Issue61 : SeededTest
    class HashIdExtension (line 8) | public static class HashIdExtension
    method can_have_custom_hashid_extension (line 13) | [Fact]
    class SomeUser (line 26) | public class SomeUser

FILE: Source/Bogus.Tests/GitHubIssues/Issue70.cs
  class Issue70 (line 7) | public class Issue70 : SeededTest
    method should_be_able_to_create_derived_faker_with_class_hierarchy (line 9) | [Fact]
    method quick_test_for_derivedC (line 33) | [Fact]
  class BaseA (line 47) | class BaseA
  class DerivedA (line 52) | class DerivedA : BaseA
  class BaseB (line 58) | class BaseB
  class DerivedB (line 63) | class DerivedB : BaseB
  class ClassC (line 68) | class ClassC : BaseB

FILE: Source/Bogus.Tests/GitHubIssues/Issue86.cs
  class Issue86 (line 8) | public class Issue86 : SeededTest
    method Issue86 (line 12) | public Issue86()
    method should_remove_diacritic_marks (line 17) | [Fact]
    method should_remove_diacritic_marks_in_email (line 23) | [Fact]
    method should_remove_diacritic_marks_in_username (line 29) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/Issue93.cs
  class Issue93 (line 8) | public class Issue93 : SeededTest
    method Issue93 (line 12) | public Issue93(ITestOutputHelper console)
    method should_be_able_to_use_list_of_objects_and_pick_random (line 17) | [Fact]
    class MyObj (line 32) | class MyObj

FILE: Source/Bogus.Tests/GitHubIssues/Issue99.cs
  class Issue99 (line 8) | public class Issue99 : SeededTest
    method multi_threaded_locale_access_should_be_okay (line 10) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest149.cs
  class PullRequest149 (line 7) | public class PullRequest149 : SeededTest
    method ensure_arabic_locale_exists (line 9) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest180.cs
  class PullRequest180 (line 9) | public class PullRequest180 : SeededTest, IDisposable
    method PullRequest180 (line 13) | public PullRequest180()
    method lower_invarant_should_be_used_to_avoid_locale_issues_in_json_path (line 18) | [Fact]
    method Dispose (line 27) | public void Dispose()

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest194.cs
  class PullRequest194 (line 6) | public class PullRequest194 : SeededTest
    method can_generate_nl_locale_with_modifications (line 8) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest197.cs
  class PullRequest197 (line 7) | public class PullRequest197 : SeededTest
    class Internet2 (line 9) | public class Internet2 : Internet
    method ensure_randomizer_propagates_to_dependent_datasets (line 14) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest258.cs
  class PullRequest258 (line 7) | public class PullRequest258 : SeededTest
    method can_get_rooted_url_path_with_fileExt (line 9) | [Fact]
    method get_rooted_path_with_no_ext (line 17) | [Fact]
    method check_UrlWithPath_fileExt_parameter (line 25) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest259.cs
  class PullRequest259 (line 8) | public class PullRequest259 : SeededTest
    class Drink (line 10) | class Drink
    class DrinkRuleSets (line 16) | public static class DrinkRuleSets
    method ensure_generate_forever_applies_ruleset (line 24) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest261.cs
  class PullRequest261 (line 8) | public class PullRequest261 : SeededTest
    method PullRequest261 (line 12) | public PullRequest261(ITestOutputHelper console)
    method can_generate_ipv4_endpoint (line 17) | [Fact]
    method can_generate_ipv6_endpoint (line 25) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest500.cs
  class PullRequest500 (line 8) | public class PullRequest500 : SeededTest
    class PersonTest (line 10) | public class PersonTest
    method can_set_and_use_datetimereference_on_Faker (line 16) | [Fact]
    method can_set_and_use_datetimereference_on_FakerT (line 31) | [Fact]
    method cloning_FakerT_still_uses_datetimereference_on_source_FakerT (line 48) | [Fact]
    method null_usedatetimereference_reverts_to_systemclock_FakerT (line 66) | [Fact]
    method null_datetimereference_should_use_systemclock_for_Faker (line 84) | [Fact]
    method FakerT_usedatetimereference_flows_to_Person (line 99) | [Fact]
    method using_Person_refDate_sets_dsdate_localsystemclock (line 117) | [Fact]
    method using_internal_Person_refDate_sets_dsdate_localsystemclock (line 127) | [Fact]

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest510.cs
  class PullRequest510 (line 11) | public class PullRequest510 : SeededTest
    method PullRequest510 (line 15) | public PullRequest510(ITestOutputHelper console)
    method can_generate_formatted_government_vat_number (line 20) | [Fact]
    method can_generate_unformatted_government_vat_number (line 30) | [Fact]
    method can_generate_formatted_health_vat_number (line 40) | [Fact]
    method can_generate_unformatted_health_vat_number (line 50) | [Fact]
    method can_generate_unformatted_standard_vat_number (line 60) | [Fact]
    method can_generate_formatted_standard_vat_number (line 70) | [Fact]
    method can_generate_unformatted_branchTrader_vat_number (line 80) | [Fact]
    method can_generate_formatted_branchTrader_vat_number (line 90) | [Fact]
    method Assert (line 100) | private void Assert(string ep, string regex)

FILE: Source/Bogus.Tests/GitHubIssues/PullRequest513.cs
  class PullRequest513 (line 7) | public class PullRequest513 : SeededTest
    method sv_has_gendered_names (line 9) | [Fact]

FILE: Source/Bogus.Tests/HandleBarTests.cs
  class HandleBarTests (line 7) | public class HandleBarTests : SeededTest
    method HandleBarTests (line 11) | public HandleBarTests(ITestOutputHelper console)
    method parse_test (line 16) | [Fact]

FILE: Source/Bogus.Tests/HandlebarsTests/ArgumentsTest.cs
  class ArgumentsTest (line 8) | public class ArgumentsTest : SeededTest
    method ArgumentsTest (line 12) | public ArgumentsTest(ITestOutputHelper console)
    method can_parse_random_number_request_without_arguments (line 18) | [Fact]
    method can_parse_random_bool_request_without_arguments (line 26) | [Fact]
    method can_parse_random_number_parameterized_request (line 35) | [Fact]
    method can_parse_random_number_parameterized_request_overload (line 43) | [Fact]
    method cant_parse_random_number_parameterized_request_incorrect_overload (line 51) | [Fact]
    method cant_parse_random_number_parameterized_request_incorrect_type (line 58) | [Fact]
    method cant_parse_random_string_request_with_not_enough_arguments (line 65) | [Fact]
    method can_parse_random_string_request_with_enough_arguments (line 72) | [Fact]
    method can_parse_random_string_request_with_full_arguments (line 83) | [Fact]
    method can_parse_enum_argument (line 90) | [Fact]
    method can_parse_string_argument (line 97) | [Fact]
    method can_parse_bool_argument (line 104) | [Fact]
    method can_parse_datetime_with_arguments (line 111) | [Fact]
    method unmached_brace_should_throw (line 123) | [Fact]
    method can_parse_timespan_with_arguments (line 132) | [Fact]
    method can_parse_vehicle (line 143) | [Fact]
    method parse_vehicle_returns_expected_value (line 151) | [Fact]
    method can_parse_music (line 159) | [Fact]
    method parse_music_returns_expected_value (line 167) | [Fact]

FILE: Source/Bogus.Tests/LocaleTests/PtLocale.cs
  class PtLocale (line 7) | public class PtLocale : SeededTest
    method address_test (line 9) | [Fact]
    method company_tests (line 20) | [Fact]
    method name_tests (line 29) | [Fact]
    method date_tests (line 38) | [Fact]

FILE: Source/Bogus.Tests/LocaleTests/TrLocale.cs
  class TrLocale (line 8) | public class TrLocale : SeededTest
    method TrLocale (line 12) | public TrLocale(ITestOutputHelper console)
    method ensure_tr_locale_lorem_is_used (line 17) | [Fact]

FILE: Source/Bogus.Tests/Models/Order.cs
  class Order (line 3) | public class Order

FILE: Source/Bogus.Tests/PersonTest.cs
  class PersonTest (line 16) | public class PersonTest : SeededTest
    method PersonTest (line 20) | public PersonTest(ITestOutputHelper console)
    class User (line 25) | public class User
    method new_person_on_every_generate (line 32) | [Fact]
    method check_ssn_on_person (line 48) | [Fact]
    method pass_reference_date_to_person (line 55) | [Fact]
    method can_generate_valid_sin (line 65) | [Fact]
    method can_generate_cpf_for_brazil (line 89) | [Fact]
    method can_generate_cpf_for_brazil_without_formatting (line 113) | [Fact]
    method can_generate_numeric_cpf_for_brazil (line 137) | [Fact]
    method can_generate_henkilötunnus_for_finland (line 161) | [Fact]
    method check_emails (line 174) | [Fact]
    method person_has_full_name (line 196) | [Fact]
    method can_use_local_seed_for_person (line 203) | [Fact]
    method can_use_refdate_for_person (line 233) | [Fact]
    method can_use_local_seed_and_refdate_for_person (line 248) | [Fact]
    method Get (line 280) | IEnumerable<T> Get<T>(int times, Func<Person, T> a)

FILE: Source/Bogus.Tests/README_Generator.cs
  class README_Generator (line 20) | public class README_Generator
    method README_Generator (line 24) | public README_Generator(ITestOutputHelper output)
    class Record (line 29) | public class Record
    method get_available_methods (line 36) | [Fact]
    method get_randomizer_methods (line 116) | [Fact]
    method get_all_locales (line 206) | [Fact]
    method get_extension_namespaces (line 252) | [Fact]
    method GetWorkingFolders (line 307) | private (string projectDir, string buildDir) GetWorkingFolders()
  class XmlExtensions (line 332) | public static class XmlExtensions
    method ExtractContent (line 342) | public static string ExtractContent(this XPathNavigator node)
    method GetConstRefName (line 349) | private static string GetConstRefName(Match match)
    method GetParamRefName (line 354) | private static string GetParamRefName(Match match)

FILE: Source/Bogus.Tests/RandomizerTest.cs
  class RandomizerTest (line 11) | public class RandomizerTest : SeededTest
    method RandomizerTest (line 16) | public RandomizerTest(ITestOutputHelper console)
    type Foo (line 22) | public enum Foo
    method pick_an_enum (line 31) | [Fact]
    method exclude_an_enum (line 38) | [Fact]
    method exclude_all_throws_an_error (line 49) | [Fact]
    method can_replace_numbers_or_letters_using_asterisk (line 57) | [Fact]
    method can_get_random_word (line 64) | [Fact]
    method can_get_some_random_words (line 72) | [Fact]
    method can_shuffle_some_enumerable (line 80) | [Fact]
    method can_get_random_locale (line 87) | [Fact]
    method can_include_int_maxvalue_number (line 93) | [Fact]
    method can_handle_full_int_range (line 100) | [Fact]
    method detects_invalid_Even_range (line 106) | [Fact]
    method detects_empty_Even_range (line 118) | [Fact]
    method can_handle_extreme_Even_range (line 134) | [Fact]
    method detects_invalid_Odd_range (line 141) | [Fact]
    method detects_empty_Odd_range (line 153) | [Fact]
    method can_handle_extreme_Odd_range (line 169) | [Fact]
    method random_bool (line 176) | [Fact]
    method can_get_some_alpha_chars (line 182) | [Fact]
    method generate_double_with_min_and_max (line 188) | [Fact]
    method generate_decimal_with_min_and_max (line 194) | [Fact]
    method generate_float_with_min_and_max (line 200) | [Fact]
    method generate_byte (line 206) | [Fact]
    method generate_some_bytes (line 212) | [Fact]
    method generate__sbyte (line 219) | [Fact]
    method generate_uint32 (line 225) | [Fact]
    method generate_unit32_many (line 231) | [Fact]
    method generate_int32 (line 240) | [Fact]
    method generate_int32_many (line 246) | [Fact]
    method generate_uint64 (line 257) | [Fact]
    method generate_uint64_many (line 263) | [Fact]
    method generate_int64 (line 272) | [Fact]
    method generate_int64_many (line 278) | [Fact]
    method generate_int16 (line 288) | [Fact]
    method generate_int16_many (line 294) | [Fact]
    method generate_uint16 (line 303) | [Fact]
    method generate_char (line 309) | [Fact]
    method generate_some_chars (line 315) | [Fact]
    method generate_string_range_check (line 331) | [Fact]
    method generate_string_byte_check (line 341) | [Fact]
    method generate_string_AZ (line 365) | [Fact]
    method generate_string2_pool (line 372) | [Fact]
    method generate_string2_pool_custom (line 378) | [Fact]
    method generate_string2_pool_min_max (line 384) | [Fact]
    method generate_hash (line 397) | [Fact]
    method generate_small_hash (line 403) | [Fact]
    method random_word_tests (line 409) | [Fact]
    method can_pick_random_item_from_ICollection (line 419) | [Fact]
    method throw_an_exception_when_picking_nothing_from_collection (line 427) | [Fact]
    method can_pick_random_item_from_ilist (line 435) | [Fact]
    method can_pick_random_item_from_list (line 443) | [Fact]
    method can_generate_hexdec_string (line 451) | [Fact]
    method can_get_random_subset_of_an_array (line 459) | [Fact]
    method can_get_random_subset_of_a_list (line 468) | [Fact]
    method can_get_a_weighted_true_value (line 477) | [Fact]
    method ExactLenUtf16 (line 487) | public static IEnumerable<object[]> ExactLenUtf16(int maxTest)
    method VarLenUtf16 (line 493) | public static IEnumerable<object[]> VarLenUtf16(int maxTest)
    method can_generate_valid_utf16_string_with_surrogates (line 499) | [Theory]
    method can_generate_valid_utf16_without_surrogates (line 525) | [Theory]
    method static_utf16_tests (line 540) | [Fact]
    method empty_collection_throws_better_exception_message_rather_than_index_out_of_bounds (line 547) | [Fact]

FILE: Source/Bogus.Tests/Rant_Generator.cs
  class Rant_Generator (line 13) | public class Rant_Generator
    method Rant_Generator (line 21) | public Rant_Generator()
    method generate_product_reviews (line 33) | [Fact(Skip = "Explicit")]
    method Inject (line 75) | private void Inject(string locale, string category, string section, Li...

FILE: Source/Bogus.Tests/RuleSetTests.cs
  class RuleSetTests (line 8) | public class RuleSetTests : SeededTest
    method RuleSetTests (line 10) | public RuleSetTests()
    class Customer (line 15) | public class Customer
    method should_be_able_to_create_a_rule_set (line 22) | [Fact]
    method should_be_able_to_run_two_rules_with_last_one_taking_precedence (line 47) | [Fact]
    method should_be_able_to_run_default_ruleset (line 72) | [Fact]
    method should_throw_error_when_strict_mode_is_set (line 97) | [Fact]
    method should_be_able_to_override_existing_rules (line 122) | [Fact]
    method should_be_able_to_use_rules_with_ruleset (line 138) | [Fact]
    method can_create_a_fake_object_with_no_props_or_rules (line 159) | [Fact]

FILE: Source/Bogus.Tests/SchemaTests/LocaleSchemaTests.cs
  class ModuleInit (line 18) | public static class ModuleInit
    method Init (line 20) | [ModuleInitializer]
  class LocaleSchemaTests (line 28) | [UsesVerify]
    method ensure_wellknown_locale_schema (line 33) | [Theory]
    method GetLocaleCodes (line 52) | public static IEnumerable<object[]> GetLocaleCodes()
  class InterceptedContractResolver (line 63) | public class InterceptedContractResolver : IContractResolver
    method InterceptedContractResolver (line 67) | public InterceptedContractResolver(IContractResolver defaultResolver)
    method GetNameTable (line 72) | public JsonNameTable GetNameTable()
    method ResolveContract (line 77) | public JsonContract ResolveContract(Type type)

FILE: Source/Bogus.Tests/SeededTest.cs
  class SeededTest (line 14) | [Collection("Seeded Test")]
    method SeededTest (line 17) | public SeededTest()
    method ResetGlobalSeed (line 23) | protected static void ResetGlobalSeed()
    method Make (line 28) | protected IEnumerable<T> Make<T>(int times, Func<T> a)

FILE: Source/Bogus.Tests/StackOverflowQuestions/Question60136934.cs
  class Question60136934 (line 9) | public class Question60136934 : SeededTest
    type Foo (line 13) | enum Foo
    method Question60136934 (line 21) | public Question60136934()
    method pick_subset_of_enum_values_except_c_and_d (line 26) | [Fact]
    method pick_subset_of_enum_values_except_c (line 36) | [Fact]
    method pick_any_two_random_enums (line 45) | [Fact]
    method pick_invalid_number_of_enums (line 54) | [Theory]

FILE: Source/Bogus.Tests/StackOverflowQuestions/Question66444118.cs
  class Question66444118 (line 12) | public class Question66444118 : SeededTest
    method can_reflect_private_backing_fields_in_fakerT (line 14) | [Fact]
    class BackingFieldBinder (line 26) | public class BackingFieldBinder : IBinder
      method GetMembers (line 28) | public Dictionary<string, MemberInfo> GetMembers(Type t)
    class Foo (line 48) | public class Foo
      method Foo (line 50) | public Foo(string name)
  class MyExtensionsForFakerT (line 58) | public static class MyExtensionsForFakerT
    method SkipConstructor (line 60) | public static Faker<T> SkipConstructor<T>(this Faker<T> fakerOfT) wher...

FILE: Source/Bogus.Tests/StrictModeTests.cs
  class StrictModeTests (line 7) | public class StrictModeTests : SeededTest
    method should_throw_exception_on_incomplete_rules (line 9) | [Fact]
    method should_not_throw_exception_on_complete_rule_set (line 20) | [Fact]
    method cannot_use_rules_with_strictmode (line 34) | [Fact]
    method cannot_use_rules_with_strictmode_inside_rulesets (line 62) | [Fact]
    method strictmode_with_no_rules_should_throw (line 98) | [Fact]

FILE: Source/Bogus.Tests/TransliterateTests.cs
  class TransliterateTests (line 7) | public class TransliterateTests
    method Test (line 9) | [Fact]
    method index_test (line 17) | [Fact]
    method simple_test (line 23) | [Fact]
    method basic_ru_test (line 29) | [Fact]
    method index2_test (line 35) | [Fact]
    method transliterate_with_unknown_langauge_doesnt_throw (line 41) | [Fact]
    method can_translate_symbol (line 48) | [Fact]
    method can_translate_symbol_with_locale (line 54) | [Fact]
    method can_translate_with_langchar_map (line 60) | [Fact]

FILE: Source/Bogus.Tests/UniquenessTests.cs
  class UniquenessTests (line 9) | public class UniquenessTests : SeededTest
    class User (line 11) | public class User
    method UniquenessTests (line 19) | public UniquenessTests()
    method every_new_generation_should_have_a_new_unique_index (line 24) | [Fact]
    class Video (line 52) | public class Video
    method should_be_able_to_create_some_hash_ids (line 59) | [Fact]
    method should_be_able_to_drive_manual_index (line 76) | [Fact]
    method should_be_able_to_drive_internal_index (line 91) | [Fact]
    method issue_57_unique_index_not_really_unique_in_parent_child_generation (line 104) | [Fact]
    method issue_57_reordering_rules_shouldnt_matter (line 124) | [Fact]
    class Issue57Parent (line 144) | public class Issue57Parent
    class Issue57Child (line 150) | public class Issue57Child
    method should_be_able_to_control_index_variable (line 155) | [Fact]

FILE: Source/Bogus.Tests/ValidationDeltaTests.cs
  class ValidationDeltaTests (line 6) | public class ValidationDeltaTests : SeededTest
    method should_be_valid_and_not_throw_exception_on_complete_rules_with_ignore (line 8) | [Fact]
    method should_not_be_valid_and_throw_exception_on_incomplete_rules (line 22) | [Fact]
    method should_throw_exception_on_incomplete_rules (line 33) | [Fact]
    method should_be_valid_and_no_exceptions_on_complete_rules (line 42) | [Fact]
    method should_be_valid_no_exceptions_on_incomplete_rules_when_strict_false (line 57) | [Fact]

FILE: Source/Bogus/Binder.cs
  type IBinder (line 14) | public interface IBinder
    method GetMembers (line 24) | Dictionary<string, MemberInfo> GetMembers(Type t);
  class Binder (line 31) | public class Binder : IBinder
    method Binder (line 41) | public Binder()
    method Binder (line 48) | public Binder(BindingFlags bindingFlags)
    method GetMembers (line 62) | public virtual Dictionary<string, MemberInfo> GetMembers(Type t)
    method UseBaseTypeDeclaredPropertyInfo (line 109) | protected virtual MemberInfo UseBaseTypeDeclaredPropertyInfo(Type t, M...

FILE: Source/Bogus/BogusException.cs
  class BogusException (line 8) | public class BogusException : Exception
    method BogusException (line 10) | public BogusException()
    method BogusException (line 14) | public BogusException(string message) : base(message)
    method BogusException (line 18) | public BogusException(string message, Exception innerException) : base...

FILE: Source/Bogus/Bson/BArray.cs
  class BArray (line 8) | public class BArray : BValue, IEnumerable
    method BArray (line 12) | public BArray() : base(BValueType.Array)
    method Add (line 26) | public override void Add(BValue v) => items.Add(v);
    method IndexOf (line 28) | public int IndexOf(BValue item) => items.IndexOf(item);
    method Insert (line 30) | public void Insert(int index, BValue item) => items.Insert(index, item);
    method Remove (line 32) | public bool Remove(BValue v) => items.Remove(v);
    method RemoveAt (line 34) | public void RemoveAt(int index) => items.RemoveAt(index);
    method Clear (line 36) | public override void Clear() => items.Clear();
    method Contains (line 38) | public virtual bool Contains(BValue v) => items.Contains(v);
    method GetEnumerator (line 40) | IEnumerator IEnumerable.GetEnumerator()

FILE: Source/Bogus/Bson/BObject.cs
  class BObject (line 8) | public class BObject : BValue, IEnumerable
    method BObject (line 12) | public BObject() : base(BValueType.Object)
    method Clear (line 32) | public override void Clear() => map.Clear();
    method Add (line 34) | public override void Add(string key, BValue value) => map.Add(key, val...
    method Contains (line 37) | public override bool Contains(BValue v) => map.ContainsValue(v);
    method ContainsKey (line 39) | public override bool ContainsKey(string key) => map.ContainsKey(key);
    method Remove (line 41) | public bool Remove(string key) => map.Remove(key);
    method TryGetValue (line 43) | public bool TryGetValue(string key, out BValue value) => map.TryGetVal...
    method GetEnumerator (line 45) | IEnumerator IEnumerable.GetEnumerator()

FILE: Source/Bogus/Bson/BValue.cs
  class BValue (line 12) | public class BValue
    method Clear (line 159) | public virtual void Clear() { }
    method Add (line 160) | public virtual void Add(string key, BValue value) { }
    method Add (line 161) | public virtual void Add(BValue value) { }
    method Contains (line 162) | public virtual bool Contains(BValue v) { return false; }
    method ContainsKey (line 163) | public virtual bool ContainsKey(string key) { return false; }
    method BValue (line 189) | protected BValue(BValueType valueType)
    method BValue (line 194) | public BValue()
    method BValue (line 199) | public BValue(double v)
    method BValue (line 205) | public BValue(String v)
    method BValue (line 211) | public BValue(byte[] v)
    method BValue (line 217) | public BValue(bool v)
    method BValue (line 223) | public BValue(DateTime dt)
    method BValue (line 229) | public BValue(Int32 v)
    method BValue (line 235) | public BValue(Int64 v)

FILE: Source/Bogus/Bson/BValueType.cs
  type BValueType (line 5) | public enum BValueType

FILE: Source/Bogus/Bson/Bson.cs
  class Bson (line 9) | public class Bson
    method Load (line 14) | public static BObject Load(byte[] buf)
    method Bson (line 21) | private Bson(byte[] buf)
    method DecodeElement (line 27) | private BValue DecodeElement(out string name)
    method DecodeDocument (line 99) | private BObject DecodeDocument()
    method DecodeArray (line 116) | private BArray DecodeArray()
    method DecodeString (line 132) | private string DecodeString()
    method DecodeCString (line 140) | private string DecodeCString()
    method Bson (line 156) | private Bson()
    method Serialize (line 161) | public static byte[] Serialize(BObject obj)
    method EncodeElement (line 175) | private void EncodeElement(MemoryStream ms, string name, BValue v)
    method EncodeDocument (line 231) | private void EncodeDocument(MemoryStream ms, BObject obj)
    method EncodeArray (line 245) | private void EncodeArray(MemoryStream ms, BArray lst)
    method EncodeBinary (line 256) | private void EncodeBinary(MemoryStream ms, byte[] buf)
    method EncodeCString (line 264) | private void EncodeCString(MemoryStream ms, string v)
    method EncodeString (line 271) | private void EncodeString(MemoryStream ms, string v)
    method EncodeDouble (line 281) | private void EncodeDouble(MemoryStream ms, double v)
    method EncodeBool (line 287) | private void EncodeBool(MemoryStream ms, bool v)
    method EncodeInt32 (line 293) | private void EncodeInt32(MemoryStream ms, Int32 v)
    method EncodeInt64 (line 299) | private void EncodeInt64(MemoryStream ms, Int64 v)
    method EncodeUTCDateTime (line 305) | private void EncodeUTCDateTime(MemoryStream ms, DateTime dt)

FILE: Source/Bogus/Chars.cs
  class Chars (line 8) | public static class Chars
  class SafeUnicodeRanges (line 50) | [EditorBrowsable(EditorBrowsableState.Never)]

FILE: Source/Bogus/DataCategoryAttribute.cs
  class DataCategoryAttribute (line 12) | [AttributeUsage(AttributeTargets.Class)]
    method DataCategoryAttribute (line 23) | public DataCategoryAttribute(string name)

FILE: Source/Bogus/DataSet.cs
  class DataSet (line 11) | public class DataSet : ILocaleAware, IHasRandomizer
    method DataSet (line 20) | public DataSet(string locale = "en")
    method GetNotifier (line 63) | SeedNotifier IHasRandomizer.GetNotifier()
    method ResolveCategory (line 73) | public static string ResolveCategory(Type type)
    method Get (line 84) | protected internal virtual BValue Get(string path)
    method Get (line 95) | protected internal virtual BValue Get(string category, string path)
    method HasKey (line 104) | protected internal virtual bool HasKey(string path, bool includeFallba...
    method GetArray (line 119) | protected internal virtual BArray GetArray(string path)
    method GetArray (line 124) | protected internal virtual BArray GetArray(string category, string path)
    method GetObject (line 134) | protected internal virtual BObject GetObject(string path)
    method GetRandomArrayItem (line 146) | protected internal virtual string GetRandomArrayItem(string path, int?...
    method GetRandomArrayItem (line 151) | protected internal virtual string GetRandomArrayItem(string category, ...
    method GetRandomBObject (line 167) | protected internal virtual BObject GetRandomBObject(string path)
    method GetFormattedValue (line 183) | protected internal virtual string GetFormattedValue(string path)
    method ParseTokens (line 199) | private string ParseTokens(string value)

FILE: Source/Bogus/DataSets/Address.cs
  class Address (line 8) | public class Address : DataSet
    method Address (line 19) | public Address(string locale = "en") : base(locale)
    method ZipCode (line 32) | public string ZipCode(string format = null)
    method City (line 41) | public string City()
    method StreetAddress (line 52) | public string StreetAddress(bool useFullAddress = false)
    method CityPrefix (line 62) | public string CityPrefix()
    method CitySuffix (line 71) | public string CitySuffix()
    method StreetName (line 80) | public string StreetName()
    method BuildingNumber (line 89) | public string BuildingNumber()
    method StreetSuffix (line 98) | public string StreetSuffix()
    method SecondaryAddress (line 107) | public string SecondaryAddress()
    method County (line 116) | public string County()
    method Country (line 125) | public string Country()
    method FullAddress (line 134) | public string FullAddress()
    method CountryCode (line 148) | public string CountryCode(Iso3166Format format = Iso3166Format.Alpha2)
    method State (line 167) | public string State()
    method StateAbbr (line 176) | public string StateAbbr()
    method Latitude (line 187) | public double Latitude(double min = -90, double max = 90)
    method Longitude (line 198) | public double Longitude(double min = -180, double max = 180)
    method Direction (line 208) | public string Direction(bool useAbbreviation = false)
    method CardinalDirection (line 223) | public string CardinalDirection(bool useAbbreviation = false)
    method OrdinalDirection (line 238) | public string OrdinalDirection(bool useAbbreviation = false)
  type Iso3166Format (line 252) | public enum Iso3166Format

FILE: Source/Bogus/DataSets/ColorFormat.cs
  type ColorFormat (line 6) | public enum ColorFormat

FILE: Source/Bogus/DataSets/Commerce.cs
  class Commerce (line 9) | public class Commerce : DataSet
    method Commerce (line 15) | public Commerce(string locale = "en") : base(locale)
    method Department (line 25) | public string Department(int max = 3, bool returnMax = false)
    method Price (line 55) | public string Price(decimal min = 1, decimal max = 1000, int decimals ...
    method Categories (line 67) | public string[] Categories(int num)
    method ProductName (line 83) | public string ProductName()
    method Color (line 92) | public string Color()
    method Product (line 101) | public string Product()
    method ProductAdjective (line 110) | public string ProductAdjective()
    method ProductMaterial (line 119) | public string ProductMaterial()
    method ProductDescription (line 128) | public string ProductDescription()
    method Ean8 (line 142) | public string Ean8()
    method Ean13 (line 157) | public string Ean13()
    method Ean (line 163) | private string Ean(int length, int[] weights)

FILE: Source/Bogus/DataSets/Company.cs
  class Company (line 9) | public class Company : DataSet
    method Company (line 20) | public Company(string locale = "en") : base(locale)
    method CompanySuffix (line 29) | public string CompanySuffix()
    method CompanyName (line 39) | public string CompanyName(int? formatIndex = null)
    method CompanyName (line 57) | public string CompanyName(string format)
    method CatchPhrase (line 67) | public string CatchPhrase()
    method Bs (line 76) | public string Bs()
    method Suffixes (line 82) | internal protected virtual string[] Suffixes()
    method CatchPhraseAdjective (line 87) | internal protected virtual string CatchPhraseAdjective()
    method CatchPhraseDescriptor (line 93) | internal protected virtual string CatchPhraseDescriptor()
    method CatchPhraseNoun (line 98) | internal protected virtual string CatchPhraseNoun()
    method BsAdjective (line 103) | internal protected virtual string BsAdjective()
    method BsBuzz (line 108) | internal protected virtual string BsBuzz()
    method BsNoun (line 113) | internal protected virtual string BsNoun()

FILE: Source/Bogus/DataSets/Database.cs
  class Database (line 6) | public class Database : DataSet
    method Column (line 12) | public string Column()
    method Type (line 21) | public string Type()
    method Collation (line 30) | public string Collation()
    method Engine (line 39) | public string Engine()

FILE: Source/Bogus/DataSets/Date.cs
  class Date (line 8) | public partial class Date : DataSet
    method Date (line 39) | public Date(string locale = "en") : base(locale)
    method GetTimeReference (line 47) | protected internal DateTime GetTimeReference() => LocalSystemClock?.In...
    method Past (line 54) | public DateTime Past(int yearsToGoBack = 1, DateTime? refDate = null)
    method PastOffset (line 72) | public DateTimeOffset PastOffset(int yearsToGoBack = 1, DateTimeOffset...
    method RandomTimeSpanFromTicks (line 88) | protected internal TimeSpan RandomTimeSpanFromTicks(long totalTimeSpan...
    method Soon (line 100) | public DateTime Soon(int days = 1, DateTime? refDate = null)
    method SoonOffset (line 111) | public DateTimeOffset SoonOffset(int days = 1, DateTimeOffset? refDate...
    method Future (line 122) | public DateTime Future(int yearsToGoForward = 1, DateTime? refDate = n...
    method FutureOffset (line 140) | public DateTimeOffset FutureOffset(int yearsToGoForward = 1, DateTimeO...
    method Between (line 158) | public DateTime Between(DateTime start, DateTime end)
    method BetweenOffset (line 175) | public DateTimeOffset BetweenOffset(DateTimeOffset start, DateTimeOffs...
    method Recent (line 192) | public DateTime Recent(int days = 1, DateTime? refDate = null)
    method RecentOffset (line 210) | public DateTimeOffset RecentOffset(int days = 1, DateTimeOffset? refDa...
    method Timespan (line 227) | public TimeSpan Timespan(TimeSpan? maxSpan = null)
    method Month (line 237) | public string Month(bool abbreviation = false, bool useContext = false)
    method Weekday (line 256) | public string Weekday(bool abbreviation = false, bool useContext = false)
    method TimeZoneString (line 275) | public string TimeZoneString()

FILE: Source/Bogus/DataSets/Date.net60.cs
  class Date (line 8) | public partial class Date
    method BetweenDateOnly (line 16) | public DateOnly BetweenDateOnly(DateOnly start, DateOnly end)
    method PastDateOnly (line 32) | public DateOnly PastDateOnly(int yearsToGoBack = 1, DateOnly? refDate ...
    method SoonDateOnly (line 45) | public DateOnly SoonDateOnly(int days = 1, DateOnly? refDate = null)
    method FutureDateOnly (line 58) | public DateOnly FutureDateOnly(int yearsToGoForward = 1, DateOnly? ref...
    method RecentDateOnly (line 71) | public DateOnly RecentDateOnly(int days = 1, DateOnly? refDate = null)
    method BetweenTimeOnly (line 84) | public TimeOnly BetweenTimeOnly(TimeOnly start, TimeOnly end)
    method SoonTimeOnly (line 99) | public TimeOnly SoonTimeOnly(int mins = 60, TimeOnly? refTime = null)
    method RecentTimeOnly (line 112) | public TimeOnly RecentTimeOnly(int mins = 60, TimeOnly? refTime = null)

FILE: Source/Bogus/DataSets/Finance.cs
  class Currency (line 14) | public class Currency
  class CardType (line 37) | public class CardType
    method CardType (line 41) | private CardType(string value)
  class Finance (line 112) | public class Finance : DataSet
    method Account (line 118) | public string Account(int length = 8)
    method AccountName (line 127) | public string AccountName()
    method Amount (line 139) | public decimal Amount(decimal min = 0, decimal max = 1000, int decimal...
    method TransactionType (line 150) | public string TransactionType()
    method Currency (line 158) | public Currency Currency(bool includeFundCodes = false)
    method CreditCardNumber (line 194) | public string CreditCardNumber(CardType provider = null)
    method CreditCardCvv (line 280) | public string CreditCardCvv()
    method BitcoinAddress (line 295) | public string BitcoinAddress()
    method EthereumAddress (line 309) | public string EthereumAddress()
    method LitecoinAddress (line 317) | public string LitecoinAddress()
    method RoutingNumber (line 337) | public string RoutingNumber()
    method Bic (line 359) | public string Bic()
    method Iban (line 375) | public string Iban(bool formatted = false, string countryCode = null)
    method Iban (line 407) | protected string Iban(IBanFormat ibanFormat, bool formatted)
    method IbanMod97 (line 471) | protected int IbanMod97(string digitStr)
    method IbanToDigitString (line 481) | protected string IbanToDigitString(string str)
    class IBanFormat (line 486) | protected class IBanFormat
      class BbanItem (line 488) | public class BbanItem
    method GetIbanFormat (line 500) | protected IBanFormat GetIbanFormat(BObject obj)
    method GetBbanItems (line 513) | protected IBanFormat.BbanItem[] GetBbanItems(BObject obj)

FILE: Source/Bogus/DataSets/Hacker.cs
  class Hacker (line 6) | public class Hacker : DataSet
    method Hacker (line 12) | public Hacker(string locale = "en") : base(locale)
    method Abbreviation (line 20) | public string Abbreviation()
    method Adjective (line 29) | public string Adjective()
    method Noun (line 38) | public string Noun()
    method Verb (line 47) | public string Verb()
    method IngVerb (line 56) | public string IngVerb()
    method Phrase (line 65) | public string Phrase()

FILE: Source/Bogus/DataSets/Images.PlaceImg.cs
  type PlaceImgFilter (line 3) | public enum PlaceImgFilter
  class PlaceImgCategory (line 9) | public static class PlaceImgCategory

FILE: Source/Bogus/DataSets/Images.cs
  class Images (line 9) | [DataCategory("image")]
    method Images (line 15) | public Images(string locale = "en") : base(locale)
    method DataUri (line 25) | public string DataUri(int width, int height, string htmlColor = "grey")
    method PlaceImgUrl (line 42) | public string PlaceImgUrl(
    method PicsumUrl (line 78) | public string PicsumUrl(int width = 640, int height = 480, bool graysc...
    method PlaceholderUrl (line 111) | public string PlaceholderUrl(int width, int height, string text = null...
    method LoremFlickrUrl (line 150) | public string LoremFlickrUrl(

FILE: Source/Bogus/DataSets/Internet.cs
  class Internet (line 14) | public class Internet : DataSet
    method Internet (line 25) | public Internet(string locale = "en") : base(locale)
    method Avatar (line 39) | public string Avatar(string ipfsGatewayRootUrl = "https://ipfs.io")
    method Email (line 59) | public string Email(string firstName = null, string lastName = null, s...
    method ExampleEmail (line 72) | public string ExampleEmail(string firstName = null, string lastName = ...
    method UserName (line 84) | public string UserName(string firstName = null, string lastName = null)
    method UserNameUnicode (line 100) | public string UserNameUnicode(string firstName = null, string lastName...
    method DomainName (line 130) | public string DomainName()
    method DomainWord (line 139) | public string DomainWord()
    method DomainSuffix (line 150) | public string DomainSuffix()
    method Ip (line 159) | public string Ip()
    method Port (line 168) | public int Port()
    method IpAddress (line 176) | public IPAddress IpAddress()
    method IpEndPoint (line 188) | public IPEndPoint IpEndPoint()
    method Ipv6 (line 199) | public string Ipv6()
    method Ipv6Address (line 210) | public IPAddress Ipv6Address()
    method Ipv6EndPoint (line 220) | public IPEndPoint Ipv6EndPoint()
    method UserAgent (line 233) | public string UserAgent()
    method Mac (line 243) | public string Mac(string separator = ":")
    method Password (line 259) | public string Password(int length = 10, bool memorable = false, string...
    method Color (line 306) | public string Color(byte baseRed = 0, byte baseGreen = 0, byte baseBlu...
    method Protocol (line 344) | public string Protocol()
    method Url (line 355) | public string Url()
    method UrlWithPath (line 367) | public string UrlWithPath(string protocol = null, string domain = null...
    method UrlRootedPath (line 378) | public string UrlRootedPath(string fileExt = null)
    method Url (line 389) | private string Url(string protocol, string domain)

FILE: Source/Bogus/DataSets/Lorem.cs
  class Lorem (line 9) | public class Lorem : DataSet
    method Lorem (line 16) | public Lorem(string locale = "en") : base(locale)
    method Word (line 23) | public string Word()
    method Words (line 32) | public string[] Words(int num = 3)
    method Letter (line 41) | public string Letter(int num = 1)
    method Sentence (line 56) | public string Sentence(int? wordCount = null, int? range = 0)
    method Sentences (line 73) | public string Sentences(int? sentenceCount = null, string separator = ...
    method Paragraph (line 88) | public string Paragraph(int min = 3)
    method Paragraphs (line 98) | public string Paragraphs(int count = 3, string separator = "\n\n")
    method Paragraphs (line 112) | public string Paragraphs(int min, int max, string separator = "\n\n")
    method Text (line 121) | public string Text()
    method Lines (line 134) | public string Lines(int? lineCount = null, string separator = "\n")
    method Slug (line 145) | public string Slug(int wordcount = 3)

FILE: Source/Bogus/DataSets/Music.cs
  class Music (line 3) | public class Music : DataSet
    method Genre (line 8) | public string Genre()

FILE: Source/Bogus/DataSets/Name.cs
  class Name (line 6) | public class Name : DataSet
    type Gender (line 8) | public enum Gender
    method Name (line 22) | public Name(string locale = "en") : base(locale)
    method FirstName (line 39) | public string FirstName(Gender? gender = null)
    method LastName (line 58) | public string LastName(Gender? gender = null)
    method FullName (line 78) | public string FullName(Gender? gender = null)
    method Prefix (line 95) | public string Prefix(Gender? gender = null)
    method Suffix (line 112) | public string Suffix()
    method FindName (line 124) | public string FindName(string firstName = "", string lastName = "", bo...
    method JobTitle (line 147) | public string JobTitle()
    method JobDescriptor (line 159) | public string JobDescriptor()
    method JobArea (line 167) | public string JobArea()
    method JobType (line 175) | public string JobType()

FILE: Source/Bogus/DataSets/PhoneNumbers.cs
  class PhoneNumbers (line 8) | [DataCategory("phone_number")]
    method PhoneNumbers (line 15) | public PhoneNumbers(string locale = "en") : base(locale)
    method PhoneNumber (line 27) | public string PhoneNumber(string format = null)
    method PhoneNumberFormat (line 42) | public string PhoneNumberFormat(int phoneFormatsArrayIndex = 0)
    method PhoneFormat (line 54) | protected virtual string PhoneFormat()
    method ReplaceExclamChar (line 63) | protected virtual string ReplaceExclamChar(string s)

FILE: Source/Bogus/DataSets/Rant.cs
  class Rant (line 8) | public class Rant : DataSet
    method Review (line 15) | public string Review(string product = "product")
    method Reviews (line 27) | public string[] Reviews(string product = "product", int lines = 2)

FILE: Source/Bogus/DataSets/System.cs
  class System (line 12) | public class System : DataSet
    method System (line 18) | public System(string locale = "en") : base(locale)
    method FileName (line 83) | public string FileName(string ext = null)
    method DirectoryPath (line 101) | public string DirectoryPath()
    method FilePath (line 112) | public string FilePath()
    method CommonFileName (line 127) | public string CommonFileName(string ext = null)
    method MimeType (line 146) | public string MimeType()
    method CommonFileType (line 158) | public string CommonFileType()
    method CommonFileExt (line 170) | public string CommonFileExt()
    method FileType (line 182) | public string FileType()
    method FileExt (line 194) | public string FileExt(string mimeType = null)
    method Semver (line 212) | public string Semver()
    method Version (line 223) | public Version Version()
    method Exception (line 235) | public Exception Exception()
    method AndroidId (line 373) | public string AndroidId()
    method ApplePushToken (line 387) | public string ApplePushToken()
    method BlackBerryPin (line 398) | public string BlackBerryPin()

FILE: Source/Bogus/DataSets/Vehicle.cs
  class Vehicle (line 8) | public class Vehicle : DataSet
    method Vin (line 17) | public string Vin(bool strict = false)
    method Manufacturer (line 40) | public string Manufacturer()
    method Model (line 48) | public string Model()
    method Type (line 56) | public string Type()
    method Fuel (line 64) | public string Fuel()

FILE: Source/Bogus/Database.cs
  class Database (line 13) | public static class Database
    method GetAllLocales (line 23) | public static string[] GetAllLocales()
    method LocaleResourceExists (line 41) | public static bool LocaleResourceExists(string locale)
    method GetLocaleResourceName (line 55) | private static string GetLocaleResourceName(string locale)
    method Initialize (line 63) | private static ConcurrentDictionary<string, BObject> Initialize()
    method DeserializeLocale (line 71) | internal static BObject DeserializeLocale(string locale)
    method GetLocale (line 83) | public static BObject GetLocale(string locale)
    method ResetLocale (line 92) | public static void ResetLocale(string locale)
    method HasKey (line 100) | public static bool HasKey(string category, string path, string locale,...
    method Get (line 121) | public static BValue Get(string category, string path, string locale =...
    method Select (line 138) | private static BValue Select(string category, string path, BValue loca...

FILE: Source/Bogus/Distributions/Gaussian/ExtensionsForRandomizer.cs
  class ExtensionsForRandomizer (line 6) | public static class ExtensionsForRandomizer
    method InverseNCD (line 33) | private static double InverseNCD(double probability)
    method GaussianDouble (line 77) | public static double GaussianDouble(this Randomizer rnd, double mean, ...
    method GaussianInt (line 95) | public static int GaussianInt(this Randomizer rnd, double mean, double...
    method GaussianFloat (line 112) | public static float GaussianFloat(this Randomizer rnd, double mean, do...
    method GaussianDecimal (line 129) | public static decimal GaussianDecimal(this Randomizer rnd, double mean...

FILE: Source/Bogus/Extensions/Belgium/ExtensionsForBelgium.cs
  class ExtensionsForBelgium (line 8) | public static class ExtensionsForBelgium
    method NationalNumber (line 16) | public static string NationalNumber(this Person p, bool includeFormatS...
    method CalculateCheckNumber (line 46) | internal static string CalculateCheckNumber(string baseNumber, DateTim...
    method FormatNationalNumber (line 57) | private static string FormatNationalNumber(string nationalNumber)

FILE: Source/Bogus/Extensions/Brazil/ExtensionsForBrazil.cs
  class ExtensionsForBrazil (line 9) | public static class ExtensionsForBrazil
    method Cpf (line 18) | public static string Cpf(this Person p, bool includeFormatSymbols = true)
    method FormatCpf (line 62) | public static string FormatCpf(int[] digits, bool includeFormatSymbols)
    method Cnpj (line 79) | public static string Cnpj(this Company c, bool includeFormatSymbols = ...

FILE: Source/Bogus/Extensions/Canada/ExtensionsForCanada.cs
  class ExtensionsForCanada (line 8) | public static class ExtensionsForCanada
    method Sin (line 15) | public static string Sin(this Person p)

FILE: Source/Bogus/Extensions/Denmark/ExtensionsForDenmark.cs
  class ExtensionsForDenmark (line 9) | public static class ExtensionsForDenmark
    method Cpr (line 18) | public static string Cpr(this Person p, bool validChecksum = true, boo...
    method GenerateIndividualFourDigitNumber (line 80) | private static string GenerateIndividualFourDigitNumber(Randomizer r, ...
    method GenerateIndividualThreeDigitNumber (line 116) | private static string GenerateIndividualThreeDigitNumber(Randomizer r,...
    method GenerateChecksum (line 152) | private static bool GenerateChecksum(string birthDate, DataSets.Name.G...

FILE: Source/Bogus/Extensions/ExtensionsForCultureInfo.cs
  class ExtensionsForCultureInfo (line 9) | public static class ExtensionsForCultureInfo
    method ToBogusLocale (line 25) | public static string ToBogusLocale(this CultureInfo ci)
    method Normalize (line 57) | private static string Normalize(CultureInfo ci)

FILE: Source/Bogus/Extensions/ExtensionsForPropertyInfo.cs
  class ExtensionsForPropertyInfo (line 6) | public static class ExtensionsForPropertyInfo
    method CreateSetter (line 11) | public static Action<T, object> CreateSetter<T>(this PropertyInfo prop...
    method CreateSetterGeneric (line 22) | private static Action<T, object> CreateSetterGeneric<T, V>(MethodInfo ...

FILE: Source/Bogus/Extensions/ExtensionsForRandomizer.cs
  class ExtensionsForRandomizer (line 3) | public static class ExtensionsForRandomizer
    method Decimal2 (line 10) | public static decimal Decimal2(this Randomizer r, decimal min = 0.0m, ...

FILE: Source/Bogus/Extensions/ExtensionsForString.cs
  class ExtensionsForString (line 10) | public static class ExtensionsForString
    method ClampLength (line 18) | public static string ClampLength(this string str, int? min = null, int...
    method RemoveDiacritics (line 38) | public static string RemoveDiacritics(this string @this)
    method Transliterate (line 60) | public static string Transliterate(this string @this, string lang = "en")

FILE: Source/Bogus/Extensions/Extras/CheckDigitExtension.cs
  class CheckDigitExtension (line 10) | public static class CheckDigitExtension
    method CheckDigit (line 19) | public static int CheckDigit(this IList<int> digits)
    method AppendCheckDigit (line 31) | public static IList<int> AppendCheckDigit(this IList<int> digits)
    method HasValidCheckDigit (line 43) | public static bool HasValidCheckDigit(this IList<int> digits)
    method ToDigitList (line 53) | private static IList<int> ToDigitList(this string digits)
    method CheckDigit (line 63) | public static string CheckDigit(this string digits)
    method AppendCheckDigit (line 73) | public static string AppendCheckDigit(this string digits)
    method HasValidCheckDigit (line 83) | public static bool HasValidCheckDigit(this string digits)

FILE: Source/Bogus/Extensions/Extras/FinanceExtensions.cs
  class FinanceExtensions (line 5) | public static class FinanceExtensions
    method CreditCardNumberObfuscated (line 11) | public static string CreditCardNumberObfuscated(this Finance f, string...
    method CreditCardNumberLastFourDigits (line 21) | public static string CreditCardNumberLastFourDigits(this Finance f)

FILE: Source/Bogus/Extensions/Finland/ExtensionsForFinland.cs
  class ExtensionsForFinland (line 8) | public static class ExtensionsForFinland
    method Henkilotunnus (line 13) | public static string Henkilotunnus(this Person p)

FILE: Source/Bogus/Extensions/Iran/ExtensionsForIran.cs
  class ExtensionsForIran (line 6) | public static class ExtensionsForIran
    method IranianNationalNumber (line 13) | public static string IranianNationalNumber(this Person p)

FILE: Source/Bogus/Extensions/Italy/ExtensionsForItaly.CodiceFiscale.cs
  class CodiceFiscaleGenerator (line 14) | internal static class CodiceFiscaleGenerator
    method Generate (line 118) | public static string Generate(
    method ComputeChecksumCodiceFiscale (line 150) | private static char ComputeChecksumCodiceFiscale(string prefix, bool v...
    method GetFiscalCodeSqueezedName (line 178) | private static string GetFiscalCodeSqueezedName(string name, bool isFi...
    method IsVowel (line 249) | private static bool IsVowel(char c)

FILE: Source/Bogus/Extensions/Italy/ExtensionsForItaly.cs
  class ExtensionsForItaly (line 9) | public static class ExtensionsForItaly
    method CodiceFiscale (line 19) | public static string CodiceFiscale(this Person p, bool validChecksum =...
    method CodiceFiscale (line 41) | public static string CodiceFiscale(

FILE: Source/Bogus/Extensions/Norway/ExtensionsForNorway.cs
  class ExtensionsForNorway (line 8) | public static class ExtensionsForNorway
    method Fodselsnummer (line 13) | public static string Fodselsnummer(this Person p)
    method GenerateIndividualNumber (line 65) | private static string GenerateIndividualNumber(Randomizer r, DataSets....
    method GenerateChecksum (line 95) | private static bool GenerateChecksum(string birthDate, string individu...

FILE: Source/Bogus/Extensions/Poland/ExtensionsForPoland.cs
  class ExtensionsForPoland (line 12) | public static class ExtensionsForPoland
    method Pesel (line 18) | public static string Pesel(this Person person)
    method AppendPeselDateOfBirth (line 38) | private static StringBuilder AppendPeselDateOfBirth(this StringBuilder...
    method AppendPeselGender (line 57) | private static StringBuilder AppendPeselGender(this StringBuilder buil...
    method AppendPeselChecksum (line 65) | private static StringBuilder AppendPeselChecksum(this StringBuilder bu...
    method Nip (line 85) | public static string Nip(this Company company)
    method Regon (line 108) | public static string Regon(this Company company, RegonType type = Rego...
    type RegonType (line 124) | public enum RegonType

FILE: Source/Bogus/Extensions/Portugal/ExtensionsForPortugal.cs
  class ExtensionsForPortugal (line 9) | public static class ExtensionsForPortugal
    method Nif (line 18) | public static string Nif(this Person p)
    method Nipc (line 45) | public static string Nipc(this Company c)

FILE: Source/Bogus/Extensions/Portugal/TaxNumberGenerator.cs
  class TaxNumberGenerator (line 5) | internal static class TaxNumberGenerator
    method Create (line 15) | public static string Create(int[] arrNumber)

FILE: Source/Bogus/Extensions/Romania/ExtensionsForRomania.cs
  class ExtensionsForRomania (line 10) | public static class ExtensionsForRomania
    method Cnp (line 34) | public static string Cnp(this Person p)
    method GenerateChecksum (line 78) | private static string GenerateChecksum(string cnp)

FILE: Source/Bogus/Extensions/Romania/RomanianBirthCounty.cs
  type RomanianBirthCounty (line 3) | public enum RomanianBirthCounty

FILE: Source/Bogus/Extensions/Sweden/ExtensionsForSweden.cs
  class ExtensionsForSweden (line 11) | public static class ExtensionsForSweden
    method Personnummer (line 16) | public static string Personnummer(this Person person)
    method Samordningsnummer (line 53) | public static string Samordningsnummer(this Person person)
    method GenerateIndividualNumber (line 81) | private static string GenerateIndividualNumber(Randomizer r, Gender ge...
    method GetGenderNumber (line 90) | private static int GetGenderNumber(Randomizer r, Gender gender)
    method GetLuhn (line 99) | private static int GetLuhn(string value)

FILE: Source/Bogus/Extensions/UnitedKingdom/ExtensionsForGreatBritainRegistrationPlate.cs
  class ExtensionsForGreatBritainRegistrationPlate (line 11) | public static class ExtensionsForGreatBritainRegistrationPlate
    method GbRegistrationPlate (line 57) | public static string GbRegistrationPlate(this Vehicle vehicle, DateTim...
    method GenerateCurrentStylePlates (line 63) | private static string GenerateCurrentStylePlates(Vehicle vehicle, Date...
    method ApplySN07Exception (line 85) | private static void ApplySN07Exception(StringBuilder sb)
    method GetSecondaryLocation (line 94) | private static char GetSecondaryLocation(Vehicle vehicle, char primary...
    method GenerateRegistrationDate (line 131) | private static DateTime GenerateRegistrationDate(Vehicle vehicle, Date...

FILE: Source/Bogus/Extensions/UnitedKingdom/ExtensionsForUnitedKingdom.cs
  class ExtensionsForUnitedKingdom (line 11) | public static class ExtensionsForUnitedKingdom
    method SortCode (line 16) | public static string SortCode(this Finance finance, bool includeSepara...
    method Nino (line 32) | public static string Nino(this Finance finance, bool includeSeparator ...
    method CountryOfUnitedKingdom (line 66) | public static string CountryOfUnitedKingdom(this Address address)
    method VatNumber (line 80) | public static string VatNumber(this Finance finance, VatRegistrationNu...
    method CalculateChecksum (line 124) | private static int CalculateChecksum(int n)

FILE: Source/Bogus/Extensions/UnitedKingdom/VatRegistrationNumberType.cs
  type VatRegistrationNumberType (line 6) | public enum VatRegistrationNumberType

FILE: Source/Bogus/Extensions/UnitedStates/ExtensionsForUnitedStates.cs
  class ExtensionsForUnitedStates (line 8) | public static class ExtensionsForUnitedStates
    method Ssn (line 13) | public static string Ssn(this Person p)
    method Ein (line 43) | public static string Ein(this Company c)

FILE: Source/Bogus/Faker.cs
  class Faker (line 12) | public class Faker : ILocaleAware, IHasRandomizer, IHasContext
    method Faker (line 22) | public Faker(string locale = "en")
    method GetNotifier (line 55) | SeedNotifier IHasRandomizer.GetNotifier()
    method Parse (line 79) | public string Parse(string str)
    method PickRandom (line 239) | public T PickRandom<T>(IEnumerable<T> items)
    method PickRandom (line 247) | public T PickRandom<T>(IList<T> items)
    method PickRandom (line 255) | public T PickRandom<T>(ICollection<T> items)
    method PickRandom (line 263) | public T PickRandom<T>(List<T> items)
    method PickRandom (line 271) | public T PickRandom<T>(params T[] items)
    method PickRandomParam (line 279) | public T PickRandomParam<T>(params T[] items)
    method PickRandom (line 289) | public IEnumerable<T> PickRandom<T>(IEnumerable<T> items, int amountTo...
    method Make (line 306) | public IList<T> Make<T>(int count, Func<T> action)
    method Make (line 315) | public IList<T> Make<T>(int count, Func<int, T> action)
    method MakeLazy (line 324) | public IEnumerable<T> MakeLazy<T>(int count, Func<T> action)
    method MakeLazy (line 334) | public IEnumerable<T> MakeLazy<T>(int count, Func<int, T> action)
    method PickRandom (line 343) | public T PickRandom<T>() where T : struct, Enum
    method PickRandomWithout (line 352) | public T PickRandomWithout<T>(params T[] exclude) where T : struct, Enum
    method NewContext (line 366) | internal void NewContext()

FILE: Source/Bogus/Faker[T].Extensions.cs
  class ExtensionsForFakerT (line 9) | public static class ExtensionsForFakerT
    method GenerateBetween (line 18) | public static List<T> GenerateBetween<T>(this Faker<T> faker, int min,...
    method OrNull (line 33) | public static T OrNull<T>(this T value, in Faker f, float nullWeight =...
    method OrNull (line 46) | public static T? OrNull<T>(this T value, Faker f, float nullWeight = 0...
    method OrDefault (line 59) | public static T OrDefault<T>(this T value, Faker f, float defaultWeigh...

FILE: Source/Bogus/Faker[T].cs
  type IFakerTInternal (line 16) | public interface IFakerTInternal
  class Faker (line 43) | public class Faker<T> : IFakerTInternal, ILocaleAware, IRuleSet<T> where...
    method Clone (line 78) | public Faker<T> Clone()
    method Faker (line 130) | public Faker() : this("en", null)
    method Faker (line 137) | public Faker(string locale) : this(locale, null)
    method Faker (line 146) | public Faker(string locale = "en", IBinder binder = null)
    method UseSeed (line 160) | public virtual Faker<T> UseSeed(int seed)
    method UseDateTimeReference (line 173) | public virtual Faker<T> UseDateTimeReference(DateTime? refDate)
    method CustomInstantiator (line 184) | public virtual Faker<T> CustomInstantiator(Func<Faker, T> factoryMethod)
    method RuleFor (line 193) | public virtual Faker<T> RuleFor<TProperty>(Expression<Func<T, TPropert...
    method RuleFor (line 203) | public virtual Faker<T> RuleFor<TProperty>(Expression<Func<T, TPropert...
    method RuleFor (line 213) | public virtual Faker<T> RuleFor<TProperty>(Expression<Func<T, TPropert...
    method RuleFor (line 223) | public virtual Faker<T> RuleFor<TProperty>(Expression<Func<T, TPropert...
    method RuleFor (line 235) | public virtual Faker<T> RuleFor<TProperty>(string propertyOrFieldName,...
    method RuleFor (line 251) | public virtual Faker<T> RuleFor<TProperty>(string propertyOrFieldName,...
    method AddRule (line 262) | protected virtual Faker<T> AddRule(string propertyOrField, Func<Faker,...
    method Rules (line 282) | public virtual Faker<T> Rules(Action<Faker, T> setActions)
    method RuleForType (line 307) | public virtual Faker<T> RuleForType<TType>(Type type, Func<Faker, TTyp...
    method GetFieldOrPropertyType (line 331) | protected virtual Type GetFieldOrPropertyType(MemberInfo mi)
    method RuleSet (line 351) | public virtual Faker<T> RuleSet(string ruleSetName, Action<IRuleSet<T>...
    method EnsureMemberExists (line 363) | protected virtual void EnsureMemberExists(string propNameOrField, stri...
    method Ignore (line 376) | public virtual Faker<T> Ignore(string propertyOrFieldName)
    method Ignore (line 399) | public virtual Faker<T> Ignore<TPropertyOrField>(Expression<Func<T, TP...
    method StrictMode (line 412) | public virtual Faker<T> StrictMode(bool ensureRulesForAllProperties)
    method FinishWith (line 422) | public virtual Faker<T> FinishWith(Action<Faker, T> action)
    method ParseDirtyRulesSets (line 436) | protected virtual string[] ParseDirtyRulesSets(string dirtyRules)
    method Generate (line 456) | public virtual T Generate(string ruleSets = null)
    method Generate (line 495) | public virtual List<T> Generate(int count, string ruleSets = null)
    method GenerateLazy (line 514) | public virtual IEnumerable<T> GenerateLazy(int count, string ruleSets ...
    method GenerateForever (line 533) | public virtual IEnumerable<T> GenerateForever(string ruleSets = null)
    method Populate (line 553) | public virtual void Populate(T instance, string ruleSets = null)
    method PopulateInternal (line 571) | protected virtual void PopulateInternal(T instance, string[] ruleSets)
    method PopulateProperty (line 616) | private void PopulateProperty(T instance, PopulateAction<T> action)
    method Validate (line 661) | public virtual bool Validate(string ruleSets = null)
    method AssertConfigurationIsValid (line 680) | public virtual void AssertConfigurationIsValid(string ruleSets = null)
    method MakeValidationException (line 703) | protected virtual ValidationException MakeValidationException(Validati...
    method ValidateInternal (line 725) | private ValidationResult ValidateInternal(string[] ruleSets)
    method RuleFor (line 798) | [Obsolete("This exists here only as a Visual Studio IntelliSense work ...

FILE: Source/Bogus/Hashids.cs
  class Hashids (line 12) | public class Hashids : IHashids
    method Hashids (line 35) | public Hashids() : this(string.Empty, 0, DEFAULT_ALPHABET, DEFAULT_SEPS)
    method Hashids (line 45) | public Hashids(string salt = "", int minHashLength = 0, string alphabe...
    method Encode (line 67) | public virtual string Encode(params int[] numbers)
    method Encode (line 77) | public virtual string Encode(IEnumerable<int> numbers)
    method Decode (line 88) | public virtual int[] Decode(string hash)
    method EncodeHex (line 98) | public virtual string EncodeHex(string hex)
    method DecodeHex (line 120) | public virtual string DecodeHex(string hash)
    method DecodeLong (line 136) | public long[] DecodeLong(string hash)
    method EncodeLong (line 146) | public string EncodeLong(params long[] numbers)
    method EncodeLong (line 156) | public string EncodeLong(IEnumerable<long> numbers)
    method Encrypt (line 166) | [Obsolete("Use 'Encode' instead. The method was renamed to better expl...
    method EncryptHex (line 177) | [Obsolete("Use 'EncodeHex' instead. The method was renamed to better e...
    method Decrypt (line 188) | [Obsolete("Use 'Decode' instead. Method was renamed to better explain ...
    method DecryptHex (line 199) | [Obsolete("Use 'DecodeHex' instead. The method was renamed to better e...
    method SetupSeps (line 205) | private void SetupSeps()
    method SetupGuards (line 235) | private void SetupGuards()
    method GenerateHashFrom (line 259) | private string GenerateHashFrom(long[] numbers)
    method Hash (line 327) | private string Hash(long input, string alphabet)
    method Unhash (line 340) | private long Unhash(string input, string alphabet)
    method GetNumbersFrom (line 353) | private long[] GetNumbersFrom(string hash)
    method ConsistentShuffle (line 393) | private string ConsistentShuffle(string alphabet, string salt)

FILE: Source/Bogus/IHashids.cs
  type IHashids (line 8) | public interface IHashids
    method Decode (line 16) | int[] Decode(string hash);
    method DecodeLong (line 23) | long[] DecodeLong(string hash);
    method DecodeHex (line 30) | string DecodeHex(string hash);
    method Encode (line 37) | string Encode(params int[] numbers);
    method Encode (line 44) | string Encode(IEnumerable<int> numbers);
    method EncodeLong (line 51) | string EncodeLong(params long[] numbers);
    method EncodeLong (line 58) | string EncodeLong(IEnumerable<long> numbers);
    method EncodeHex (line 65) | string EncodeHex(string hex);

FILE: Source/Bogus/ILocaleAware.cs
  type ILocaleAware (line 8) | public interface ILocaleAware
  type IHasContext (line 19) | public interface IHasContext

FILE: Source/Bogus/IRuleSet.cs
  type IRuleSet (line 9) | public interface IRuleSet<T> where T : class
    method CustomInstantiator (line 14) | Faker<T> CustomInstantiator(Func<Faker, T> factoryMethod);
    method RuleFor (line 19) | Faker<T> RuleFor<TProperty>(Expression<Func<T, TProperty>> property, F...
    method RuleFor (line 24) | Faker<T> RuleFor<TProperty>(Expression<Func<T, TProperty>> property, F...
    method RuleFor (line 29) | Faker<T> RuleFor<TProperty>(Expression<Func<T, TProperty>> property, F...
    method Ignore (line 34) | Faker<T> Ignore<TPropertyOrField>(Expression<Func<T, TPropertyOrField>...
    method StrictMode (line 40) | Faker<T> StrictMode(bool ensureRulesForAllProperties);
    method FinishWith (line 45) | Faker<T> FinishWith(Action<Faker, T> action);
    method RuleFor (line 50) | Faker<T> RuleFor<TProperty>(Expression<Func<T, TProperty>> property, T...
    method Rules (line 57) | Faker<T> Rules(Action<Faker, T> setActions);

FILE: Source/Bogus/Person.cs
  class Person (line 12) | public class Person : IHasRandomizer, IHasContext
    class CardAddress (line 20) | public class CardAddress
      class CardGeo (line 22) | public class CardGeo
    class CardCompany (line 36) | public class CardCompany
    method Person (line 58) | public Person(string locale = "en", int? seed = null, DateTime? refDat...
    method Person (line 72) | internal Person(Randomizer randomizer, DateTime? refDate, string local...
    method GetDataSources (line 83) | private void GetDataSources(string locale)
    method Populate (line 93) | protected internal virtual void Populate()
    method GetNotifier (line 145) | SeedNotifier IHasRandomizer.GetNotifier()

FILE: Source/Bogus/Platform/ExtensionsForType.cs
  method GetCustomAttributeX (line 13) | public static T GetCustomAttributeX<T>(this Type type) where T : Attribute
  method IsEnum (line 24) | public static bool IsEnum(this Type type)
  method GetAssembly (line 33) | public static Assembly GetAssembly(this Type type)

FILE: Source/Bogus/Premium/ContextHelper.cs
  class ContextHelper (line 7) | public static class ContextHelper
    method GetOrSet (line 9) | public static T GetOrSet<T>(string key, Faker f, Func<T> factory) wher...
    method GetOrSet (line 26) | public static T GetOrSet<T>(Faker f, Func<T> factory) where T : DataSet

FILE: Source/Bogus/Premium/License.cs
  class License (line 3) | public static class License

FILE: Source/Bogus/Premium/LicenseVerifier.cs
  class LicenseVerifier (line 13) | public static class LicenseVerifier
    method VerifyLicense (line 15) | public static bool VerifyLicense(string licenseTo, string licenseKey)
    method AssertKeyIsNotBanned (line 42) | private static void AssertKeyIsNotBanned(string licenseKey)
    method FindLicense (line 48) | public static string FindLicense()
    method FindLicense (line 59) | public static string FindLicense(string probePath)
    method ReadLicense (line 91) | public static void ReadLicense(string path, out string name, out strin...

FILE: Source/Bogus/Premium/PremiumDataSet.cs
  class PremiumDataSet (line 11) | public abstract class PremiumDataSet : DataSet
    method Get (line 13) | protected internal override BValue Get(string path)
    method Get (line 19) | protected internal override BValue Get(string category, string path)
    method HasKey (line 25) | protected internal override bool HasKey(string path, bool includeFallb...
    method CheckLicense (line 31) | protected virtual void CheckLicense()
    method Initialize (line 63) | protected abstract void Initialize();
    method LoadResource (line 65) | protected void LoadResource(Assembly asm, string resourceName)

FILE: Source/Bogus/Properties/AssemblyInfo.cs
  class AssemblyVersionInformation (line 17) | internal static class AssemblyVersionInformation {

FILE: Source/Bogus/PropertyName.cs
  class PropertyName (line 7) | [EditorBrowsable(EditorBrowsableState.Never)]
    method For (line 10) | public static string For<T, TProp>(Expression<Func<T, TProp>> expression)
    method For (line 16) | public static string For<T>(Expression<Func<T, object>> expression)
    method For (line 22) | public static string For(Expression<Func<object>> expression)
    method GetMemberName (line 28) | public static string GetMemberName(Expression expression)

FILE: Source/Bogus/Randomizer.cs
  class Randomizer (line 15) | public class Randomizer
    method Randomizer (line 30) | public Randomizer()
    method Randomizer (line 39) | public Randomizer(int localSeed)
    method Number (line 53) | public int Number(int max)
    method Digits (line 64) | public int[] Digits(int count, int minDigit = 0, int maxDigit = 9)
    method Number (line 82) | public int Number(int min = 0, int max = 1)
    method Even (line 118) | public int Even(int min = 0, int max = 1)
    method Odd (line 146) | public int Odd(int min = 0, int max = 1)
    method Double (line 178) | public double Double(double min = 0.0d, double max = 1.0d)
    method Decimal (line 198) | public decimal Decimal(decimal min = 0.0m, decimal max = 1.0m)
    method Float (line 208) | public float Float(float min = 0.0f, float max = 1.0f)
    method Byte (line 218) | public byte Byte(byte min = byte.MinValue, byte max = byte.MaxValue)
    method Bytes (line 227) | public byte[] Bytes(int count)
    method SByte (line 242) | public sbyte SByte(sbyte min = sbyte.MinValue, sbyte max = sbyte.MaxVa...
    method Int (line 252) | public int Int(int min = int.MinValue, int max = int.MaxValue)
    method UInt (line 262) | public uint UInt(uint min = uint.MinValue, uint max = uint.MaxValue)
    method ULong (line 272) | public ulong ULong(ulong min = ulong.MinValue, ulong max = ulong.MaxVa...
    method Long (line 282) | public long Long(long min = long.MinValue, long max = long.MaxValue)
    method Short (line 293) | public short Short(short min = short.MinValue, short max = short.MaxVa...
    method UShort (line 303) | public ushort UShort(ushort min = ushort.MinValue, ushort max = ushort...
    method Char (line 313) | public char Char(char min = char.MinValue, char max = char.MaxValue)
    method Chars (line 324) | public char[] Chars(char min = char.MinValue, char max = char.MaxValue...
    method String (line 341) | public string String(int? length = null, char minChar = char.MinValue,...
    method String (line 358) | public string String(int minLength, int maxLength, char minChar = char...
    method String2 (line 370) | public string String2(int length, string chars = "abcdefghijklmnopqrst...
    method String2 (line 390) | public string String2(int minLength, int maxLength, string chars = "ab...
    method Utf16String (line 403) | public string Utf16String(int minLength = 40, int maxLength = 80, bool...
    method Hash (line 450) | public string Hash(int length = 40, bool upperCase = false)
    method Bool (line 458) | public bool Bool()
    method Bool (line 467) | public bool Bool(float weight)
    method ArrayElement (line 475) | public T ArrayElement<T>(T[] array)
    method ArrayElement (line 487) | public BValue ArrayElement(BArray props, int? min = null, int? max = n...
    method ArrayElement (line 496) | public string ArrayElement(Array array)
    method ArrayElements (line 510) | public T[] ArrayElements<T>(T[] array, int? count = null)
    method ListItem (line 523) | public T ListItem<T>(List<T> list)
    method ListItem (line 531) | public T ListItem<T>(IList<T> list)
    method ListItems (line 545) | public List<T> ListItems<T>(IList<T> items, int? count = null)
    method ListItems (line 560) | public IList<T> ListItems<T>(List<T> items, int? count = null)
    method CollectionItem (line 568) | public T CollectionItem<T>(ICollection<T> collection)
    method ReplaceNumbers (line 583) | public string ReplaceNumbers(string format, char symbol = '#')
    method ReplaceSymbols (line 595) | public string ReplaceSymbols(string format, char symbol, Func<char> func)
    method Replace (line 605) | public string Replace(string format)
    method ClampString (line 635) | public string ClampString(string str, int? min = null, int? max = null)
    method Enum (line 655) | public T Enum<T>(params T[] exclude) where T : struct, Enum
    method EnumValues (line 686) | public T[] EnumValues<T>(int? count = null, params T[] exclude) where ...
    method Shuffle (line 716) | public IEnumerable<T> Shuffle<T>(IEnumerable<T> source)
    method Word (line 738) | public string Word()
    method Words (line 749) | public string Words(int? count = null)
    method WordsArray (line 764) | public string[] WordsArray(int min, int max)
    method WordsArray (line 773) | public string[] WordsArray(int count)
    method Guid (line 783) | public Guid Guid()
    method Uuid (line 792) | public Guid Uuid()
    method RandomLocale (line 801) | public string RandomLocale()
    method AlphaNumeric (line 818) | public string AlphaNumeric(int length)
    method Hexadecimal (line 833) | public string Hexadecimal(int length = 1, string prefix = "0x")
    method WeightedRandom (line 845) | public T WeightedRandom<T>(T[] items, float[] weights)
  class WordFunctions (line 875) | public class WordFunctions
    method WordFunctions (line 894) | public WordFunctions(Randomizer r)
    method Init (line 906) | private void Init()

FILE: Source/Bogus/ResourceHelper.cs
  class ResourceHelper (line 9) | public static class ResourceHelper
    method ResourceExists (line 17) | public static bool ResourceExists(System.Reflection.Assembly assembly,...
    method ReadResource (line 28) | public static byte[] ReadResource(System.Reflection.Assembly assembly,...
    method ReadBValueResource (line 43) | public static BValue ReadBValueResource(System.Reflection.Assembly ass...
    method ReadBObjectResource (line 58) | public static BObject ReadBObjectResource(System.Reflection.Assembly a...

FILE: Source/Bogus/Rule.cs
  class Rule (line 9) | public class Rule<T>
  class MultiDictionary (line 32) | public class PopulateAction<T> : Rule<Func<Faker, T, object>>;
    method MultiDictionary (line 38) | public MultiDictionary(IEqualityComparer<Key> comparer) : base(comparer)
    method Add (line 42) | public void Add(Key key, Key2 key2, Value value)
  class MultiSetDictionary (line 53) | public class MultiSetDictionary<Key, Value> : Dictionary<Key, HashSet<Va...
    method MultiSetDictionary (line 55) | public MultiSetDictionary(IEqualityComparer<Key> comparer) : base(comp...
    method Add (line 59) | public void Add(Key key, Value value)

FILE: Source/Bogus/SeedNotifier[T].cs
  type IHasRandomizer (line 9) | public interface IHasRandomizer
    method GetNotifier (line 22) | SeedNotifier GetNotifier();
  class SeedNotifier (line 33) | public class SeedNotifier
    method Flow (line 41) | public U Flow<U>(U item) where U : IHasRandomizer
    method Notify (line 50) | public void Notify(Randomizer r)

FILE: Source/Bogus/Tokenizer.cs
  class MustashMethod (line 8) | public class MustashMethod
  class Tokenizer (line 15) | public static class Tokenizer
    method Tokenizer (line 19) | static Tokenizer()
    method RegisterMustashMethods (line 24) | public static void RegisterMustashMethods(Type type)
    method Parse (line 48) | public static string Parse(string str, params object[] dataSets)
    method FindDataSetWithMethod (line 90) | private static object FindDataSetWithMethod(object[] dataSets, string ...
    method ParseMustashText (line 103) | private static void ParseMustashText(string str, int start, int end, o...
    method FindMustashMethod (line 125) | private static MustashMethod FindMustashMethod(string methodName, stri...
    method ConvertStringArgumentsToObjects (line 138) | private static object[] ConvertStringArgumentsToObjects(string[] param...
    method GetValueForParameter (line 160) | private static object GetValueForParameter(ParameterInfo parameterInfo...
    method GetArgumentsString (line 171) | private static string GetArgumentsString(string methodCall, int parame...

FILE: Source/Bogus/Transliterater.Generated.cs
  class Transliterater (line 9) | public static partial class Transliterater
    method BuildCharMap (line 11) | [EditorBrowsable(EditorBrowsableState.Never)]
    method BuildDiatricMap (line 782) | [EditorBrowsable(EditorBrowsableState.Never)]
    method BuildLangCharMap (line 841) | [EditorBrowsable(EditorBrowsableState.Never)]
    method BuildSymbolMap (line 964) | [EditorBrowsable(EditorBrowsableState.Never)]

FILE: Source/Bogus/Transliterater.cs
  class Transliterater (line 11) | public static partial class Transliterater
    method Translate (line 18) | public static string Translate(string input, string lang = "en")
    method WalkTrie (line 85) | [EditorBrowsable(EditorBrowsableState.Never)]
  class Trie (line 136) | [EditorBrowsable(EditorBrowsableState.Never)]
    method Insert (line 148) | public static void Insert(Trie node, string key, string value)
    method Find (line 169) | public static string Find(Trie node, string key)

FILE: Source/Bogus/Utils.cs
  class Utils (line 10) | public static class Utils
    method Slugify (line 15) | public static string Slugify(string txt)
    method Slashify (line 26) | public static string Slashify(IEnumerable<string> parts, string separa...

FILE: Source/Bogus/ValidationException.cs
  class ValidationException (line 8) | public class ValidationException : Exception
    method ValidationException (line 10) | public ValidationException(string message) : base(message)

FILE: Source/Bogus/ValidationResult.cs
  class ValidationResult (line 8) | public class ValidationResult

FILE: Source/Bogus/Vendor/UserAgentGenerator.cs
  class UserAgentGenerator (line 6) | internal class UserAgentGenerator
    method UserAgentGenerator (line 10) | internal UserAgentGenerator(Func<Randomizer> random)
    method VersionString (line 17) | internal string VersionString(string type, string delim = ".")
    method RandomRevision (line 54) | internal string RandomRevision(int dots)
    method RandomLanguage (line 64) | private string RandomLanguage()
    method RandomBrowser (line 80) | internal string RandomBrowser()
    method RandomOS (line 119) | internal string RandomOS(string browser)
    method RandomProc (line 145) | internal string RandomProc(string os)
    method BrowserAgent (line 156) | internal string BrowserAgent(string browser, string arch)
    method Generate (line 226) | public string Generate()

FILE: Source/Builder/Build.cs
  class Build (line 32) | partial class Build : NukeBuild
    class Folders (line 37) | public static class Folders
    class Files (line 45) | public static class Files
    method Main (line 54) | public static int Main()
    method OnBuildInitialized (line 58) | protected override void OnBuildInitialized()
    method MakeAttributes (line 278) | AssemblyInfo.Attribute[] MakeAttributes(bool includeSnk)

FILE: Source/Builder/Configuration.cs
  class Configuration (line 6) | [TypeConverter(typeof(TypeConverter<Configuration>))]

FILE: Source/Builder/Utils.cs
  class BuildContext (line 27) | public static class BuildContext
    method GetFullVersion (line 29) | public static string GetFullVersion()
    method GetVersionWithoutPreReleeaseName (line 46) | public static string GetVersionWithoutPreReleeaseName(string fullVersion)
  class Build (line 61) | partial class Build
    type BuildTimeInfo (line 63) | public record BuildTimeInfo(
    method MakeBuildInfo (line 70) | public static void MakeBuildInfo(Project project, BuildTimeInfo bti)
  class ExtensionMethodsForProject (line 100) | public static class ExtensionMethodsForProject
    method BinFolder (line 102) | public static AbsolutePath BinFolder(this Project p)
    method CompileOutput (line 107) | public static AbsolutePath CompileOutput(this Project p)
    method ZipFile (line 112) | public static AbsolutePath ZipFile(this Project p)
  class History (line 119) | public static class History
    method All (line 121) | public static string All(AbsolutePath historyFile)
    method NugetText (line 125) | public static string NugetText(AbsolutePath historyFile, string github...
  class ExtensionsForNuke (line 143) | public static class ExtensionsForNuke
    method SetNoWarns2 (line 145) | public static DotNetBuildSettings SetNoWarns2(this DotNetBuildSettings...
    method UnZipWithPasswordTo (line 155) | public static void UnZipWithPasswordTo(this AbsolutePath archiveFile, ...

FILE: Source/Builder/gulpfile.js
  constant BSON (line 17) | const BSON = require("bson");
  function importLocalesJsonTask (line 31) | function importLocalesJsonTask(){
  function importLocalesTask (line 88) | function importLocalesTask(){
  function removeAvatarUri (line 108) | function removeAvatarUri(obj){
  function transformPostCodeByState (line 116) | function transformPostCodeByState(obj) {
  function ensureAllArraysAreStrings (line 121) | function ensureAllArraysAreStrings(obj) {
  function transformCurrency (line 134) | function transformCurrency(obj) {
  function transformMimeTypes (line 147) | function transformMimeTypes(obj) {
  function specializeLocale (line 162) | function specializeLocale(locale, localeCode) {
  function log (line 168) | function log(msg) {
  function log2 (line 171) | function log2(msg) {
  function importTransliterateTask (line 175) | function importTransliterateTask(cb) {
Condensed preview — 415 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,880K chars).
[
  {
    "path": ".config/dotnet-tools.json",
    "chars": 273,
    "preview": "{\n  \"version\": 1,\n  \"isRoot\": true,\n  \"tools\": {\n    \"benchmarkdotnet.tool\": {\n      \"version\": \"0.12.1\",\n      \"command"
  },
  {
    "path": ".editorconfig",
    "chars": 472,
    "preview": "root=true\n\n[*.cs]\ntrim_trailing_whitespace=true\ninsert_final_newline=true\n\n[*]\nindent_style = space\nindent_size = 3\n\n[*."
  },
  {
    "path": ".gitattributes",
    "chars": 489,
    "preview": "# Auto detect text files and perform LF normalization\n# http://davidlaing.com/2012/09/19/customise-your-gitattributes-to"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 123,
    "preview": "# These are supported funding model platforms\n\ngithub: bchavez\ncustom: https://github.com/bchavez/Bogus/wiki/Bogus-Premi"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 3115,
    "preview": "name: 🐞 Bug Report\ndescription: \"Report something that doesn't look right 🔧\"\nlabels: [\"\"]\nbody:\n  - type: markdown\n    a"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 28,
    "preview": "blank_issues_enabled: true\n\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 1193,
    "preview": "name: 🚀 Feature request\ndescription: If you have a feature request 💡\nlabels: [\"\"]\nbody:\n  - type: textarea\n    id: featu"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/support.yml",
    "chars": 2189,
    "preview": "name: ❓ Support\ndescription: \"If you need help using Bogus 🏥\"\nlabels: [\"question\"]\nbody:\n\n  - type: markdown\n    attribu"
  },
  {
    "path": ".gitignore",
    "chars": 2430,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# cust"
  },
  {
    "path": ".gitmodules",
    "chars": 308,
    "preview": "[submodule \"Source/fakerjs\"]\n\tpath = Source/fakerjs\n\turl = https://github.com/faker-js/faker.js.git\n[submodule \"Source/h"
  },
  {
    "path": ".nuke/build.schema.json",
    "chars": 3026,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"definitions\": {\n    \"Host\": {\n      \"type\": \"string\",\n     "
  },
  {
    "path": ".nuke/parameters.json",
    "chars": 72,
    "preview": "{\n  \"$schema\": \"./build.schema.json\",\n  \"Solution\": \"Source/Bogus.sln\"\n}"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1601,
    "preview": "New Features\n------------\nBogus a superset of **faker.js**'s features. Adding additional features are welcome. New featu"
  },
  {
    "path": "Examples/EFCoreSeedDb/.config/dotnet-tools.json",
    "chars": 153,
    "preview": "{\n  \"version\": 1,\n  \"isRoot\": true,\n  \"tools\": {\n    \"dotnet-ef\": {\n      \"version\": \"3.1.7\",\n      \"commands\": [\n      "
  },
  {
    "path": "Examples/EFCoreSeedDb/EFCoreSeedDb.csproj",
    "chars": 593,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</Targ"
  },
  {
    "path": "Examples/EFCoreSeedDb/Program.cs",
    "chars": 4375,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Bogus;\nusing Bogus.Extensions;\nusing Microsoft"
  },
  {
    "path": "Examples/EFCoreSeedDb/README.md",
    "chars": 1221,
    "preview": "[1]:https://docs.microsoft.com/en-us/ef/core/get-started/\n[2]:https://docs.microsoft.com/en-us/ef/core/modeling/data-see"
  },
  {
    "path": "Examples/Examples.sln",
    "chars": 4136,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 16\r\nVisualStudioVersion = 16.0.2"
  },
  {
    "path": "Examples/ExtendingBogus/ExtendingBogus.csproj",
    "chars": 320,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</Targ"
  },
  {
    "path": "Examples/ExtendingBogus/ExtensionsForAddress.cs",
    "chars": 658,
    "preview": "namespace ExtendingBogus\n{\n   /// <summary>\n   /// Augment the existing <seealso cref=\"Bogus.DataSets.Address\"/> DataSe"
  },
  {
    "path": "Examples/ExtendingBogus/ExtensionsForTesting.cs",
    "chars": 374,
    "preview": "using System;\nusing Newtonsoft.Json;\n\nnamespace ExtendingBogus\n{\n   public static class ExtensionsForTesting\n   {\n     "
  },
  {
    "path": "Examples/ExtendingBogus/FoodDataSet.cs",
    "chars": 1175,
    "preview": "using Bogus;\nusing Bogus.Premium;\n\nnamespace ExtendingBogus\n{\n   /// <summary>\n   /// The following shows how to create"
  },
  {
    "path": "Examples/ExtendingBogus/Program.cs",
    "chars": 754,
    "preview": "using Bogus;\n\nnamespace ExtendingBogus\n{\n   class Program\n   {\n      static void Main(string[] args)\n      {\n         v"
  },
  {
    "path": "Examples/ExtendingBogus/README.md",
    "chars": 975,
    "preview": "[1]:https://github.com/bchavez/Bogus#the-great-c-example\n\n## Getting Started with Bogus\n\n#### Requirements\n* **.NET Core"
  },
  {
    "path": "Examples/GettingStarted/GettingStarted.csproj",
    "chars": 320,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</Targ"
  },
  {
    "path": "Examples/GettingStarted/Program.cs",
    "chars": 4055,
    "preview": "using System;\nusing System.Collections.Generic;\nusing Bogus;\nusing Bogus.DataSets;\nusing Bogus.Extensions;\nusing Newton"
  },
  {
    "path": "Examples/GettingStarted/README.md",
    "chars": 554,
    "preview": "[1]:https://github.com/bchavez/Bogus#the-great-c-example\n\n## Getting Started with Bogus\n\n#### Requirements\n* **.NET Core"
  },
  {
    "path": "HISTORY.md",
    "chars": 39265,
    "preview": "## v35.6.5\nRelease Date: 2025-10-25\n* PR 622: Adds music and vehicle faker classes to parse method and unit tests. Thank"
  },
  {
    "path": "LICENSE",
    "chars": 3550,
    "preview": "MIT License\n\nBogus - Copyright (c) 2015 Brian Chavez \n* http://github.com/bchavez/Bogus\n* http://bchavez.bitarmory.com\n\n"
  },
  {
    "path": "README.md",
    "chars": 60338,
    "preview": "[![Downloads](https://img.shields.io/nuget/dt/Bogus.svg)](https://www.nuget.org/packages/Bogus/) [![Build status](https:"
  },
  {
    "path": "Source/.editorconfig",
    "chars": 164,
    "preview": "[*]\nend_of_line=crlf\ntrim_trailing_whitespace=false\ninsert_final_newline=false\nindent_style=space\nindent_size=3\n\n[{*.yml"
  },
  {
    "path": "Source/Benchmark/BenchGenerate.cs",
    "chars": 2116,
    "preview": "using System.Linq;\nusing BenchmarkDotNet.Attributes;\nusing Bogus;\n\nnamespace Benchmark\n{\n   [MarkdownExporter, MemoryDi"
  },
  {
    "path": "Source/Benchmark/BenchRandomSubset.cs",
    "chars": 1955,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing BenchmarkDotNet.Attributes;\nusing Bogus;\n\nname"
  },
  {
    "path": "Source/Benchmark/BenchSsn.cs",
    "chars": 1245,
    "preview": "using BenchmarkDotNet.Attributes;\nusing Bogus;\n\nnamespace Benchmark\n{\n   [RPlotExporter]\n   public class BenchSsn\n   {\n"
  },
  {
    "path": "Source/Benchmark/BenchStringFill.cs",
    "chars": 1289,
    "preview": "using System.Text;\nusing BenchmarkDotNet.Attributes;\nusing Bogus;\n\nnamespace Benchmark\n{\n   [RPlotExporter]\n   public c"
  },
  {
    "path": "Source/Benchmark/Benchmark.csproj",
    "chars": 705,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n     <TargetFrameworks>netstandard2.0</TargetFrameworks>\n  </Prope"
  },
  {
    "path": "Source/Benchmark/PR300_BenchDecimal.cs",
    "chars": 4125,
    "preview": "using System;\nusing System.Threading;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Jobs;\nusing Bogus;\n\nnames"
  },
  {
    "path": "Source/Benchmark/PR300_BenchRandomNumber.cs",
    "chars": 4474,
    "preview": "using System;\nusing System.Threading;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Jobs;\nusing Bogus;\n\nnames"
  },
  {
    "path": "Source/Benchmark/README.md",
    "chars": 871,
    "preview": "### Running Benchmarks\n\n**Requirements:**\n* **.NET 3.1 SDK** or later.\n* **[`R` project for Statistical Computing](https"
  },
  {
    "path": "Source/Bogus/Binder.cs",
    "chars": 4085,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Runtime.Compile"
  },
  {
    "path": "Source/Bogus/Bogus.csproj",
    "chars": 3352,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <Description>A simple and sane data generator for populating ob"
  },
  {
    "path": "Source/Bogus/Bogus.ruleset",
    "chars": 264,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RuleSet Name=\"Default\" Description=\"Default\" ToolsVersion=\"14.0\">\n  <Rules Anal"
  },
  {
    "path": "Source/Bogus/BogusException.cs",
    "chars": 354,
    "preview": "using System;\n\nnamespace Bogus;\n\n/// <summary>\n/// General exception for Bogus.\n/// </summary>\npublic class BogusExcept"
  },
  {
    "path": "Source/Bogus/Bson/BArray.cs",
    "chars": 971,
    "preview": "#pragma warning disable 1591\n\nusing System.Collections;\nusing System.Collections.Generic;\n\nnamespace Bogus.Bson;\n\npublic"
  },
  {
    "path": "Source/Bogus/Bson/BObject.cs",
    "chars": 1093,
    "preview": "#pragma warning disable 1591\n\nusing System.Collections;\nusing System.Collections.Generic;\n\nnamespace Bogus.Bson;\n\npublic"
  },
  {
    "path": "Source/Bogus/Bson/BValue.cs",
    "chars": 5885,
    "preview": "#pragma warning disable 1591\n\nusing System;\nusing System.Text;\n\nnamespace Bogus.Bson;\n\n/// <summary>\n/// Most, if not al"
  },
  {
    "path": "Source/Bogus/Bson/BValueType.cs",
    "chars": 189,
    "preview": "#pragma warning disable 1591\n\nnamespace Bogus.Bson;\n\npublic enum BValueType\n{\n   Double,\n   String,\n   Array,\n   Binary,"
  },
  {
    "path": "Source/Bogus/Bson/Bson.cs",
    "chars": 7867,
    "preview": "#pragma warning disable 1591\n\nusing System;\nusing System.IO;\nusing System.Text;\n\nnamespace Bogus.Bson;\n\npublic class Bso"
  },
  {
    "path": "Source/Bogus/Chars.cs",
    "chars": 12001,
    "preview": "using System.ComponentModel;\n\nnamespace Bogus;\n\n/// <summary>\n/// Static class for holding character string constants.\n/"
  },
  {
    "path": "Source/Bogus/DataCategoryAttribute.cs",
    "chars": 801,
    "preview": "using System;\n\nnamespace Bogus;\n\n/// <summary>\n/// DataCategory is used when resolving the final category name inside t"
  },
  {
    "path": "Source/Bogus/DataSet.cs",
    "chars": 7288,
    "preview": "using Bogus.Bson;\nusing Bogus.Platform;\nusing System;\nusing System.Text.RegularExpressions;\n\nnamespace Bogus;\n\n/// <summ"
  },
  {
    "path": "Source/Bogus/DataSets/Address.cs",
    "chars": 7022,
    "preview": "using System;\n\nnamespace Bogus.DataSets;\n\n/// <summary>\n/// Methods for generating an address.\n/// </summary>\npublic cl"
  },
  {
    "path": "Source/Bogus/DataSets/ColorFormat.cs",
    "chars": 352,
    "preview": "namespace Bogus.DataSets;\n\n/// <summary>\n/// Type of color format\n/// </summary>\npublic enum ColorFormat\n{\n   /// <summ"
  },
  {
    "path": "Source/Bogus/DataSets/Commerce.cs",
    "chars": 4710,
    "preview": "using System;\nusing System.Linq;\n\nnamespace Bogus.DataSets;\n\n/// <summary>\n/// Methods relating to commerce.\n/// </summ"
  },
  {
    "path": "Source/Bogus/DataSets/Company.cs",
    "chars": 3143,
    "preview": "using System.Linq;\nusing Bogus.Bson;\n\nnamespace Bogus.DataSets;\n\n/// <summary>\n/// Generates a random company name and p"
  },
  {
    "path": "Source/Bogus/DataSets/Database.cs",
    "chars": 937,
    "preview": "namespace Bogus.DataSets;\n\n/// <summary>\n/// Generates some random database stuff.\n/// </summary>\npublic class Database"
  },
  {
    "path": "Source/Bogus/DataSets/Date.cs",
    "chars": 10607,
    "preview": "using System;\n\nnamespace Bogus.DataSets;\n\n/// <summary>\n/// Methods for generating dates\n/// </summary>\npublic partial c"
  },
  {
    "path": "Source/Bogus/DataSets/Date.net60.cs",
    "chars": 4707,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Bogus.DataSets;\n\npubli"
  },
  {
    "path": "Source/Bogus/DataSets/Finance.cs",
    "chars": 17654,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Text.RegularExpressio"
  },
  {
    "path": "Source/Bogus/DataSets/Hacker.cs",
    "chars": 1741,
    "preview": "namespace Bogus.DataSets;\n\n/// <summary>\n/// Hackerish words\n/// </summary>\npublic class Hacker : DataSet\n{\n   /// <summ"
  },
  {
    "path": "Source/Bogus/DataSets/Images.PlaceImg.cs",
    "chars": 371,
    "preview": "namespace Bogus.DataSets;\n\npublic enum PlaceImgFilter\n{\n   Grayscale,\n   Sepia\n}\n\npublic static class PlaceImgCategory\n"
  },
  {
    "path": "Source/Bogus/DataSets/Images.cs",
    "chars": 6451,
    "preview": "using System;\nusing System.Text;\n\nnamespace Bogus.DataSets;\n\n/// <summary>\n/// Generates images URLs.\n/// </summary>\n[Da"
  },
  {
    "path": "Source/Bogus/DataSets/Internet.cs",
    "chars": 12968,
    "preview": "using System;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text.RegularExpressions;\nusing Bogus.E"
  },
  {
    "path": "Source/Bogus/DataSets/Lorem.cs",
    "chars": 4740,
    "preview": "using System;\nusing System.Linq;\n\nnamespace Bogus.DataSets;\n\n/// <summary>\n/// Generates plain old boring text.\n/// </s"
  },
  {
    "path": "Source/Bogus/DataSets/Music.cs",
    "chars": 197,
    "preview": "namespace Bogus.DataSets;\n\npublic class Music : DataSet\n{\n   /// <summary>\n   /// Get a music genre\n   /// </summary>\n "
  },
  {
    "path": "Source/Bogus/DataSets/Name.cs",
    "chars": 5333,
    "preview": "namespace Bogus.DataSets;\n\n/// <summary>\n/// Methods for generating names\n/// </summary>\npublic class Name : DataSet\n{\n"
  },
  {
    "path": "Source/Bogus/DataSets/PhoneNumbers.cs",
    "chars": 1982,
    "preview": "using System;\n\nnamespace Bogus.DataSets;\n\n/// <summary>\n/// Generates phone numbers\n/// </summary>\n[DataCategory(\"phone_"
  },
  {
    "path": "Source/Bogus/DataSets/Rant.cs",
    "chars": 940,
    "preview": "using System.Linq;\n\nnamespace Bogus.DataSets;\n\n/// <summary>\n/// Generates random user content.\n/// </summary>\npublic c"
  },
  {
    "path": "Source/Bogus/DataSets/System.cs",
    "chars": 10080,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Bogus.Bson;\n\nnamespace Bogus."
  },
  {
    "path": "Source/Bogus/DataSets/Vehicle.cs",
    "chars": 1848,
    "preview": "using System.Text;\n\nnamespace Bogus.DataSets;\n\n/// <summary>\n/// Methods for generating vehicle information\n/// </summa"
  },
  {
    "path": "Source/Bogus/Database.cs",
    "chars": 4516,
    "preview": "using System;\nusing System.Collections.Concurrent;\nusing System.Linq;\nusing System.Threading;\nusing Bogus.Bson;\nusing Bo"
  },
  {
    "path": "Source/Bogus/Distributions/Gaussian/ExtensionsForRandomizer.cs",
    "chars": 5824,
    "preview": "using System;\n\nnamespace Bogus.Distributions.Gaussian;\n\n\npublic static class ExtensionsForRandomizer\n {\n\n    // Coeffic"
  },
  {
    "path": "Source/Bogus/Extensions/Belgium/ExtensionsForBelgium.cs",
    "chars": 2514,
    "preview": "using System;\n\nnamespace Bogus.Extensions.Belgium;\n\n/// <summary>\n/// API extensions specific for a geographical locati"
  },
  {
    "path": "Source/Bogus/Extensions/Brazil/ExtensionsForBrazil.cs",
    "chars": 3256,
    "preview": "using System.Linq;\nusing Bogus.DataSets;\n\nnamespace Bogus.Extensions.Brazil;\n\n/// <summary>\n/// API extensions specific"
  },
  {
    "path": "Source/Bogus/Extensions/Canada/ExtensionsForCanada.cs",
    "chars": 2284,
    "preview": "using System.Linq;\n\nnamespace Bogus.Extensions.Canada;\n\n/// <summary>\n/// API extensions specific for a geographical lo"
  },
  {
    "path": "Source/Bogus/Extensions/Denmark/ExtensionsForDenmark.cs",
    "chars": 4748,
    "preview": "using static Bogus.DataSets.Name;\nusing System;\n\nnamespace Bogus.Extensions.Denmark;\n\n/// <summary>\n/// API extensions "
  },
  {
    "path": "Source/Bogus/Extensions/ExtensionsForCultureInfo.cs",
    "chars": 1619,
    "preview": "using System.Collections.Generic;\nusing System.Globalization;\n\nnamespace Bogus.Extensions;\n\n/// <summary>\n/// Extension"
  },
  {
    "path": "Source/Bogus/Extensions/ExtensionsForPropertyInfo.cs",
    "chars": 1350,
    "preview": "using System;\nusing System.Reflection;\n\nnamespace Bogus.Extensions;\n\npublic static class ExtensionsForPropertyInfo\n{\n   "
  },
  {
    "path": "Source/Bogus/Extensions/ExtensionsForRandomizer.cs",
    "chars": 1809,
    "preview": "namespace Bogus.Extensions;\n\npublic static class ExtensionsForRandomizer\n{\n   /// <summary>\n   /// Get a random decimal"
  },
  {
    "path": "Source/Bogus/Extensions/ExtensionsForString.cs",
    "chars": 2261,
    "preview": "using System;\nusing System.Globalization;\nusing System.Text;\n\nnamespace Bogus.Extensions;\n\n/// <summary>\n/// General he"
  },
  {
    "path": "Source/Bogus/Extensions/Extras/CheckDigitExtension.cs",
    "chars": 2982,
    "preview": "using System.Collections.Generic;\nusing System.Linq;\n\nnamespace Bogus.Extensions.Extras;\n\n/// <summary>\n/// Shamelessly"
  },
  {
    "path": "Source/Bogus/Extensions/Extras/FinanceExtensions.cs",
    "chars": 769,
    "preview": "using Bogus.DataSets;\n\nnamespace Bogus.Extensions.Extras;\n\npublic static class FinanceExtensions\n{\n   /// <summary>\n   "
  },
  {
    "path": "Source/Bogus/Extensions/Finland/ExtensionsForFinland.cs",
    "chars": 1888,
    "preview": "using Bogus.DataSets;\n\nnamespace Bogus.Extensions.Finland;\n\n/// <summary>\n/// API extensions specific for a geographica"
  },
  {
    "path": "Source/Bogus/Extensions/Iran/ExtensionsForIran.cs",
    "chars": 1056,
    "preview": "namespace Bogus.Extensions.Iran;\n\n/// <summary>\n/// API extensions specific for Iran.\n/// </summary>\npublic static class"
  },
  {
    "path": "Source/Bogus/Extensions/Italy/ExtensionsForItaly.CodiceFiscale.cs",
    "chars": 6792,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Text.RegularExpressio"
  },
  {
    "path": "Source/Bogus/Extensions/Italy/ExtensionsForItaly.cs",
    "chars": 1656,
    "preview": "using Bogus.DataSets;\nusing System;\n\nnamespace Bogus.Extensions.Italy;\n\n/// <summary>\n/// Italian class extensions\n/// <"
  },
  {
    "path": "Source/Bogus/Extensions/Norway/ExtensionsForNorway.cs",
    "chars": 3759,
    "preview": "using System;\n\nnamespace Bogus.Extensions.Norway;\n\n/// <summary>\n/// API extensions specific for a geographical locatio"
  },
  {
    "path": "Source/Bogus/Extensions/Poland/ExtensionsForPoland.cs",
    "chars": 4056,
    "preview": "using Bogus.DataSets;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace "
  },
  {
    "path": "Source/Bogus/Extensions/Portugal/ExtensionsForPortugal.cs",
    "chars": 1745,
    "preview": "using Bogus.DataSets;\nusing System.Linq;\n\nnamespace Bogus.Extensions.Portugal;\n\n/// <summary>\n/// API extensions specif"
  },
  {
    "path": "Source/Bogus/Extensions/Portugal/TaxNumberGenerator.cs",
    "chars": 874,
    "preview": "using System.Linq;\n\nnamespace Bogus.Extensions.Portugal;\n\ninternal static class TaxNumberGenerator\n{\n   public static r"
  },
  {
    "path": "Source/Bogus/Extensions/Romania/ExtensionsForRomania.cs",
    "chars": 2952,
    "preview": "\nusing System;\nusing Bogus.DataSets;\n\nnamespace Bogus.Extensions.Romania;\n\n/// <summary>\n///  API extensions specific f"
  },
  {
    "path": "Source/Bogus/Extensions/Romania/RomanianBirthCounty.cs",
    "chars": 965,
    "preview": "namespace Bogus.Extensions.Romania;\n\npublic enum RomanianBirthCounty\n{\n    Alba = 1,\n    Arad = 2,\n    Arges = 3,\n    B"
  },
  {
    "path": "Source/Bogus/Extensions/Sweden/ExtensionsForSweden.cs",
    "chars": 4174,
    "preview": "using System;\nusing System.Linq;\nusing Bogus.DataSets;\nusing static Bogus.DataSets.Name;\n\nnamespace Bogus.Extensions.Swe"
  },
  {
    "path": "Source/Bogus/Extensions/UnitedKingdom/ExtensionsForGreatBritainRegistrationPlate.cs",
    "chars": 6625,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing Bogus.DataSets;\n\nnamespace Bogus.Extensions.Uni"
  },
  {
    "path": "Source/Bogus/Extensions/UnitedKingdom/ExtensionsForUnitedKingdom.cs",
    "chars": 4843,
    "preview": "using System;\n\nusing Bogus.Bson;\nusing Bogus.DataSets;\n\nnamespace Bogus.Extensions.UnitedKingdom;\n\n/// <summary>\n/// API"
  },
  {
    "path": "Source/Bogus/Extensions/UnitedKingdom/VatRegistrationNumberType.cs",
    "chars": 667,
    "preview": "namespace Bogus.Extensions.UnitedKingdom;\n\n/// <summary>\n/// Enum for the different types of UK VAT registration numbers"
  },
  {
    "path": "Source/Bogus/Extensions/UnitedStates/ExtensionsForUnitedStates.cs",
    "chars": 1038,
    "preview": "using Bogus.DataSets;\n\nnamespace Bogus.Extensions.UnitedStates;\n\n/// <summary>\n/// API extensions specific for a geogra"
  },
  {
    "path": "Source/Bogus/Faker.cs",
    "chars": 12404,
    "preview": "using System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing Bogus.DataSets;\nusing System;\n\nnames"
  },
  {
    "path": "Source/Bogus/Faker[T].Extensions.cs",
    "chars": 3961,
    "preview": "using System;\nusing System.Collections.Generic;\n\nnamespace Bogus;\n\n/// <summary>\n/// Extensions for <see cref=\"Faker{T}"
  },
  {
    "path": "Source/Bogus/Faker[T].cs",
    "chars": 31175,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflectio"
  },
  {
    "path": "Source/Bogus/Hashids.cs",
    "chars": 12233,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Text.RegularExpressi"
  },
  {
    "path": "Source/Bogus/IHashids.cs",
    "chars": 2040,
    "preview": "using System.Collections.Generic;\n\nnamespace Bogus;\n\n/// <summary>\n/// Describes a Hashids provider\n/// </summary>\npubl"
  },
  {
    "path": "Source/Bogus/ILocaleAware.cs",
    "chars": 462,
    "preview": "using System.Collections.Generic;\n\nnamespace Bogus;\n\n/// <summary>\n/// Marker interface for datasets that are locale awa"
  },
  {
    "path": "Source/Bogus/IRuleSet.cs",
    "chars": 1983,
    "preview": "using System;\nusing System.Linq.Expressions;\n\nnamespace Bogus;\n\n/// <summary>\n/// An interface for defining a set of rul"
  },
  {
    "path": "Source/Bogus/Person.cs",
    "chars": 4943,
    "preview": "#pragma warning disable 1591\n\nusing System;\nusing System.Collections.Generic;\nusing Bogus.DataSets;\n\nnamespace Bogus;\n\n/"
  },
  {
    "path": "Source/Bogus/Platform/ExtensionsForType.cs",
    "chars": 1913,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\n\nnamespace Bogus.Platform;\n\n"
  },
  {
    "path": "Source/Bogus/Premium/ContextHelper.cs",
    "chars": 756,
    "preview": "#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System;\n\nnamespace Bogu"
  },
  {
    "path": "Source/Bogus/Premium/License.cs",
    "chars": 155,
    "preview": "namespace Bogus.Premium;\n\npublic static class License\n{\n   public static string LicenseTo { get; set; }\n   public stati"
  },
  {
    "path": "Source/Bogus/Premium/LicenseVerifier.cs",
    "chars": 2876,
    "preview": "#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System;\nusing System.C"
  },
  {
    "path": "Source/Bogus/Premium/PremiumDataSet.cs",
    "chars": 2465,
    "preview": "#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System.Reflection;\nusin"
  },
  {
    "path": "Source/Bogus/Properties/AssemblyInfo.cs",
    "chars": 1530,
    "preview": "// Auto-Generated by FAKE; do not edit\n// <auto-generated/>\nusing System.Reflection;\nusing System.Runtime.CompilerServi"
  },
  {
    "path": "Source/Bogus/PropertyName.cs",
    "chars": 2182,
    "preview": "using System;\nusing System.ComponentModel;\nusing System.Linq.Expressions;\n\nnamespace Bogus;\n\n[EditorBrowsable(EditorBrow"
  },
  {
    "path": "Source/Bogus/Randomizer.cs",
    "chars": 33122,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing Bogu"
  },
  {
    "path": "Source/Bogus/ResourceHelper.cs",
    "chars": 2465,
    "preview": "using System.IO;\nusing Bogus.Bson;\n\nnamespace Bogus;\n\n/// <summary>\n/// Helper utility class to read resource manifest s"
  },
  {
    "path": "Source/Bogus/Rule.cs",
    "chars": 1722,
    "preview": "using System;\nusing System.Collections.Generic;\n\nnamespace Bogus;\n\n/// <summary>\n/// Represents a Faker rule\n/// </summ"
  },
  {
    "path": "Source/Bogus/SeedNotifier[T].cs",
    "chars": 1775,
    "preview": "using System.Collections.Generic;\n\nnamespace Bogus;\n\n/// <summary>\n/// Objects should implement this interface if they u"
  },
  {
    "path": "Source/Bogus/Tokenizer.cs",
    "chars": 6967,
    "preview": "using System;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\n\nnamespace Bogus;\n\npublic class MustashMeth"
  },
  {
    "path": "Source/Bogus/Transliterater.Generated.cs",
    "chars": 51071,
    "preview": "\n   // AUTO GENERATED FILE. DO NOT MODIFY.\n   // SEE Builder/gulpfile.js import.speakingurl task.\n   using System.Compon"
  },
  {
    "path": "Source/Bogus/Transliterater.cs",
    "chars": 5473,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Text;\n\nnamespace Bogus;\n\n/// "
  },
  {
    "path": "Source/Bogus/Utils.cs",
    "chars": 816,
    "preview": "using System.Collections.Generic;\nusing System.Text.RegularExpressions;\nusing Bogus.Extensions;\n\nnamespace Bogus;\n\n/// "
  },
  {
    "path": "Source/Bogus/ValidationException.cs",
    "chars": 222,
    "preview": "using System;\n\nnamespace Bogus;\n\n/// <summary>\n/// Represents a validation exception.\n/// </summary>\npublic class Valid"
  },
  {
    "path": "Source/Bogus/ValidationResult.cs",
    "chars": 526,
    "preview": "using System.Collections.Generic;\n\nnamespace Bogus;\n\n/// <summary>\n/// Contains validation results after validation\n///"
  },
  {
    "path": "Source/Bogus/Vendor/UserAgentGenerator.cs",
    "chars": 7858,
    "preview": "using System;\nusing System.Linq;\n\nnamespace Bogus.Vendor;\n\ninternal class UserAgentGenerator\n{\n   private readonly Func<"
  },
  {
    "path": "Source/Bogus/data/README.md",
    "chars": 707,
    "preview": ":stop_sign: :stop_sign: :stop_sign: :stop_sign: :stop_sign: :stop_sign:\n```\n  XXXXX  XXXXXXX   XXX   XXXXXX\n X     X X  "
  },
  {
    "path": "Source/Bogus/data/_DO_NOT_MODIFY_FILES_IN_THIS_FOLDER",
    "chars": 276,
    "preview": "## The files in this folder are auto-generated\n\nAny modifications to files in this folder will be clobbered.\n\nIf you wis"
  },
  {
    "path": "Source/Bogus/data/af_ZA.locale.json",
    "chars": 780,
    "preview": "{\n  \"title\": \"Afrikaans\",\n  \"address\": {\n    \"default_country\": [\n      \"South Africa\"\n    ],\n    \"postcode\": [\n      \"#"
  },
  {
    "path": "Source/Bogus/data/af_ZA.locale.schema.verified.txt",
    "chars": 323,
    "preview": "{\n  address: {\n    default_country: [Array String; 1],\n    postcode: [Array String; 2]\n  },\n  cell_phone: {\n    formats"
  },
  {
    "path": "Source/Bogus/data/ar.locale.json",
    "chars": 20647,
    "preview": "{\n   \"title\": \"Arabic\",\n   \"address\": {\n      \"building_number\": [\n         \"####\",\n         \"###\",\n         \"##\",\n    "
  },
  {
    "path": "Source/Bogus/data/ar.locale.schema.verified.txt",
    "chars": 942,
    "preview": "{\n  address: {\n    building_number: [Array String; 4],\n    city: [Array String; 1],\n    city_name: [Array String; 604],"
  },
  {
    "path": "Source/Bogus/data/az.locale.json",
    "chars": 18497,
    "preview": "{\n  \"title\": \"Azerbaijani\",\n  \"separator\": \" və \",\n  \"address\": {\n    \"country\": [\n      \"Akrotiri və Dekeliya\",\n      \""
  },
  {
    "path": "Source/Bogus/data/az.locale.schema.verified.txt",
    "chars": 1483,
    "preview": "{\n  address: {\n    building_number: [Array String; 1],\n    city: [Array String; 1],\n    city_name: [Array String; 78],\n"
  },
  {
    "path": "Source/Bogus/data/cz.locale.json",
    "chars": 266261,
    "preview": "{\n  \"title\": \"Czech\",\n  \"address\": {\n    \"country\": [\n      \"Afghánistán\",\n      \"Albánie\",\n      \"Alžírsko\",\n      \"And"
  },
  {
    "path": "Source/Bogus/data/cz.locale.schema.verified.txt",
    "chars": 1610,
    "preview": "{\n  address: {\n    building_number: [Array String; 3],\n    city: [Array String; 1],\n    city_name: [Array String; 602],"
  },
  {
    "path": "Source/Bogus/data/de.locale.json",
    "chars": 101910,
    "preview": "{\n  \"title\": \"German\",\n  \"address\": {\n    \"city_prefix\": [\n      \"Nord\",\n      \"Ost\",\n      \"West\",\n      \"Süd\",\n      \""
  },
  {
    "path": "Source/Bogus/data/de.locale.schema.verified.txt",
    "chars": 1483,
    "preview": "{\n  address: {\n    building_number: [Array String; 6],\n    city: [Array String; 4],\n    city_prefix: [Array String; 7],"
  },
  {
    "path": "Source/Bogus/data/de_AT.locale.json",
    "chars": 60674,
    "preview": "{\n  \"title\": \"German (Austria)\",\n  \"address\": {\n    \"country\": [\n      \"Ägypten\",\n      \"Äquatorialguinea\",\n      \"Äthio"
  },
  {
    "path": "Source/Bogus/data/de_AT.locale.schema.verified.txt",
    "chars": 983,
    "preview": "{\n  address: {\n    building_number: [Array String; 6],\n    city: [Array String; 1],\n    city_name: [Array String; 119],"
  },
  {
    "path": "Source/Bogus/data/de_CH.locale.json",
    "chars": 10402,
    "preview": "{\n  \"title\": \"German (Switzerland)\",\n  \"address\": {\n    \"country_code\": [\n      \"CH\",\n      \"CH\",\n      \"CH\",\n      \"DE\""
  },
  {
    "path": "Source/Bogus/data/de_CH.locale.schema.verified.txt",
    "chars": 496,
    "preview": "{\n  address: {\n    country_code: [Array String; 10],\n    default_country: [Array String; 1],\n    postcode: [Array Strin"
  },
  {
    "path": "Source/Bogus/data/el.locale.json",
    "chars": 25109,
    "preview": "{\n  \"title\": \"Greek\",\n  \"separator\": \" & \",\n  \"address\": {\n    \"county\": [\n      \"Αθήνα\",\n      \"Θεσσαλονίκη\",\n      \"Πε"
  },
  {
    "path": "Source/Bogus/data/el.locale.schema.verified.txt",
    "chars": 1968,
    "preview": "{\n  address: {\n    county: [Array String; 78],\n    default_country: [Array String; 1]\n  },\n  app: {\n    author: [Array "
  },
  {
    "path": "Source/Bogus/data/en.locale.json",
    "chars": 417622,
    "preview": "{\n  \"title\": \"English\",\n  \"separator\": \" & \",\n  \"address\": {\n    \"city_prefix\": [\n      \"North\",\n      \"East\",\n      \"We"
  },
  {
    "path": "Source/Bogus/data/en.locale.schema.verified.txt",
    "chars": 224950,
    "preview": "{\n  address: {\n    building_number: [Array String; 3],\n    city: [Array String; 4],\n    city_prefix: [Array String; 7],"
  },
  {
    "path": "Source/Bogus/data/en_AU.locale.json",
    "chars": 9432,
    "preview": "{\n  \"title\": \"English (Australia)\",\n  \"name\": {\n    \"first_name\": [\n      \"William\",\n      \"Jack\",\n      \"Oliver\",\n     "
  },
  {
    "path": "Source/Bogus/data/en_AU.locale.schema.verified.txt",
    "chars": 512,
    "preview": "{\n  address: {\n    building_number: [Array String; 3],\n    default_country: [Array String; 1],\n    postcode: [Array Str"
  },
  {
    "path": "Source/Bogus/data/en_AU_ocker.locale.json",
    "chars": 4503,
    "preview": "{\n  \"title\": \"English (Australia Ocker)\",\n  \"name\": {\n    \"first_name\": [\n      \"Charlotte\",\n      \"Ava\",\n      \"Chloe\","
  },
  {
    "path": "Source/Bogus/data/en_AU_ocker.locale.schema.verified.txt",
    "chars": 727,
    "preview": "{\n  address: {\n    building_number: [Array String; 3],\n    city: [Array String; 1],\n    city_prefix: [Array String; 12]"
  },
  {
    "path": "Source/Bogus/data/en_BORK.locale.json",
    "chars": 1745,
    "preview": "{\n  \"title\": \"English (Bork)\",\n  \"lorem\": {\n    \"words\": [\n      \"Boot\",\n      \"I\",\n      \"Nu\",\n      \"Nur\",\n      \"Tu\","
  },
  {
    "path": "Source/Bogus/data/en_BORK.locale.schema.verified.txt",
    "chars": 75,
    "preview": "{\n  lorem: {\n    words: [Array String; 103]\n  },\n  title: English (Bork)\n}"
  },
  {
    "path": "Source/Bogus/data/en_CA.locale.json",
    "chars": 1628,
    "preview": "{\n  \"title\": \"English (Canada)\",\n  \"address\": {\n    \"state\": [\n      \"Alberta\",\n      \"British Columbia\",\n      \"Manitob"
  },
  {
    "path": "Source/Bogus/data/en_CA.locale.schema.verified.txt",
    "chars": 334,
    "preview": "{\n  address: {\n    default_country: [Array String; 1],\n    postcode: [Array String; 18],\n    state: [Array String; 13],"
  },
  {
    "path": "Source/Bogus/data/en_GB.locale.json",
    "chars": 2479,
    "preview": "{\n  \"title\": \"English (Great Britain)\",\n  \"address\": {\n    \"county\": [\n      \"Avon\",\n      \"Bedfordshire\",\n      \"Berksh"
  },
  {
    "path": "Source/Bogus/data/en_GB.locale.schema.verified.txt",
    "chars": 357,
    "preview": "{\n  address: {\n    county: [Array String; 70],\n    default_country: [Array String; 4],\n    postcode: [Array String; 2],"
  },
  {
    "path": "Source/Bogus/data/en_IE.locale.json",
    "chars": 1922,
    "preview": "{\n  \"title\": \"English (Ireland)\",\n  \"address\": {\n    \"county\": [\n      \"Carlow\",\n      \"Cavan\",\n      \"Clare\",\n      \"Co"
  },
  {
    "path": "Source/Bogus/data/en_IE.locale.schema.verified.txt",
    "chars": 283,
    "preview": "{\n  address: {\n    county: [Array String; 26],\n    default_country: [Array String; 1]\n  },\n  cell_phone: {\n    formats:"
  },
  {
    "path": "Source/Bogus/data/en_IND.locale.json",
    "chars": 16673,
    "preview": "{\n  \"title\": \"English (India)\",\n  \"name\": {\n    \"first_name\": [\n      \"Aadrika\",\n      \"Aanandinii\",\n      \"Aaratrika\",\n"
  },
  {
    "path": "Source/Bogus/data/en_IND.locale.schema.verified.txt",
    "chars": 466,
    "preview": "{\n  address: {\n    default_country: [Array String; 4],\n    postcode: [Array String; 1],\n    state: [Array String; 36],\n"
  },
  {
    "path": "Source/Bogus/data/en_NG.locale.json",
    "chars": 16459,
    "preview": "{\n  \"title\": \"Nigeria (English)\",\n  \"address\": {\n    \"city\": [\n      \"#{city_prefix}\"\n    ],\n    \"city_prefix\": [\n      "
  },
  {
    "path": "Source/Bogus/data/en_NG.locale.schema.verified.txt",
    "chars": 576,
    "preview": "{\n  address: {\n    city: [Array String; 1],\n    city_prefix: [Array String; 525],\n    default_country: [Array String; 4"
  },
  {
    "path": "Source/Bogus/data/en_US.locale.json",
    "chars": 7737,
    "preview": "{\n  \"title\": \"English (United States)\",\n  \"internet\": {\n    \"domain_suffix\": [\n      \"com\",\n      \"us\",\n      \"biz\",\n   "
  },
  {
    "path": "Source/Bogus/data/en_US.locale.schema.verified.txt",
    "chars": 248,
    "preview": "{\n  address: {\n    default_country: [Array String; 3]\n  },\n  internet: {\n    domain_suffix: [Array String; 7]\n  },\n  ph"
  },
  {
    "path": "Source/Bogus/data/en_ZA.locale.json",
    "chars": 27263,
    "preview": "{\n  \"title\": \"English (South Africa)\",\n  \"address\": {\n    \"city\": [\n      \"#{city_prefix}\"\n    ],\n    \"city_prefix\": [\n "
  },
  {
    "path": "Source/Bogus/data/en_ZA.locale.schema.verified.txt",
    "chars": 711,
    "preview": "{\n  address: {\n    city: [Array String; 1],\n    city_prefix: [Array String; 14],\n    default_country: [Array String; 4]"
  },
  {
    "path": "Source/Bogus/data/es.locale.json",
    "chars": 37466,
    "preview": "{\n  \"title\": \"Spanish\",\n  \"address\": {\n    \"city_prefix\": [\n      \"Parla\",\n      \"Telde\",\n      \"Baracaldo\",\n      \"San "
  },
  {
    "path": "Source/Bogus/data/es.locale.schema.verified.txt",
    "chars": 1521,
    "preview": "{\n  address: {\n    building_number: [Array String; 5],\n    city: [Array String; 1],\n    city_prefix: [Array String; 129"
  },
  {
    "path": "Source/Bogus/data/es_MX.locale.json",
    "chars": 51451,
    "preview": "{\n  \"title\": \"Spanish (Mexico)\",\n  \"separator\": \" & \",\n  \"name\": {\n    \"first_name\": [\n      \"Aarón\",\n      \"Abraham\",\n "
  },
  {
    "path": "Source/Bogus/data/es_MX.locale.schema.verified.txt",
    "chars": 1729,
    "preview": "{\n  address: {\n    building_number: [Array String; 7],\n    city: [Array String; 1],\n    city_prefix: [Array String; 130"
  },
  {
    "path": "Source/Bogus/data/fa.locale.json",
    "chars": 42386,
    "preview": "{\n  \"title\": \"Farsi\",\n  \"name\": {\n    \"male_first_name\": [\n      \"علی\",\n      \"حسن\",\n      \"محمد\",\n      \"مهدی\",\n      \""
  },
  {
    "path": "Source/Bogus/data/fa.locale.schema.verified.txt",
    "chars": 4541,
    "preview": "{\n  address: {\n    building_number: [Array String; 2],\n    city: [Array String; 1],\n    city_name: [Array String; 50],\n"
  },
  {
    "path": "Source/Bogus/data/fi.locale.json",
    "chars": 4346,
    "preview": "{\n  \"title\": \"Finnish\",\n  \"name\": {\n    \"male_first_name\": [\n      \"Aleksi\",\n      \"Antero\",\n      \"Antti\",\n      \"Ari\","
  },
  {
    "path": "Source/Bogus/data/fi.locale.schema.verified.txt",
    "chars": 220,
    "preview": "{\n  name: {\n    female_first_name: [Array String; 50],\n    first_name: [Array String; 100],\n    last_name: [Array Strin"
  },
  {
    "path": "Source/Bogus/data/fr.locale.json",
    "chars": 39734,
    "preview": "{\n  \"title\": \"French\",\n  \"address\": {\n    \"building_number\": [\n      \"####\",\n      \"###\",\n      \"##\",\n      \"#\"\n    ],\n "
  },
  {
    "path": "Source/Bogus/data/fr.locale.schema.verified.txt",
    "chars": 1502,
    "preview": "{\n  address: {\n    building_number: [Array String; 4],\n    city: [Array String; 1],\n    city_name: [Array String; 100],"
  },
  {
    "path": "Source/Bogus/data/fr_CA.locale.json",
    "chars": 1300,
    "preview": "{\n  \"title\": \"French (Canada)\",\n  \"address\": {\n    \"postcode\": [\n      \"A#? #?#\",\n      \"B#? #?#\",\n      \"C#? #?#\",\n    "
  },
  {
    "path": "Source/Bogus/data/fr_CA.locale.schema.verified.txt",
    "chars": 332,
    "preview": "{\n  address: {\n    default_country: [Array String; 1],\n    postcode: [Array String; 18],\n    state: [Array String; 13],"
  },
  {
    "path": "Source/Bogus/data/fr_CH.locale.json",
    "chars": 4521,
    "preview": "{\n  \"title\": \"French (Switzerland)\",\n  \"address\": {\n    \"country_code\": [\n      \"CH\"\n    ],\n    \"city\": [\n      \"#{city_"
  },
  {
    "path": "Source/Bogus/data/fr_CH.locale.schema.verified.txt",
    "chars": 368,
    "preview": "{\n  address: {\n    city: [Array String; 1],\n    city_name: [Array String; 173],\n    country_code: [Array String; 1],\n  "
  },
  {
    "path": "Source/Bogus/data/ge.locale.json",
    "chars": 31678,
    "preview": "{\n  \"title\": \"Georgian\",\n  \"separator\": \" და \",\n  \"name\": {\n    \"first_name\": [\n      \"აგული\",\n      \"აგუნა\",\n      \"ადო"
  },
  {
    "path": "Source/Bogus/data/ge.locale.schema.verified.txt",
    "chars": 1108,
    "preview": "{\n  address: {\n    building_number: [Array String; 3],\n    city: [Array String; 6],\n    city_name: [Array String; 88],\n"
  },
  {
    "path": "Source/Bogus/data/hr.locale.json",
    "chars": 243462,
    "preview": "{\n  \"title\": \"Hrvatski\",\n  \"address\": {\n    \"country\": [\n      \"Afganistan\",\n      \"Albanija\",\n      \"Alžir\",\n      \"Ame"
  },
  {
    "path": "Source/Bogus/data/hr.locale.schema.verified.txt",
    "chars": 1359,
    "preview": "{\n  address: {\n    building_number: [Array String; 3],\n    city: [Array String; 1],\n    city_name: [Array String; 128],"
  },
  {
    "path": "Source/Bogus/data/id_ID.locale.json",
    "chars": 23797,
    "preview": "{\n  \"title\": \"Indonesia\",\n  \"address\": {\n    \"building_number\": [\n      \"##\",\n      \"#\"\n    ],\n    \"postcode\": [\n      \""
  },
  {
    "path": "Source/Bogus/data/id_ID.locale.schema.verified.txt",
    "chars": 1199,
    "preview": "{\n  address: {\n    building_number: [Array String; 2],\n    city: [Array String; 1],\n    city_name: [Array String; 227],"
  },
  {
    "path": "Source/Bogus/data/it.locale.json",
    "chars": 85655,
    "preview": "{\n  \"title\": \"Italian\",\n  \"address\": {\n    \"city_prefix\": [\n      \"San\",\n      \"Borgo\",\n      \"Sesto\",\n      \"Quarto\",\n "
  },
  {
    "path": "Source/Bogus/data/it.locale.schema.verified.txt",
    "chars": 1174,
    "preview": "{\n  address: {\n    building_number: [Array String; 3],\n    city: [Array String; 4],\n    city_prefix: [Array String; 5],"
  },
  {
    "path": "Source/Bogus/data/ja.locale.json",
    "chars": 15973,
    "preview": "{\n  \"title\": \"Japanese\",\n  \"address\": {\n    \"postcode\": [\n      \"###-####\"\n    ],\n    \"state\": [\n      \"北海道\",\n      \"青森県"
  },
  {
    "path": "Source/Bogus/data/ja.locale.schema.verified.txt",
    "chars": 582,
    "preview": "{\n  address: {\n    city: [Array String; 4],\n    city_prefix: [Array String; 7],\n    city_suffix: [Array String; 4],\n   "
  },
  {
    "path": "Source/Bogus/data/ko.locale.json",
    "chars": 4523,
    "preview": "{\n  \"title\": \"Korean\",\n  \"address\": {\n    \"postcode\": [\n      \"###-###\"\n    ],\n    \"state\": [\n      \"강원\",\n      \"경기\",\n  "
  },
  {
    "path": "Source/Bogus/data/ko.locale.schema.verified.txt",
    "chars": 762,
    "preview": "{\n  address: {\n    city: [Array String; 1],\n    city_name: [Array String; 28],\n    city_suffix: [Array String; 3],\n    "
  },
  {
    "path": "Source/Bogus/data/lv.locale.json",
    "chars": 46091,
    "preview": "{\n  \"title\": \"Latvian\",\n  \"separator\": \" un \",\n  \"name\": {\n    \"male_first_name\": [\n      \"Ainārs\",\n      \"Alfrēds\",\n   "
  },
  {
    "path": "Source/Bogus/data/lv.locale.schema.verified.txt",
    "chars": 1836,
    "preview": "{\n  address: {\n    building_number: [Array String; 2],\n    city: [Array String; 1],\n    city_name: [Array String; 76],\n"
  },
  {
    "path": "Source/Bogus/data/nb_NO.locale.json",
    "chars": 8801,
    "preview": "{\n  \"title\": \"Norwegian\",\n  \"address\": {\n    \"city_root\": [\n      \"Fet\",\n      \"Gjes\",\n      \"Høy\",\n      \"Inn\",\n      \""
  },
  {
    "path": "Source/Bogus/data/nb_NO.locale.schema.verified.txt",
    "chars": 1009,
    "preview": "{\n  address: {\n    building_number: [Array String; 2],\n    city: [Array String; 1],\n    city_root: [Array String; 17],\n"
  },
  {
    "path": "Source/Bogus/data/ne.locale.json",
    "chars": 3348,
    "preview": "{\n  \"title\": \"Nepalese\",\n  \"name\": {\n    \"first_name\": [\n      \"Aarav\",\n      \"Ajita\",\n      \"Amit\",\n      \"Amita\",\n    "
  },
  {
    "path": "Source/Bogus/data/ne.locale.schema.verified.txt",
    "chars": 451,
    "preview": "{\n  address: {\n    city: [Array String; 16],\n    default_country: [Array String; 1],\n    postcode: [Array String; 1],\n "
  },
  {
    "path": "Source/Bogus/data/nl.locale.json",
    "chars": 77801,
    "preview": "{\n  \"title\": \"Dutch\",\n  \"address\": {\n    \"city_prefix\": [\n      \"Aagte\",\n      \"Aal\",\n      \"Aalden\",\n      \"Aals\",\n    "
  },
  {
    "path": "Source/Bogus/data/nl.locale.schema.verified.txt",
    "chars": 1715,
    "preview": "{\n  address: {\n    building_number: [Array String; 9],\n    city: [Array String; 2],\n    city_prefix: [Array String; 250"
  },
  {
    "path": "Source/Bogus/data/nl_BE.locale.json",
    "chars": 26726,
    "preview": "{\n  \"title\": \"Dutch (Belgium)\",\n  \"address\": {\n    \"city_prefix\": [\n      \"'s Herenelderen\",\n      \"'s-Gravenvoeren\",\n  "
  },
  {
    "path": "Source/Bogus/data/nl_BE.locale.schema.verified.txt",
    "chars": 853,
    "preview": "{\n  address: {\n    building_number: [Array String; 6],\n    city: [Array String; 2],\n    city_prefix: [Array String; 112"
  },
  {
    "path": "Source/Bogus/data/pl.locale.json",
    "chars": 59004,
    "preview": "{\n  \"title\": \"Polish\",\n  \"name\": {\n    \"first_name\": [\n      \"Aaron\",\n      \"Abraham\",\n      \"Adam\",\n      \"Adrian\",\n   "
  }
]

// ... and 215 more files (download for full content)

About this extraction

This page contains the full source code of the bchavez/Bogus GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 415 files (3.3 MB), approximately 877.0k tokens, and a symbol index with 1688 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!