Full Code of Stickymaddness/Procurement for AI

master 184cf87ff3b5 cached
451 files
2.8 MB
752.0k tokens
1593 symbols
1 requests
Download .txt
Showing preview only (3,006K chars total). Download the full file or copy to clipboard to get everything.
Repository: Stickymaddness/Procurement
Branch: master
Commit: 184cf87ff3b5
Files: 451
Total size: 2.8 MB

Directory structure:
gitextract_rfobdqo7/

├── .gitignore
├── LICENSE
├── POEApi.Infrastructure/
│   ├── CacheService.cs
│   ├── CurrencyAbbreviationMap.cs
│   ├── DPAPI.cs
│   ├── Events/
│   │   ├── ThottledEventArgs.cs
│   │   └── ThrottledEventHandler.cs
│   ├── ExcessiveRequestException.cs
│   ├── Extensions.cs
│   ├── ForumThreadException.cs
│   ├── Logger.cs
│   ├── LogonFailedException.cs
│   ├── POEApi.Infrastructure.csproj
│   └── Properties/
│       └── AssemblyInfo.cs
├── POEApi.Model/
│   ├── AbyssJewel.cs
│   ├── BreachSplinter.cs
│   ├── BreachStone.cs
│   ├── BreachType.cs
│   ├── Buyouts.xml
│   ├── Character.cs
│   ├── CharacterStashBuilder.cs
│   ├── ChargeInfo.cs
│   ├── Colour.cs
│   ├── Currency.cs
│   ├── CurrencyHandler.cs
│   ├── CurrencyRatio.cs
│   ├── Data.xml
│   ├── Data.xsd
│   ├── Decoration.cs
│   ├── DivineVessel.cs
│   ├── EquipedItems.cs
│   ├── Essence.cs
│   ├── EssenceType.cs
│   ├── Events/
│   │   ├── AuthenticateEventArgs.cs
│   │   ├── ImageLoadedEventArgs.cs
│   │   ├── POEEventArgs.cs
│   │   ├── POEEventState.cs
│   │   └── StashLoadedEventArgs.cs
│   ├── FatedUniqueInfo.cs
│   ├── Fossil.cs
│   ├── FullBestiaryOrb.cs
│   ├── Gear.cs
│   ├── GearType/
│   │   ├── GearType.cs
│   │   ├── GearTypeFactory.cs
│   │   └── GearTypeRunner.cs
│   ├── GearType.cs
│   ├── Gem.cs
│   ├── GemCategory.cs
│   ├── GemHandler.cs
│   ├── ImageComparer.cs
│   ├── Incubator.cs
│   ├── Interfaces/
│   │   ├── IBreachCurrency.cs
│   │   └── ILegion.cs
│   ├── Item.cs
│   ├── ItemBackgroundUrlBuilder.cs
│   ├── ItemFactory.cs
│   ├── ItemFilterConfig.json
│   ├── ItemFilterConfig.proto
│   ├── ItemTradeInfo.cs
│   ├── JSONProxy/
│   │   ├── Account.cs
│   │   └── Stash.cs
│   ├── Leaguestone.cs
│   ├── LegionEmblem.cs
│   ├── LegionFaction.cs
│   ├── LegionSplinter.cs
│   ├── Map.cs
│   ├── Net.cs
│   ├── Offering.cs
│   ├── OrbType.cs
│   ├── POEApi.Model.csproj
│   ├── POEModel.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── Property.cs
│   ├── Prophecy.cs
│   ├── ProxyMapper.cs
│   ├── QuestItem.cs
│   ├── Requirement.cs
│   ├── Resonator.cs
│   ├── Scarab.cs
│   ├── Settings.cs
│   ├── Settings.xml
│   ├── Settings.xsd
│   ├── Sextant.cs
│   ├── SextantType.cs
│   ├── ShopSetting.cs
│   ├── Socket.cs
│   ├── SocketableItem.cs
│   ├── StackInfo.cs
│   ├── Stash.cs
│   ├── Tab.cs
│   ├── UnknownItem.cs
│   ├── app.config
│   └── packages.config
├── POEApi.Transport/
│   ├── CachedTransport.cs
│   ├── HttpTransport.cs
│   ├── ITransport.cs
│   ├── POEApi.Transport.csproj
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── TaskThrottle.cs
│   ├── app.config
│   └── packages.config
├── Procurement/
│   ├── App.xaml
│   ├── App.xaml.cs
│   ├── ApplicationState.cs
│   ├── Controls/
│   │   ├── AbstractStashTabControl.cs
│   │   ├── Category.cs
│   │   ├── CharacterSelector.xaml
│   │   ├── CharacterSelector.xaml.cs
│   │   ├── CurrencyStashTab.xaml
│   │   ├── CurrencyStashTab.xaml.cs
│   │   ├── Equipped.xaml
│   │   ├── Equipped.xaml.cs
│   │   ├── EssenceStashTab.xaml
│   │   ├── EssenceStashTab.xaml.cs
│   │   ├── ExpressionDark.xaml
│   │   ├── ExpressionDarkGrid.xaml
│   │   ├── ExpressionDarkGrid_brushes.xaml
│   │   ├── ForumExport.xaml
│   │   ├── ForumExport.xaml.cs
│   │   ├── ForumExportTemplateReader.cs
│   │   ├── ForumTemplate.xaml
│   │   ├── ForumTemplate.xaml.cs
│   │   ├── FragmentStashTab.xaml
│   │   ├── FragmentStashTab.xaml.cs
│   │   ├── Inventory.xaml
│   │   ├── Inventory.xaml.cs
│   │   ├── ItemDisplay.xaml
│   │   ├── ItemDisplay.xaml.cs
│   │   ├── ItemHover.xaml
│   │   ├── ItemHover.xaml.cs
│   │   ├── ItemHoverHeader.xaml
│   │   ├── ItemHoverHeader.xaml.cs
│   │   ├── ItemHoverImage.xaml
│   │   ├── ItemHoverImage.xaml.cs
│   │   ├── LeagueSelection.xaml
│   │   ├── LeagueSelection.xaml.cs
│   │   ├── RecipeResults.xaml
│   │   ├── RecipeResults.xaml.cs
│   │   ├── SetBuyoutView.xaml
│   │   ├── SetBuyoutView.xaml.cs
│   │   ├── SetTabBuyoutView.xaml
│   │   ├── SetTabBuyoutView.xaml.cs
│   │   ├── StashTabControl.xaml
│   │   ├── StashTabControl.xaml.cs
│   │   ├── TabControlStyle.xaml
│   │   ├── TradeSettings.xaml
│   │   └── TradeSettings.xaml.cs
│   ├── ForumExportTemplate.txt
│   ├── Interfaces/
│   │   └── IStashControl.cs
│   ├── MainWindow.xaml
│   ├── MainWindow.xaml.cs
│   ├── Procurement.csproj
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── RelayCommand.cs
│   ├── Utility/
│   │   ├── AlphaHittestedImage.cs
│   │   ├── CharacterTabInjector.cs
│   │   ├── ClientLogFileEventArgs.cs
│   │   ├── ClientLogFileWatcher.cs
│   │   ├── ExportPreferenceManager.cs
│   │   ├── ItemHoverRenderer.cs
│   │   ├── PoeTradeOnlineHelper.cs
│   │   ├── StashHelper.cs
│   │   └── VersionChecker.cs
│   ├── View/
│   │   ├── AboutView.xaml
│   │   ├── AboutView.xaml.cs
│   │   ├── BindableRichTextBox.cs
│   │   ├── Block.xaml
│   │   ├── Block.xaml.cs
│   │   ├── Converters/
│   │   │   ├── CharacterToImageConverter.cs
│   │   │   ├── CharacterToLevelConverter.cs
│   │   │   ├── CurrencyCraftingSlotScalingConverter.cs
│   │   │   ├── FilterListToNameConverter.cs
│   │   │   ├── ItemDisplayConverter.cs
│   │   │   ├── ItemExplicitModsToFormattedRunConverter.cs
│   │   │   ├── ItemPropertyToFormattedRunConverter.cs
│   │   │   ├── ItemRequirementToFormattedRunConverter.cs
│   │   │   ├── ItemToColorBrushConverter.cs
│   │   │   ├── ItemToItemHoverSymbolPath.cs
│   │   │   ├── ItemToItemHoverSymbolVisibility.cs
│   │   │   ├── ObjectInListMultiConverter.cs
│   │   │   ├── RecipeDescriptionConverter.cs
│   │   │   ├── ResultMatchConverter.cs
│   │   │   └── TabIDToStashControlConverter.cs
│   │   ├── IViewModel.cs
│   │   ├── InventoryView.xaml
│   │   ├── InventoryView.xaml.cs
│   │   ├── ItemExplicitModsToFormattedRunConverter.cs
│   │   ├── ItemPropertyToFormattedRunConverter.cs
│   │   ├── ItemRequirementToFormattedRunConverter.cs
│   │   ├── ItemToColorBrushConverter.cs
│   │   ├── LoadingAnimation.xaml
│   │   ├── LoadingAnimation.xaml.cs
│   │   ├── LoginView.xaml
│   │   ├── LoginView.xaml.cs
│   │   ├── RecipeView.xaml
│   │   ├── RecipeView.xaml.cs
│   │   ├── RefreshView.xaml
│   │   ├── RefreshView.xaml.cs
│   │   ├── SettingsView.xaml
│   │   ├── SettingsView.xaml.cs
│   │   ├── StashView.xaml
│   │   ├── StashView.xaml.cs
│   │   ├── TradingView.xaml
│   │   ├── TradingView.xaml.cs
│   │   ├── VisibilityConverter.cs
│   │   └── VisualTreeHelper.cs
│   ├── ViewModel/
│   │   ├── AdvancedSearchCategory.cs
│   │   ├── Cache/
│   │   │   └── BitmapCache.cs
│   │   ├── DisplayModeStrategy/
│   │   │   ├── DisplayModeFactory.cs
│   │   │   ├── DisplayModeStrategyBase.cs
│   │   │   ├── IDisplayModeStrategy.cs
│   │   │   ├── NamePlusValueStrategy.cs
│   │   │   ├── StringFormatStrategy.cs
│   │   │   └── ValuesPlusNameStrategy.cs
│   │   ├── Filters/
│   │   │   ├── FilterGroup.cs
│   │   │   ├── ForumExport/
│   │   │   │   ├── AccurayFilter.cs
│   │   │   │   ├── AllElementalResistances.cs
│   │   │   │   ├── AllGemsFilter.cs
│   │   │   │   ├── AllMicrotransactions.cs
│   │   │   │   ├── AndFilter.cs
│   │   │   │   ├── AtlasFragmentFilter.cs
│   │   │   │   ├── AttackSpeed.cs
│   │   │   │   ├── AuraGemsFilter.cs
│   │   │   │   ├── BuyoutFilter.cs
│   │   │   │   ├── CastSpeed.cs
│   │   │   │   ├── CategoryManager.cs
│   │   │   │   ├── ChaosResistance.cs
│   │   │   │   ├── CharacterAttributeFilters.cs
│   │   │   │   ├── ColdResistance.cs
│   │   │   │   ├── CorruptedGemFilter.cs
│   │   │   │   ├── CraftedModFilter.cs
│   │   │   │   ├── CritChanceFilter.cs
│   │   │   │   ├── CurrencyFilter.cs
│   │   │   │   ├── CurseGemFilter.cs
│   │   │   │   ├── DamageChaos.cs
│   │   │   │   ├── DamageCold.cs
│   │   │   │   ├── DamageFire.cs
│   │   │   │   ├── DamageLightning.cs
│   │   │   │   ├── DamageTriple.cs
│   │   │   │   ├── DivineVesselFilter.cs
│   │   │   │   ├── DropOnlyGemFilter.cs
│   │   │   │   ├── DualRes.cs
│   │   │   │   ├── ElderItemFilter.cs
│   │   │   │   ├── EnchantModFilter.cs
│   │   │   │   ├── EnergyShieldFilter.cs
│   │   │   │   ├── EssenceFilter.cs
│   │   │   │   ├── ExplicitModBase.cs
│   │   │   │   ├── FatedUniqueBaseTypesFilter.cs
│   │   │   │   ├── FatedUniquePropheciesFilter.cs
│   │   │   │   ├── FatedUniqueTargetsFilter.cs
│   │   │   │   ├── FatedUniquesFilter.cs
│   │   │   │   ├── FireResistance.cs
│   │   │   │   ├── FiveLink.cs
│   │   │   │   ├── FossilFilter.cs
│   │   │   │   ├── FourLink.cs
│   │   │   │   ├── FracturedItemFilter.cs
│   │   │   │   ├── FullBestiaryOrbFilter.cs
│   │   │   │   ├── GearSearchFilters.cs
│   │   │   │   ├── GearTypeFilter.cs
│   │   │   │   ├── GemCategoryFilter.cs
│   │   │   │   ├── GemLevelFilter.cs
│   │   │   │   ├── GlobalCritChanceFilter.cs
│   │   │   │   ├── GlobalCritMultiplierFilter.cs
│   │   │   │   ├── IncreasedDamageFilter.cs
│   │   │   │   ├── IncreasedPhysicalDamageFilter.cs
│   │   │   │   ├── IncubatorFilter.cs
│   │   │   │   ├── IncursionVialsFilter.cs
│   │   │   │   ├── ItemQuantityFilter.cs
│   │   │   │   ├── ItemRarityFilter.cs
│   │   │   │   ├── LeagestoneFilter.cs
│   │   │   │   ├── LeveledGemFilter.cs
│   │   │   │   ├── LifeFilter.cs
│   │   │   │   ├── LifeLeech.cs
│   │   │   │   ├── LifeRegenFilter.cs
│   │   │   │   ├── LightningResistance.cs
│   │   │   │   ├── Link.cs
│   │   │   │   ├── MagicRarity.cs
│   │   │   │   ├── ManaFilter.cs
│   │   │   │   ├── ManaLeechFilter.cs
│   │   │   │   ├── ManaRegenFilter.cs
│   │   │   │   ├── MapFilter.cs
│   │   │   │   ├── MapLevelFilter.cs
│   │   │   │   ├── MirroredItemFilter.cs
│   │   │   │   ├── MovementSpeed.cs
│   │   │   │   ├── MultipleVeiledModsFilter.cs
│   │   │   │   ├── NormalRarity.cs
│   │   │   │   ├── OneHandedFilter.cs
│   │   │   │   ├── OrFilter.cs
│   │   │   │   ├── OrStatFilter.cs
│   │   │   │   ├── PercentEnergyShieldFilter.cs
│   │   │   │   ├── PercentLifeFilter.cs
│   │   │   │   ├── PhysicalDamageFilter.cs
│   │   │   │   ├── PopularGemsFilter.cs
│   │   │   │   ├── ProphecyFilter.cs
│   │   │   │   ├── ProphecyFragmentFilter.cs
│   │   │   │   ├── QualityGemFilter.cs
│   │   │   │   ├── RareRarity.cs
│   │   │   │   ├── RarityFilter.cs
│   │   │   │   ├── ResistanceBase.cs
│   │   │   │   ├── ResonatorFilter.cs
│   │   │   │   ├── ScarabFilter.cs
│   │   │   │   ├── ShaperItemFilter.cs
│   │   │   │   ├── SixBlueSockets.cs
│   │   │   │   ├── SixGreenSockets.cs
│   │   │   │   ├── SixLink.cs
│   │   │   │   ├── SixRedSockets.cs
│   │   │   │   ├── SixSocketFilter.cs
│   │   │   │   ├── SocketColourFilter.cs
│   │   │   │   ├── SpellDamageFilter.cs
│   │   │   │   ├── StatFilter.cs
│   │   │   │   ├── StatFilterBase.cs
│   │   │   │   ├── SupportGemsFilter.cs
│   │   │   │   ├── SynthesisedItemFilter.cs
│   │   │   │   ├── TripleResistance.cs
│   │   │   │   ├── TwoHandedFilter.cs
│   │   │   │   ├── TypeLineFilter.cs
│   │   │   │   ├── UniqueRarity.cs
│   │   │   │   ├── UnknownItemFilter.cs
│   │   │   │   ├── VaalFragmentFilter.cs
│   │   │   │   ├── VaalUberFragmentFilter.cs
│   │   │   │   ├── VeiledModFilter.cs
│   │   │   │   ├── VeiledPrefixFilter.cs
│   │   │   │   ├── VeiledSuffixFilter.cs
│   │   │   │   └── XHandFilter.cs
│   │   │   ├── IFilter.cs
│   │   │   ├── ItemFilter.cs
│   │   │   └── UserSearchFilter.cs
│   │   ├── ForumExportViewModel.cs
│   │   ├── ForumExportVisitors/
│   │   │   ├── ExplicitModVisitor.cs
│   │   │   ├── GearVisitor.cs
│   │   │   ├── GemVisitor.cs
│   │   │   ├── IGNVistior.cs
│   │   │   ├── IVisitor.cs
│   │   │   ├── LastUpdatedVisitor.cs
│   │   │   ├── LeveledGemVisitor.cs
│   │   │   ├── LinksVisitor.cs
│   │   │   ├── MagicFindVisitor.cs
│   │   │   ├── MapVisitor.cs
│   │   │   ├── MultipleBuyoutVisitor.cs
│   │   │   ├── QualityGemVisitor.cs
│   │   │   ├── SimpleVisitor.cs
│   │   │   ├── SimpleVisitors.cs
│   │   │   ├── SingleBuyoutVisitor.cs
│   │   │   ├── StashVisitor.cs
│   │   │   ├── TypeLineVisitor.cs
│   │   │   ├── VisitorBase.cs
│   │   │   └── XHandedVisitor.cs
│   │   ├── ForumTemplateViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── ItemDisplayViewModel.cs
│   │   ├── ItemFilterUpdater.cs
│   │   ├── ItemHoverViewModel.cs
│   │   ├── ItemHoverViewModelFactory.cs
│   │   ├── LoginWindowViewModel.cs
│   │   ├── MainPageViewModel.cs
│   │   ├── ObservableBase.cs
│   │   ├── PricingInfo.cs
│   │   ├── RecipeResultViewModel.cs
│   │   ├── Recipes/
│   │   │   ├── ArmourersScrapRecipe.cs
│   │   │   ├── BlacksmithsWhetstoneRecipe.cs
│   │   │   ├── CartographersChiselRecipe.cs
│   │   │   ├── ChromaticRecipe.cs
│   │   │   ├── GCPRecipe.cs
│   │   │   ├── GlassblowersBaubleRecipe.cs
│   │   │   ├── LoreweaveRecipe.cs
│   │   │   ├── MatchedSet.cs
│   │   │   ├── MinimumQualityRecipe.cs
│   │   │   ├── RareSetRecipe.cs
│   │   │   ├── Recipe.cs
│   │   │   ├── RecipeManager.cs
│   │   │   ├── RecipeResult.cs
│   │   │   ├── SameBaseTypeRecipe.cs
│   │   │   ├── SameNameRecipe.cs
│   │   │   └── VaalOrbRecipe.cs
│   │   ├── ScreenController.cs
│   │   ├── SetBuyoutViewModel.cs
│   │   ├── SetTabBuyoutViewModel.cs
│   │   ├── SettingsViewModel.cs
│   │   ├── StatusController.cs
│   │   ├── TabInfo.cs
│   │   ├── TabViewModel/
│   │   │   ├── CommonTabViewModel.cs
│   │   │   ├── CurrencyStashViewModel.cs
│   │   │   ├── EssenceStashViewModel.cs
│   │   │   ├── FragmentStashViewModel.cs
│   │   │   ├── StashViewModel.cs
│   │   │   ├── TabContent.cs
│   │   │   ├── TabFactory.cs
│   │   │   └── TabVisuals.cs
│   │   ├── TradeSettingsViewModel.cs
│   │   └── TradingViewModel.cs
│   ├── app.config
│   └── packages.config
├── Procurement.sln
├── README.md
├── Tests/
│   ├── POEApi.Model.Tests/
│   │   ├── Files.Designer.cs
│   │   ├── Files.resx
│   │   ├── GearTests.cs
│   │   ├── IFilterTests.cs
│   │   ├── ItemFactoryTests.cs
│   │   ├── POEApi.Model.Tests.csproj
│   │   ├── PoeModelTests.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── TestData/
│   │   │   ├── SampleCharacter.json
│   │   │   ├── SampleCharacterExpiredName.json
│   │   │   ├── SampleCurrencyTabWithShards.json
│   │   │   ├── SampleFragmentStash.json
│   │   │   ├── SampleInventory.json
│   │   │   ├── SampleInventoryWithPantheonSoul.json
│   │   │   ├── SampleInventoryWithQuestItems.json
│   │   │   ├── SampleStash.json
│   │   │   ├── SampleStashWithDivineVessel.json
│   │   │   ├── SampleStashWithEssences.json
│   │   │   ├── SampleStashWithLeagueStoneChargeInfo.json
│   │   │   ├── SampleStashWithLitheBlade.json
│   │   │   ├── SampleStashWithMaps.json
│   │   │   ├── SampleStashWithMirroredItems.json
│   │   │   ├── SampleStashWithNets.json
│   │   │   ├── SampleStashWithRelic.json
│   │   │   ├── SampleStashWithRemnantOfCorruption.json
│   │   │   ├── SampleStashWithSaintlyChainmail.json
│   │   │   ├── SampleStashWithScarab.json
│   │   │   └── SampleStashWithSynthesisItems.json
│   │   ├── UnitTestHelper.cs
│   │   ├── UnknownItemTests.cs
│   │   ├── app.config
│   │   └── packages.config
│   ├── POEApi.TestHelpers/
│   │   ├── Builders/
│   │   │   ├── Build.cs
│   │   │   └── JSONProxyItemBuilder.cs
│   │   ├── POEApi.TestHelpers.csproj
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── app.config
│   │   └── packages.config
│   └── Procurement.Tests/
│       ├── Procurement.Tests.csproj
│       ├── Properties/
│       │   └── AssemblyInfo.cs
│       ├── ViewModel/
│       │   └── Recipes/
│       │       ├── RareSetRecipeTests.cs
│       │       ├── SameBaseTypeRecipeTests.cs
│       │       ├── SameNameRecipeTests.cs
│       │       └── VaalOrbRecipeTests.cs
│       ├── app.config
│       └── packages.config
├── Tools/
│   ├── App.config
│   ├── EssenceGenerator.cs
│   ├── Procurement.Tools.csproj
│   ├── Procurement.Tools.sln
│   ├── Program.cs
│   └── Properties/
│       └── AssemblyInfo.cs
└── latest-release.txt

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

================================================
FILE: .gitignore
================================================
POEApi.Infrastructure/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
POEApi.Model/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
POEApi.Transport/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
Procurement.suo
Procurement.v12.suo
Procurement.v11.suo
Procurement/Procurement.csproj.user
**/bin/Debug/
**/bin/Release/
**/obj/

.vs/

packages/
*.user

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

================================================
FILE: LICENSE
================================================
  The Artistic License 2.0

	    Copyright (c) 2000-2006, The Perl Foundation.

     Everyone is permitted to copy and distribute verbatim copies
      of this license document, but changing it is not allowed.

Preamble

This license establishes the terms under which a given free software
Package may be copied, modified, distributed, and/or redistributed.
The intent is that the Copyright Holder maintains some artistic
control over the development of that Package while still keeping the
Package available as open source and free software.

You are always permitted to make arrangements wholly outside of this
license directly with the Copyright Holder of a given Package.  If the
terms of this license do not permit the full use that you propose to
make of the Package, you should contact the Copyright Holder and seek
a different licensing arrangement. 

Definitions

    "Copyright Holder" means the individual(s) or organization(s)
    named in the copyright notice for the entire Package.

    "Contributor" means any party that has contributed code or other
    material to the Package, in accordance with the Copyright Holder's
    procedures.

    "You" and "your" means any person who would like to copy,
    distribute, or modify the Package.

    "Package" means the collection of files distributed by the
    Copyright Holder, and derivatives of that collection and/or of
    those files. A given Package may consist of either the Standard
    Version, or a Modified Version.

    "Distribute" means providing a copy of the Package or making it
    accessible to anyone else, or in the case of a company or
    organization, to others outside of your company or organization.

    "Distributor Fee" means any fee that you charge for Distributing
    this Package or providing support for this Package to another
    party.  It does not mean licensing fees.

    "Standard Version" refers to the Package if it has not been
    modified, or has been modified only in ways explicitly requested
    by the Copyright Holder.

    "Modified Version" means the Package, if it has been changed, and
    such changes were not explicitly requested by the Copyright
    Holder. 

    "Original License" means this Artistic License as Distributed with
    the Standard Version of the Package, in its current version or as
    it may be modified by The Perl Foundation in the future.

    "Source" form means the source code, documentation source, and
    configuration files for the Package.

    "Compiled" form means the compiled bytecode, object code, binary,
    or any other form resulting from mechanical transformation or
    translation of the Source form.


Permission for Use and Modification Without Distribution

(1)  You are permitted to use the Standard Version and create and use
Modified Versions for any purpose without restriction, provided that
you do not Distribute the Modified Version.


Permissions for Redistribution of the Standard Version

(2)  You may Distribute verbatim copies of the Source form of the
Standard Version of this Package in any medium without restriction,
either gratis or for a Distributor Fee, provided that you duplicate
all of the original copyright notices and associated disclaimers.  At
your discretion, such verbatim copies may or may not include a
Compiled form of the Package.

(3)  You may apply any bug fixes, portability changes, and other
modifications made available from the Copyright Holder.  The resulting
Package will still be considered the Standard Version, and as such
will be subject to the Original License.


Distribution of Modified Versions of the Package as Source 

(4)  You may Distribute your Modified Version as Source (either gratis
or for a Distributor Fee, and with or without a Compiled form of the
Modified Version) provided that you clearly document how it differs
from the Standard Version, including, but not limited to, documenting
any non-standard features, executables, or modules, and provided that
you do at least ONE of the following:

    (a)  make the Modified Version available to the Copyright Holder
    of the Standard Version, under the Original License, so that the
    Copyright Holder may include your modifications in the Standard
    Version.

    (b)  ensure that installation of your Modified Version does not
    prevent the user installing or running the Standard Version. In
    addition, the Modified Version must bear a name that is different
    from the name of the Standard Version.

    (c)  allow anyone who receives a copy of the Modified Version to
    make the Source form of the Modified Version available to others
    under
		
	(i)  the Original License or

	(ii)  a license that permits the licensee to freely copy,
	modify and redistribute the Modified Version using the same
	licensing terms that apply to the copy that the licensee
	received, and requires that the Source form of the Modified
	Version, and of any works derived from it, be made freely
	available in that license fees are prohibited but Distributor
	Fees are allowed.


Distribution of Compiled Forms of the Standard Version 
or Modified Versions without the Source

(5)  You may Distribute Compiled forms of the Standard Version without
the Source, provided that you include complete instructions on how to
get the Source of the Standard Version.  Such instructions must be
valid at the time of your distribution.  If these instructions, at any
time while you are carrying out such distribution, become invalid, you
must provide new instructions on demand or cease further distribution.
If you provide valid instructions or cease distribution within thirty
days after you become aware that the instructions are invalid, then
you do not forfeit any of your rights under this license.

(6)  You may Distribute a Modified Version in Compiled form without
the Source, provided that you comply with Section 4 with respect to
the Source of the Modified Version.


Aggregating or Linking the Package 

(7)  You may aggregate the Package (either the Standard Version or
Modified Version) with other packages and Distribute the resulting
aggregation provided that you do not charge a licensing fee for the
Package.  Distributor Fees are permitted, and licensing fees for other
components in the aggregation are permitted. The terms of this license
apply to the use and Distribution of the Standard or Modified Versions
as included in the aggregation.

(8) You are permitted to link Modified and Standard Versions with
other works, to embed the Package in a larger work of your own, or to
build stand-alone binary or bytecode versions of applications that
include the Package, and Distribute the result without restriction,
provided the result does not expose a direct interface to the Package.


Items That are Not Considered Part of a Modified Version 

(9) Works (including, but not limited to, modules and scripts) that
merely extend or make use of the Package, do not, by themselves, cause
the Package to be a Modified Version.  In addition, such works are not
considered parts of the Package itself, and are not subject to the
terms of this license.


General Provisions

(10)  Any use, modification, and distribution of the Standard or
Modified Versions is governed by this Artistic License. By using,
modifying or distributing the Package, you accept this license. Do not
use, modify, or distribute the Package, if you do not accept this
license.

(11)  If your Modified Version has been derived from a Modified
Version made by someone other than you, you are nevertheless required
to ensure that your Modified Version complies with the requirements of
this license.

(12)  This license does not grant you the right to use any trademark,
service mark, tradename, or logo of the Copyright Holder.

(13)  This license includes the non-exclusive, worldwide,
free-of-charge patent license to make, have made, use, offer to sell,
sell, import and otherwise transfer the Package with respect to any
patent claims licensable by the Copyright Holder that are necessarily
infringed by the Package. If you institute patent litigation
(including a cross-claim or counterclaim) against any party alleging
that the Package constitutes direct or contributory patent
infringement, then this Artistic License to you shall terminate on the
date that such litigation is filed.

(14)  Disclaimer of Warranty:
THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

================================================
FILE: POEApi.Infrastructure/CacheService.cs
================================================
using System.IO;
using System.Linq;
using System.Reflection;

namespace POEApi.Infrastructure
{
    public class CacheService
    {
        private string _location;

        private string GetFullPath(string key)
        {
            // Percent-encode any characters in the key name that aren't valid in filenames
            key = Path.GetInvalidFileNameChars()
                .Aggregate(key, (current, c) => current.Replace(c.ToString(), "%" + ((int)c).ToString("X2")));

            if (Path.GetExtension(key) != string.Empty)
                return Path.Combine(_location, key);

            return Path.Combine(_location, key + ".bin");
        }

        public CacheService()
            : this("Common")
        { }

        public CacheService(string email)
        {
            _location = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), email);
            if (!Directory.Exists(_location))
                Directory.CreateDirectory(_location);
        }

        public bool Exists(string key)
        {
            return File.Exists(GetFullPath(key));
        }

        public Stream Get(string key)
        {
            return new MemoryStream(File.ReadAllBytes(GetFullPath(key)));
        }

        public void Set(string key, Stream data)
        {
            StreamReader reader = new StreamReader(data);
            File.WriteAllBytes(GetFullPath(key), reader.ReadAllBytes());
        }

        public void Remove(string key)
        {
            File.Delete(GetFullPath(key));
        }

        public void Clear()
        {
            Directory.Delete(_location, true);
            Directory.CreateDirectory(_location);
        }
    }
}


================================================
FILE: POEApi.Infrastructure/CurrencyAbbreviationMap.cs
================================================
using System.Collections.Generic;
using System;

namespace POEApi.Infrastructure
{
    //WTB Bi-directional Dictionary in .NET

    public sealed class CurrencyAbbreviationMap
    {
        private static volatile CurrencyAbbreviationMap _instance;
        private static object _syncRoot = new Object();

        private static Dictionary<string, string> _currencyToAbbreviation = new Dictionary<string, string>();
        private static Dictionary<string, string> _abbreviationToCurrency = new Dictionary<string, string>();

        private CurrencyAbbreviationMap()
        {
            AddItem("Chromatic Orb", "chrom");
            AddItem("Orb of Alteration", "alt");
            AddItem("Jeweller's Orb", "jew");
            AddItem("Orb of Chance", "chance");
            AddItem("Cartographer's Chisel", "chisel");
            AddItem("Orb of Fusing", "fuse");
            AddItem("Orb of Alchemy", "alch");
            AddItem("Orb of Scouring", "scour");
            AddItem("Blessed Orb", "blessed");
            AddItem("Chaos Orb", "chaos");
            AddItem("Orb of Regret", "regret");
            AddItem("Regal Orb", "regal");
            AddItem("Gemcutter's Prism", "gcp");
            AddItem("Divine Orb", "divine");
            AddItem("Exalted Orb", "exa");
            AddItem("Vaal Orb", "vaal");
        }

        private static void AddItem(string currency, string abbreviation)
        {
            _currencyToAbbreviation.Add(currency, abbreviation);
            _abbreviationToCurrency.Add(abbreviation, currency);
        }

        public string FromAbbreviation(string abbreviation)
        {
            if (!_abbreviationToCurrency.ContainsKey(abbreviation))
                return string.Empty;
            
            return _abbreviationToCurrency[abbreviation];
        }

        public string FromCurrency(string currency)
        {
            if (!_currencyToAbbreviation.ContainsKey(currency))
                return string.Empty;

            return _currencyToAbbreviation[currency];
        }

        public static CurrencyAbbreviationMap Instance
        {
            get
            {
                if (_instance == null)
                    lock (_syncRoot)
                        if (_instance == null)
                            _instance = new CurrencyAbbreviationMap();

                return _instance;
            }
        }
    }
}


================================================
FILE: POEApi.Infrastructure/DPAPI.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security;
using System.Security.Cryptography;
using System.Runtime.InteropServices;
using System.IO;

namespace POEApi.Infrastructure
{
    public static class DPAPI
    {
        private static RNGCryptoServiceProvider _rngProvider = new RNGCryptoServiceProvider();
        private static int _saltLengthBytes = 16;

        public static string Encrypt(this SecureString secret)
        {
            if (secret == null)
                throw new ArgumentNullException("secret");

            IntPtr ptr = Marshal.SecureStringToCoTaskMemUnicode(secret);
            try
            {
                byte[] entropy = new byte[_saltLengthBytes];
                _rngProvider.GetBytes(entropy);

                char[] buffer = new char[secret.Length];
                Marshal.Copy(ptr, buffer, 0, secret.Length);

                byte[] data = Encoding.Unicode.GetBytes(buffer);
                byte[] encrypted = ProtectedData.Protect(data, entropy, DataProtectionScope.CurrentUser);

                List<byte> saltInclusive = new List<byte>();
                saltInclusive.AddRange(entropy);
                saltInclusive.AddRange(encrypted);

                return Convert.ToBase64String(saltInclusive.ToArray());
            }
            finally
            {
                Marshal.ZeroFreeCoTaskMemUnicode(ptr);
            }
        }

        public static SecureString Decrypt(this string cipher)
        {
            if (cipher == null) throw new ArgumentNullException("cipher");

            byte[] saltInclusive = Convert.FromBase64String(cipher);
            if (saltInclusive.Length < _saltLengthBytes)
            {
                var securedString = new SecureString();
                securedString.MakeReadOnly();
                return securedString;
            }

            MemoryStream ms;
            byte[] entropy, data;

            using (ms = new MemoryStream(saltInclusive))
            {
                BinaryReader reader = new BinaryReader(ms, Encoding.Unicode);
                entropy = reader.ReadBytes(_saltLengthBytes);
                data = reader.ReadBytes(saltInclusive.Length - _saltLengthBytes);
            }

            byte[] decrypted = ProtectedData.Unprotect(data, entropy, DataProtectionScope.CurrentUser);

            SecureString secured = new SecureString();

            int count = Encoding.Unicode.GetCharCount(decrypted);
            if (count > 0)
            {
                int bc = decrypted.Length / count;

                for (int i = 0; i < count; i++)
                    secured.AppendChar(Encoding.Unicode.GetChars(decrypted, i * bc, bc)[0]);
            }

            secured.MakeReadOnly();

            return secured;
        }

        public static string UnWrap(this SecureString secret)
        {
            if (secret == null)
                throw new ArgumentNullException("secret");

            IntPtr ptr = Marshal.SecureStringToCoTaskMemUnicode(secret);
            try
            {
                return Marshal.PtrToStringUni(ptr);
            }
            finally
            {
                Marshal.ZeroFreeCoTaskMemUnicode(ptr);
            }
        }
    }
}


================================================
FILE: POEApi.Infrastructure/Events/ThottledEventArgs.cs
================================================
using System;

namespace POEApi.Infrastructure.Events
{
    public class ThottledEventArgs : EventArgs
    {
        public TimeSpan WaitTime { get; private set; }
        public ThottledEventArgs(TimeSpan waitTime)
        {
            WaitTime = waitTime;
        }
    }
}


================================================
FILE: POEApi.Infrastructure/Events/ThrottledEventHandler.cs
================================================
namespace POEApi.Infrastructure.Events
{
    public delegate void ThottledEventHandler(object sender, ThottledEventArgs e);
}


================================================
FILE: POEApi.Infrastructure/ExcessiveRequestException.cs
================================================
using System;

namespace POEApi.Infrastructure
{
    public class ExcessiveRequestException: Exception
    {
        public ExcessiveRequestException() 
            : base("Too many requests to GGG server")
        { }
    }
}


================================================
FILE: POEApi.Infrastructure/Extensions.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Xml.Linq;

namespace POEApi.Infrastructure
{
    public static class Extensions
    {
        public static string GetHash(this string input)
        {
            StringBuilder sb = new StringBuilder();

            foreach (var item in MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(input)))
                sb.Append(item.ToString("x2").ToLower());

            return sb.ToString();
        }

        public static T GetEnum<T>(this XAttribute attribute)
        {
            return (T)Enum.Parse(typeof(T), attribute.Value);
        }

        public static byte[] ReadAllBytes(this StreamReader reader)
        {
            List<byte> bytes = new List<byte>();
            byte[] buffer = new byte[1024];

            int readBytes = -1;
            while (readBytes != 0)
            {
                readBytes = reader.BaseStream.Read(buffer, 0, buffer.Length);
                bytes.AddRange(buffer.Take(readBytes));
            }

            return bytes.ToArray();
        }

        public static string SafeSubString(this string text, int start, int length)
        {
            return text.SafeSubString(start, length, string.Empty);
        }

        public static string SafeSubString(this string text, int start, int length, string suffix)
        {
            if (length > text.Length)
                return text;

            return string.Concat(text.Substring(start, length), suffix);
        }

        public static string GetEntry(this Dictionary<string, string> dictionary, string key) 
        {
            if (!dictionary.ContainsKey(key))
                return string.Empty;

            return dictionary[key];
        }
    }
}


================================================
FILE: POEApi.Infrastructure/ForumThreadException.cs
================================================
using System;

namespace POEApi.Infrastructure
{
    public class ForumThreadException : Exception
    {
        public ForumThreadException()
            : base() { }

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


================================================
FILE: POEApi.Infrastructure/Logger.cs
================================================
using System;
using System.IO;

namespace POEApi.Infrastructure
{
    public static class Logger
    {
        private const string Output = "DebugInfo.log";
        public static void Log(Exception e)
        {
            Log(e.ToString());
        }
        public static void Log(string message)
        {
            File.AppendAllText(Output, string.Format("{0}[{1}] {2}", Environment.NewLine, DateTime.Now.ToString("dd-MM-yyyy H:mm"), message));
        }
    }
}


================================================
FILE: POEApi.Infrastructure/LogonFailedException.cs
================================================

using System;

namespace POEApi.Infrastructure
{
    public class LogonFailedException : Exception
    {
        public LogonFailedException(string userName) 
            : base(string.Format("Username or password incorrect. User {0}", userName))
        { }

        public LogonFailedException()
            : base("Incorrect session id")
        { }
    }
}


================================================
FILE: POEApi.Infrastructure/POEApi.Infrastructure.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{2F0E4301-694B-4A26-80D8-D57042DA9D6F}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>POEApi.Infrastructure</RootNamespace>
    <AssemblyName>POEApi.Infrastructure</AssemblyName>
    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>none</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Security" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="CacheService.cs" />
    <Compile Include="CurrencyAbbreviationMap.cs" />
    <Compile Include="DPAPI.cs" />
    <Compile Include="Events\ThottledEventArgs.cs" />
    <Compile Include="Events\ThrottledEventHandler.cs" />
    <Compile Include="ExcessiveRequestException.cs" />
    <Compile Include="Extensions.cs" />
    <Compile Include="ForumThreadException.cs" />
    <Compile Include="Logger.cs" />
    <Compile Include="LogonFailedException.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: POEApi.Infrastructure/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("POEApi.Infrastructure")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("POEApi.Infrastructure")]
[assembly: AssemblyCopyright("Artistic License 2.0")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("8ed80a35-95da-4d77-ad5c-3a30c5897343")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.29.2.0")]
[assembly: AssemblyFileVersion("1.29.2.0")]





================================================
FILE: POEApi.Model/AbyssJewel.cs
================================================
using System.Collections.Generic;

namespace POEApi.Model
{
    public class AbyssJewel : SocketableItem
    {
        public AbyssJewel(JSONProxy.Item item) : base(item)
        {

        }

        public bool Abyssal { get; } = true;

        protected override Dictionary<string, string> DescriptiveNameComponents
        {
            get
            {
                var components = base.DescriptiveNameComponents;

                if (Rarity != Rarity.Normal)
                {
                    if (!Identified)
                    {
                        components["name"] = string.Format("Unidentified {0} {1}", Rarity, TypeLine);
                    }
                    else if (Rarity != Rarity.Magic)
                    {
                        components["name"] = string.Format("\"{0}\", {1} {2}", Name, Rarity, TypeLine);
                    }
                }

                return components;
            }
        }
    }
}

================================================
FILE: POEApi.Model/BreachSplinter.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using POEApi.Model.Interfaces;

namespace POEApi.Model
{
    public class BreachSplinter : Item, IBreachCurrency
    {
        public BreachType Type { get; set; }

        public BreachSplinter(JSONProxy.Item item) : base(item)
        {
            Type = ProxyMapper.GetBreachType(item);
        }
    }
}

================================================
FILE: POEApi.Model/BreachStone.cs
================================================
using POEApi.Model.Interfaces;

namespace POEApi.Model
{
    public class Breachstone : Item, IBreachCurrency
    {
        public BreachType Type { get; set; }

        public Breachstone(JSONProxy.Item item) : base(item)
        {
            Type = ProxyMapper.GetBreachType(item);
        }
    }
}

================================================
FILE: POEApi.Model/BreachType.cs
================================================
namespace POEApi.Model
{
    public enum BreachType
    {
        Chayula,
        Xoph,
        Esh,
        Tul,
        UulNetol,

        Unknown
    }
}

================================================
FILE: POEApi.Model/Buyouts.xml
================================================
<?xml version="1.0" encoding="utf-8" ?>
<Buyouts>
  <ItemBuyouts> 
    <!-- Buyouts you set on items in Procurement are stored in this section-->
  </ItemBuyouts>
  <TabBuyouts>
    <!--Add your tabwide buyouts here Eg"-->
    <!--<Item id="TabNameHere" value="1 chaos" />-->
  </TabBuyouts>
</Buyouts>


================================================
FILE: POEApi.Model/Character.cs
================================================
using Newtonsoft.Json;

namespace POEApi.Model
{
    public class Character
    {
        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("league")]
        public string League { get; set; }

        [JsonProperty("class")]
        public string Class { get; set; }

        [JsonProperty("classId")]
        public int ClassId { get; set; }

        [JsonProperty("level")]
        public int Level { get; set; }

        [JsonProperty("expired")]
        public bool Expired { get; set; }
    }
}

================================================
FILE: POEApi.Model/CharacterStashBuilder.cs
================================================
using POEApi.Infrastructure;
using System.Collections.Generic;

namespace POEApi.Model
{
    public class CharacterStashBuilder
    {
        public static List<Item> GetCharacterStashItems(string characterName, IEnumerable<Item> inventory, int inventoryID)
        {
            List<Item> characterItems = new List<Item>();
            foreach (var item in inventory)
            {
                var clone = item.Clone() as Item;
                clone.InventoryId = "Stash" + inventoryID;
                clone.Character = characterName;

                if (item.InventoryId != "MainInventory")
                    UpdatePosition(item, clone);

                if (item.InventoryId != "Map")
                    characterItems.Add(clone);
            }
            return characterItems;
        }

        public static void UpdatePosition(Item item, Item clone)
        {
            switch (item.InventoryId)
            {
                case "Flask":
                    clone.Y = 5;
                    break;
                case "Helm":
                    clone.X = 5;
                    clone.Y = 5;
                    break;
                case "Gloves":
                    clone.X = 7;
                    clone.Y = 5;
                    break;
                case "Boots":
                    clone.X = 9;
                    clone.Y = 5;
                    break;
                case "Ring":
                    clone.X = 11;
                    clone.Y = 5;
                    break;
                case "Ring2":
                    clone.X = 11;
                    clone.Y = 6;
                    break;
                case "Weapon":
                    clone.X = 0;
                    clone.Y = 7;
                    break;
                case "Offhand":
                    clone.X = 2;
                    clone.Y = 7;
                    break;
                case "Weapon2":
                    clone.X = 4;
                    clone.Y = 7;
                    break;
                case "Offhand2":
                    clone.X = 6;
                    clone.Y = 7;
                    break;
                case "Belt":
                    clone.X = 9;
                    clone.Y = 7;
                    break;
                case "Amulet":
                    clone.X = 11;
                    clone.Y = 7;
                    break;
                case "BodyArmour":
                    clone.X = 9;
                    clone.Y = 8;
                    break;
                default:
                    Logger.Log(string.Format("Unknown character inventoryId '{0}' found for {1}", clone.InventoryId, clone.TypeLine));
                    break;
            }
        }
    }
}


================================================
FILE: POEApi.Model/ChargeInfo.cs
================================================
namespace POEApi.Model
{
    public class ChargeInfo
    {
        public int Charges { get; set; }
        public int MaxCharges { get; set; }

        internal ChargeInfo(int charges, int maxCharges)
        {
            this.Charges = charges;
            this.MaxCharges = maxCharges;
        }

        public override string ToString()
        {
            return $"{Charges}/{MaxCharges}";
        }
    }
}


================================================
FILE: POEApi.Model/Colour.cs
================================================
using System.Windows.Media;

namespace POEApi.Model
{
    public class Colour
    {
        public int r { get; set; }
        public int g { get; set; }
        public int b { get; set; }

        public Color WpfColor => Color.FromRgb((byte) r,(byte) g,(byte) b); 
    }
}

================================================
FILE: POEApi.Model/Currency.cs
================================================
using System.Diagnostics;

namespace POEApi.Model
{
    [DebuggerDisplay("Type: {Type} Stack: {StackInfo.Amount}/{StackInfo.MaxSize}")]
    public class Currency : Item
    {
        public Currency(JSONProxy.Item item) : base(item)
        {
            ItemType = ItemType.Currency;
            Type = ProxyMapper.GetOrbType(item);
            ChaosValue = CurrencyHandler.GetChaosValue(Type);
        }

        public OrbType Type { get; }
        public double ChaosValue { get; private set; }
       
    }
}

================================================
FILE: POEApi.Model/CurrencyHandler.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;

namespace POEApi.Model
{
    internal class CurrencyHandler
    {
        private static Dictionary<OrbType, double> ratioCache;

        static CurrencyHandler()
        {
            ratioCache = new Dictionary<OrbType, double>();

            foreach (var type in Enum.GetValues(typeof(OrbType)).Cast<OrbType>())
                ratioCache[type] = getRatio(type);
        }

        private static double getRatio(OrbType type)
        {
            if (!Settings.CurrencyRatios.ContainsKey(type))
                return 0;

            return calculateRatio(Settings.CurrencyRatios[type]);
        }

        private static double calculateRatio(CurrencyRatio ratio)
        {
            if (ratio.OrbAmount == 1)
                return ratio.OrbAmount * ratio.ChaosAmount;

            return ratio.ChaosAmount / ratio.OrbAmount;
        }
        
        internal static double GetChaosValue(OrbType type)
        {
            return ratioCache[type];
        }

        public static double GetTotal(OrbType target, IEnumerable<Currency> currency)
        {
            double total = 0;

            foreach (var orb in currency)
                total += orb.StackSize * orb.ChaosValue;

            var ratioToChaos = Settings.CurrencyRatios[target];

            total *= (ratioToChaos.OrbAmount / ratioToChaos.ChaosAmount);

            return total;
        }

        public static Dictionary<OrbType, double> GetTotalCurrencyDistribution(OrbType target, IEnumerable<Currency> currency)
        {
            return currency.Where(o => !o.TypeLine.Contains("Shard"))
                           .GroupBy(orb => orb.Type)
                           .Where(group => GetTotal(target, group) > 0)
                           .Select(grp => new { Key = grp.Key, Value = GetTotal(target, grp) })
                           .OrderByDescending(at => at.Value)
                           .ToDictionary(at => at.Key, at => at.Value);
        }

        public static Dictionary<OrbType, double> GetTotalCurrencyCount(IEnumerable<Currency> currency)
        {
            return currency.Where(o => !o.TypeLine.Contains("Shard"))
                           .GroupBy(orb => orb.Type)
                           .Select(grp => new { Key = grp.Key, Value = (double)grp.Sum(c => c.StackSize) })
                           .OrderByDescending(at => at.Value)
                           .ToDictionary(at => at.Key, at => at.Value);
        }
    }
}


================================================
FILE: POEApi.Model/CurrencyRatio.cs
================================================
namespace POEApi.Model
{
    public class CurrencyRatio
    {
        public OrbType OrbType { get; set; }
        public double OrbAmount { get; set; }
        public double ChaosAmount { get; set; }

        public CurrencyRatio(OrbType orbType, double orbAmount, double chaosAmount)
        {
            OrbType = orbType;
            OrbAmount = orbAmount;
            ChaosAmount = chaosAmount;
        }
    }
}


================================================
FILE: POEApi.Model/Data.xml
================================================
<?xml version="1.0" encoding="utf-8" ?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Data.xsd">
  <GearBaseTypes>
    <GearBaseType name="Ring">
      <Item name="Breach Ring"/>
      <Item name="Coral Ring"/>
      <Item name="Iron Ring"/>
      <Item name="Paua Ring"/>
      <Item name="Unset Ring"/>
      <Item name="Sapphire Ring"/>
      <Item name="Topaz Ring"/>
      <Item name="Ruby Ring"/>
      <Item name="Diamond Ring"/>
      <Item name="Gold Ring"/>
      <Item name="Moonstone Ring"/>
      <Item name="Two-Stone Ring"/>
      <Item name="Amethyst Ring"/>
      <Item name="Prismatic Ring"/>
      <Item name="Opal Ring"/>
      <Item name="Steel Ring"/>
      <Item name="Vermillion Ring"/>
      <Item name="Cerulean Ring"/>
    </GearBaseType>
    <GearBaseType name="Amulet">
      <Item name="Coral Amulet"/>
      <Item name="Paua Amulet"/>
      <Item name="Amber Amulet"/>
      <Item name="Jade Amulet"/>
      <Item name="Lapis Amulet"/>
      <Item name="Gold Amulet"/>
      <Item name="Agate Amulet"/>
      <Item name="Citrine Amulet"/>
      <Item name="Turquoise Amulet"/>
      <Item name="Onyx Amulet"/>
      <Item name="Marble Amulet"/>
      <Item name="Blue Pearl Amulet"/>

      <Item name="Ashscale Talisman"/>
      <Item name="Avian Twins Talisman"/>
      <Item name="Black Maw Talisman"/>
      <Item name="Bonespire Talisman"/>
      <Item name="Breakrib Talisman"/>
      <Item name="Chrysalis Talisman"/>
      <Item name="Clutching Talisman"/>
      <Item name="Deadhand Talisman"/>
      <Item name="Deep One Talisman"/>
      <Item name="Fangjaw Talisman"/>
      <Item name="Greatwolf Talisman"/>
      <Item name="Hexclaw Talisman"/>
      <Item name="Horned Talisman"/>
      <Item name="Lone Antler Talisman"/>
      <Item name="Longtooth Talisman"/>
      <Item name="Mandible Talisman"/>
      <Item name="Monkey Paw Talisman"/>
      <Item name="Monkey Twins Talisman"/>
      <Item name="Primal Skull Talisman"/>
      <Item name="Rot Head Talisman"/>
      <Item name="Rotfeather Talisman"/>
      <Item name="Spinefuse Talisman"/>
      <Item name="Splitnewt Talisman"/>
      <Item name="Three Hands Talisman"/>
      <Item name="Three Rat Talisman"/>
      <Item name="Undying Flesh Talisman"/>
      <Item name="Wereclaw Talisman"/>
      <Item name="Writhing Talisman"/>
    </GearBaseType>
    <GearBaseType name="Helmet">
      <Item name="Iron Hat"/>
      <Item name="Cone Helmet"/>
      <Item name="Barbute Helmet"/>
      <Item name="Close Helmet"/>
      <Item name="Gladiator Helmet"/>
      <Item name="Reaver Helmet"/>
      <Item name="Siege Helmet"/>
      <Item name="Samite Helmet"/>
      <Item name="Ezomyte Burgonet"/>
      <Item name="Royal Burgonet"/>
      <Item name="Eternal Burgonet"/>

      <Item name="Leather Cap"/>
      <Item name="Tricorne"/>
      <Item name="Leather Hood"/>
      <Item name="Wolf Pelt"/>
      <Item name="Hunter Hood"/>
      <Item name="Noble Tricorne"/>
      <Item name="Ursine Pelt"/>
      <Item name="Silken Hood"/>
      <Item name="Sinner Tricorne"/>
      <Item name="Lion Pelt"/>

      <Item name="Vine Circlet"/>
      <Item name="Iron Circlet"/>
      <Item name="Torture Cage"/>
      <Item name="Tribal Circlet"/>
      <Item name="Bone Circlet"/>
      <Item name="Lunaris Circlet"/>
      <Item name="Steel Circlet"/>
      <Item name="Necromancer Circlet"/>
      <Item name="Solaris Circlet"/>
      <Item name="Mind Cage"/>
      <Item name="Hubris Circlet"/>

      <Item name="Battered Helm"/>
      <Item name="Sallet"/>
      <Item name="Visored Sallet"/>
      <Item name="Gilded Sallet"/>
      <Item name="Secutor Helm"/>
      <Item name="Fencer Helm"/>
      <Item name="Lacquered Helmet"/>
      <Item name="Fluted Bascinet"/>
      <Item name="Pig-Faced Bascinet"/>
      <Item name="Nightmare Bascinet"/>

      <Item name="Rusted Coif"/>
      <Item name="Soldier Helmet"/>
      <Item name="Great Helmet"/>
      <Item name="Crusader Helmet"/>
      <Item name="Aventail Helmet"/>
      <Item name="Zealot Helmet"/>
      <Item name="Great Crown"/>
      <Item name="Magistrate Crown"/>
      <Item name="Prophet Crown"/>
      <Item name="Praetor Crown"/>
      <Item name="Bone Helmet"/>

      <Item name="Scare Mask"/>
      <Item name="Plague Mask"/>
      <Item name="Iron Mask"/>
      <Item name="Festival Mask"/>
      <Item name="Golden Mask"/>
      <Item name="Raven Mask"/>
      <Item name="Callous Mask"/>
      <Item name="Regicide Mask"/>
      <Item name="Harlequin Mask"/>
      <Item name="Vaal Mask"/>
      <Item name="Deicide Mask"/>
    </GearBaseType>
    <GearBaseType name="Chest">
      <Item name="Plate Vest"/>
      <Item name="Chestplate"/>
      <Item name="Copper Plate"/>
      <Item name="War Plate"/>
      <Item name="Full Plate"/>
      <Item name="Arena Plate"/>
      <Item name="Lordly Plate"/>
      <Item name="Bronze Plate"/>
      <Item name="Battle Plate"/>
      <Item name="Sun Plate"/>
      <Item name="Colosseum Plate"/>
      <Item name="Majestic Plate"/>
      <Item name="Golden Plate"/>
      <Item name="Crusader Plate"/>
      <Item name="Astral Plate"/>
      <Item name="Gladiator Plate"/>
      <Item name="Glorious Plate"/>

      <Item name="Shabby Jerkin"/>
      <Item name="Strapped Leather"/>
      <Item name="Buckskin Tunic"/>
      <Item name="Wild Leather"/>
      <Item name="Full Leather"/>
      <Item name="Sun Leather"/>
      <Item name="Thief's Garb"/>
      <Item name="Eelskin Tunic"/>
      <Item name="Frontier Leather"/>
      <Item name="Glorious Leather"/>
      <Item name="Coronal Leather"/>
      <Item name="Cutthroat's Garb"/>
      <Item name="Sharkskin Tunic"/>
      <Item name="Destiny Leather"/>
      <Item name="Exquisite Leather"/>
      <Item name="Zodiac Leather"/>
      <Item name="Assassin's Garb"/>

      <Item name="Simple Robe"/>
      <Item name="Silken Vest"/>
      <Item name="Scholar's Robe"/>
      <Item name="Silken Garb"/>
      <Item name="Mage's Vestment"/>
      <Item name="Silk Robe"/>
      <Item name="Cabalist Regalia"/>
      <Item name="Sage's Robe"/>
      <Item name="Silken Wrap"/>
      <Item name="Conjurer's Vestment"/>
      <Item name="Spidersilk Robe"/>
      <Item name="Destroyer Regalia"/>
      <Item name="Savant's Robe"/>
      <Item name="Necromancer Silks"/>
      <Item name="Occultist's Vestment"/>
      <Item name="Widowsilk Robe"/>
      <Item name="Vaal Regalia"/>

      <Item name="Scale Vest"/>
      <Item name="Light Brigandine"/>
      <Item name="Scale Doublet"/>
      <Item name="Infantry Brigandine"/>
      <Item name="Full Scale Armour"/>
      <Item name="Soldier's Brigandine"/>
      <Item name="Field Lamellar"/>
      <Item name="Wyrmscale Doublet"/>
      <Item name="Hussar Brigandine"/>
      <Item name="Full Wyrmscale"/>
      <Item name="Commander's Brigandine"/>
      <Item name="Battle Lamellar"/>
      <Item name="Dragonscale Doublet"/>
      <Item name="Desert Brigandine"/>
      <Item name="Full Dragonscale"/>
      <Item name="General's Brigandine"/>
      <Item name="Triumphant Lamellar"/>

      <Item name="Chainmail Vest"/>
      <Item name="Chainmail Tunic"/>
      <Item name="Ringmail Coat"/>
      <Item name="Chainmail Doublet"/>
      <Item name="Full Ringmail"/>
      <Item name="Full Chainmail"/>
      <Item name="Holy Chainmail"/>
      <Item name="Latticed Ringmail"/>
      <Item name="Crusader Chainmail"/>
      <Item name="Ornate Ringmail"/>
      <Item name="Chain Hauberk"/>
      <Item name="Devout Chainmail"/>
      <Item name="Loricated Ringmail"/>
      <Item name="Conquest Chainmail"/>
      <Item name="Elegant Ringmail"/>
      <Item name="Saint's Hauberk"/>
      <Item name="Saintly Chainmail"/>

      <Item name="Padded Vest"/>
      <Item name="Oiled Vest"/>
      <Item name="Padded Jacket"/>
      <Item name="Oiled Coat"/>
      <Item name="Scarlet Raiment"/>
      <Item name="Waxed Garb"/>
      <Item name="Bone Armour"/>
      <Item name="Quilted Jacket"/>
      <Item name="Sleek Coat"/>
      <Item name="Crimson Raiment"/>
      <Item name="Lacquered Garb"/>
      <Item name="Crypt Armour"/>
      <Item name="Sentinel Jacket"/>
      <Item name="Varnished Coat"/>
      <Item name="Blood Raiment"/>
      <Item name="Sadist Garb"/>
      <Item name="Carnal Armour"/>

      <Item name="Sacrificial Garb"/>
    </GearBaseType>
    <GearBaseType name="Belt">
      <Item name="Chain Belt"/>
      <Item name="Rustic Sash"/>
      <Item name="Stygian Vise"/>
      <Item name="Heavy Belt"/>
      <Item name="Leather Belt"/>
      <Item name="Cloth Belt"/>
      <Item name="Studded Belt"/>
      <Item name="Vanguard Belt"/>
      <Item name="Crystal Belt"/>
    </GearBaseType>
    <GearBaseType name="Flask">
      <Item name="Small Life Flask"/>
      <Item name="Medium Life Flask"/>
      <Item name="Large Life Flask"/>
      <Item name="Greater Life Flask"/>
      <Item name="Grand Life Flask"/>
      <Item name="Giant Life Flask"/>
      <Item name="Colossal Life Flask"/>
      <Item name="Sacred Life Flask"/>
      <Item name="Hallowed Life Flask"/>
      <Item name="Sanctified Life Flask"/>
      <Item name="Divine Life Flask"/>
      <Item name="Eternal Life Flask"/>

      <Item name="Small Mana Flask"/>
      <Item name="Medium Mana Flask"/>
      <Item name="Large Mana Flask"/>
      <Item name="Greater Mana Flask"/>
      <Item name="Grand Mana Flask"/>
      <Item name="Giant Mana Flask"/>
      <Item name="Colossal Mana Flask"/>
      <Item name="Sacred Mana Flask"/>
      <Item name="Hallowed Mana Flask"/>
      <Item name="Sanctified Mana Flask"/>
      <Item name="Divine Mana Flask"/>
      <Item name="Eternal Mana Flask"/>

      <Item name="Small Hybrid Flask"/>
      <Item name="Medium Hybrid Flask"/>
      <Item name="Large Hybrid Flask"/>
      <Item name="Colossal Hybrid Flask"/>
      <Item name="Sacred Hybrid Flask"/>
      <Item name="Hallowed Hybrid Flask"/>

      <Item name="Quicksilver Flask"/>
      <Item name="Bismuth Flask"/>
      <Item name="Stibnite Flask"/>
      <Item name="Amethyst Flask"/>
      <Item name="Ruby Flask"/>
      <Item name="Sapphire Flask"/>
      <Item name="Topaz Flask"/>
      <Item name="Silver Flask"/>
      <Item name="Aquamarine Flask"/>
      <Item name="Granite Flask"/>
      <Item name="Jade Flask"/>
      <Item name="Quartz Flask"/>
      <Item name="Sulphur Flask"/>
      <Item name="Basalt Flask"/>

      <Item name="Diamond Flask"/>
    </GearBaseType>
    <GearBaseType name="Map">
      <!-- War for the Atlas Maps - [3.1.0, Current] -->
      <!-- Tier 1 -->
      <Item name="Beach Map"/>
      <Item name="Dungeon Map"/>
      <Item name="Graveyard Map"/>
      <Item name="Lookout Map"/>

      <!-- Tier 2 -->
      <Item name="Alleyways Map"/>
      <Item name="Arid Lake Map"/>
      <Item name="Desert Map"/>
      <Item name="Flooded Mine Map"/>
      <Item name="Marshes Map"/>
      <Item name="Pen Map"/>

      <!-- Tier 3 -->
      <Item name="Arcade Map"/>
      <Item name="Burial Chambers Map"/>
      <Item name="Cage Map"/>
      <Item name="Cells Map"/>
      <Item name="Excavation Map"/>
      <Item name="Iceberg Map"/>
      <Item name="Leyline Map"/>
      <Item name="Peninsula Map"/>
      <Item name="Port Map"/>
      <Item name="Springs Map"/>

      <!-- Tier 4 -->
      <Item name="Canyon Map"/>
      <Item name="Chateau Map"/>
      <Item name="City Square Map"/>
      <Item name="Courthouse Map"/>
      <Item name="Gorge Map"/>
      <Item name="Grotto Map"/>
      <Item name="Lighthouse Map"/>
      <Item name="Relic Chambers Map"/>
      <Item name="Strand Map"/>
      <Item name="Volcano Map"/>

      <!-- Tier 5 -->
      <Item name="Ancient City Map"/>
      <Item name="Barrows Map"/>
      <Item name="Channel Map"/>
      <Item name="Conservatory Map"/>
      <Item name="Harbinger Map"/>
      <Item name="Haunted Mansion Map"/>
      <Item name="Ivory Temple Map"/>
      <Item name="Maze Map"/>
      <Item name="Spider Lair Map"/>
      <Item name="Sulphur Vents Map"/>
      <Item name="Toxic Sewer Map"/>

      <!-- Tier 6 -->
      <Item name="Academy Map"/>
      <Item name="Ashen Wood Map"/>
      <Item name="Atoll Map"/>
      <Item name="Cemetery Map"/>
      <Item name="Fields Map"/>
      <Item name="Jungle Valley Map"/>
      <Item name="Mausoleum Map"/>
      <Item name="Phantasmagoria Map"/>
      <Item name="Thicket Map"/>
      <Item name="Underground Sea Map"/>
      <Item name="Wharf Map"/>

      <!-- Tier 7 -->
      <Item name="Arachnid Nest Map"/>
      <Item name="Bazaar Map"/>
      <Item name="Bone Crypt Map"/>
      <Item name="Coral Ruins Map"/>
      <Item name="Dunes Map"/>
      <Item name="Gardens Map"/>
      <Item name="Lava Chamber Map"/>
      <Item name="Ramparts Map"/>
      <Item name="Residence Map"/>
      <Item name="Tribunal Map"/>
      <Item name="Underground River Map"/>

      <!-- Tier 8 -->
      <Item name="Armoury Map"/>
      <Item name="Courtyard Map"/>
      <Item name="Geode Map"/>
      <Item name="Infested Valley Map"/>
      <Item name="Laboratory Map"/>
      <Item name="Mineral Pools Map"/>
      <Item name="Mud Geyser Map"/>
      <Item name="Overgrown Ruin Map"/>
      <Item name="Shore Map"/>
      <Item name="Tropical Island Map"/>
      <Item name="Vaal Pyramid Map"/>

      <!-- Tier 9 -->
      <Item name="Arena Map"/>
      <Item name="Estuary Map"/>
      <Item name="Moon Temple Map"/>
      <Item name="Museum Map"/>
      <Item name="Plateau Map"/>
      <Item name="Scriptorium Map"/>
      <Item name="Sepulchre Map"/>
      <Item name="Temple Map"/>
      <Item name="Tower Map"/>
      <Item name="Vault Map"/>
      <Item name="Waste Pool Map"/>

      <!-- Tier 10 -->
      <Item name="Arachnid Tomb Map"/>
      <Item name="Belfry Map"/>
      <Item name="Bog Map"/>
      <Item name="Cursed Crypt Map"/>
      <Item name="Harbinger Map"/>
      <Item name="Orchard Map"/>
      <Item name="Pier Map"/>
      <Item name="Precinct Map"/>
      <Item name="Shipyard Map"/>
      <Item name="Siege Map"/>
      <Item name="Wasteland Map"/>

      <!-- Tier 11 -->
      <Item name="Colonnade Map"/>
      <Item name="Coves Map"/>
      <Item name="Factory Map"/>
      <Item name="Lair Map"/>
      <Item name="Mesa Map"/>
      <Item name="Pit Map"/>
      <Item name="Primordial Pool Map"/>
      <Item name="Promenade Map"/>
      <Item name="Shaped Academy Map"/>
      <Item name="Spider Forest Map"/>
      <Item name="Waterways Map"/>

      <!-- Tier 12 -->
      <Item name="Castle Ruins Map"/>
      <Item name="Crystal Ore Map"/>
      <Item name="Defiled Cathedral Map"/>
      <Item name="Necropolis Map"/>
      <Item name="Overgrown Shrine Map"/>
      <Item name="Racecourse Map"/>
      <Item name="Summit Map"/>
      <Item name="Torture Chamber Map"/>
      <Item name="Villa Map"/>

      <!-- Tier 13 -->
      <Item name="Arsenal Map"/>
      <Item name="Caldera Map"/>
      <Item name="Core Map"/>
      <Item name="Desert Spring Map"/>
      <Item name="Ghetto Map"/>
      <Item name="Malformation Map"/>
      <Item name="Park Map"/>
      <Item name="Shrine Map"/>
      <Item name="Terrace Map"/>

      <!-- Tier 14 -->
      <Item name="Acid Lakes Map"/>
      <Item name="Colosseum Map"/>
      <Item name="Crimson Temple Map"/>
      <Item name="Dark Forest Map"/>
      <Item name="Dig Map"/>
      <Item name="Palace Map"/>
      <Item name="Plaza Map"/>

      <!-- Tier 15 -->
      <Item name="Basilica Map"/>
      <Item name="Carcass Map"/>
      <Item name="Harbinger Map"/>
      <Item name="Lava Lake Map"/>
      <Item name="Reef Map"/>
      <Item name="Sunken City Map"/>

      <!-- Tier 16 -->
      <Item name="Forge of the Phoenix Map"/>
      <Item name="Lair of the Hydra Map"/>
      <Item name="Maze of the Minotaur Map"/>
      <Item name="Pit of the Chimera Map"/>
      <Item name="Vaal Temple Map"/>

      <!-- Tier 17 -->
      <Item name="The Shaper's Realm"/>

      <!-- Atlas of Worlds Maps - [2.4.0, 3.1.0) -->
      <!-- Tier 1 -->
      <Item name="Arcade Map"/>
      <Item name="Crystal Ore Map"/>
      <Item name="Desert Map"/>
      <Item name="Jungle Valley Map"/>

      <!-- Tier 2 -->
      <Item name="Beach Map"/>
      <Item name="Desert Spring Map"/>
      <Item name="Factory Map"/>
      <Item name="Ghetto Map"/>

      <!-- Tier 3 -->
      <Item name="Arid Lake Map"/>
      <Item name="Channel Map"/>
      <Item name="Flooded Mine Map"/>
      <Item name="Grotto Map"/>
      <Item name="Marshes Map"/>
      <Item name="Toxic Sewer Map"/>
      <Item name="Vaal Pyramid Map"/>

      <!-- Tier 4 -->
      <Item name="Academy Map"/>
      <Item name="Acid Lakes Map"/>
      <Item name="Dungeon Map"/>
      <Item name="Graveyard Map"/>
      <Item name="Phantasmagoria Map"/>
      <Item name="Villa Map"/>
      <Item name="Waste Pool Map"/>

      <!-- Tier 5 -->
      <Item name="Burial Chambers Map"/>
      <Item name="Dunes Map"/>
      <Item name="Harbinger Map"/>
      <Item name="Mesa Map"/>
      <Item name="Peninsula Map"/>
      <Item name="Pit Map"/>
      <Item name="Primordial Pool Map"/>
      <Item name="Spider Lair Map"/>
      <Item name="Tower Map"/>

      <!-- Tier 6 -->
      <Item name="Ancient City Map"/>
      <Item name="Canyon Map"/>
      <Item name="Geode Map"/>
      <Item name="Racecourse Map"/>
      <Item name="Ramparts Map"/>
      <Item name="Shaped Arcade Map"/>
      <Item name="Shaped Crystal Ore Map"/>
      <Item name="Shaped Desert Map"/>
      <Item name="Shaped Jungle Valley Map"/>
      <Item name="Spider Forest Map"/>
      <Item name="Strand Map"/>
      <Item name="Thicket Map"/>
      <Item name="Wharf Map"/>

      <!-- Tier 7 -->
      <Item name="Arachnid Tomb Map"/>
      <Item name="Armoury Map"/>
      <Item name="Ashen Wood Map"/>
      <Item name="Bone Crypt Map"/>
      <Item name="Castle Ruins Map"/>
      <Item name="Cells Map"/>
      <Item name="Mud Geyser Map"/>
      <Item name="Shaped Beach Map"/>
      <Item name="Shaped Desert Spring Map"/>
      <Item name="Shaped Factory Map"/>
      <Item name="Shaped Ghetto Map"/>

      <!-- Tier 8 -->
      <Item name="Arachnid Nest Map"/>
      <Item name="Arena Map"/>
      <Item name="Atoll Map"/>
      <Item name="Barrows Map"/>
      <Item name="Bog Map"/>
      <Item name="Cemetery Map"/>
      <Item name="Pier Map"/>
      <Item name="Shaped Arid Lake Map"/>
      <Item name="Shaped Channel Map"/>
      <Item name="Shaped Flooded Mine Map"/>
      <Item name="Shaped Grotto Map"/>
      <Item name="Shaped Marshes Map"/>
      <Item name="Shaped Toxic Sewer Map"/>
      <Item name="Shaped Vaal Pyramid Map"/>
      <Item name="Shore Map"/>
      <Item name="Tropical Island Map"/>

      <!-- Tier 9 -->
      <Item name="Coves Map"/>
      <Item name="Cursed Crypt Map"/>
      <Item name="Museum Map"/>
      <Item name="Orchard Map"/>
      <Item name="Overgrown Shrine Map"/>
      <Item name="Promenade Map"/>
      <Item name="Reef Map"/>
      <Item name="Shaped Academy Map"/>
      <Item name="Shaped Acid Lakes Map"/>
      <Item name="Shaped Dungeon Map"/>
      <Item name="Shaped Graveyard Map"/>
      <Item name="Shaped Phantasmagoria Map"/>
      <Item name="Shaped Villa Map"/>
      <Item name="Shaped Waste Pool Map"/>
      <Item name="Temple Map"/>

      <!-- Tier 10 -->
      <Item name="Arsenal Map"/>
      <Item name="Colonnade Map"/>
      <Item name="Courtyard Map"/>
      <Item name="Harbinger Map"/>
      <Item name="Malformation Map"/>
      <Item name="Port Map"/>
      <Item name="Shaped Burial Chambers Map"/>
      <Item name="Shaped Dunes Map"/>
      <Item name="Shaped Mesa Map"/>
      <Item name="Shaped Peninsula Map"/>
      <Item name="Shaped Pit Map"/>
      <Item name="Shaped Primordial Pool Map"/>
      <Item name="Shaped Spider Lair Map"/>
      <Item name="Shaped Tower Map"/>
      <Item name="Terrace Map"/>
      <Item name="Underground River Map"/>

      <!-- Tier 11 -->
      <Item name="Bazaar Map"/>
      <Item name="Chateau Map"/>
      <Item name="Excavation Map"/>
      <Item name="Precinct Map"/>
      <Item name="Shaped Ancient City Map"/>
      <Item name="Shaped Canyon Map"/>
      <Item name="Shaped Geode Map"/>
      <Item name="Shaped Racecourse Map"/>
      <Item name="Shaped Ramparts Map"/>
      <Item name="Shaped Spider Forest Map"/>
      <Item name="Shaped Strand Map"/>
      <Item name="Shaped Thicket Map"/>
      <Item name="Shaped Wharf Map"/>
      <Item name="Torture Chamber Map"/>
      <Item name="Underground Sea Map"/>
      <Item name="Wasteland Map"/>

      <!-- Tier 12 -->
      <Item name="Estuary Map"/>
      <Item name="Ivory Temple Map"/>
      <Item name="Lava Chamber Map"/>
      <Item name="Necropolis Map"/>
      <Item name="Plateau Map"/>
      <Item name="Residence Map"/>
      <Item name="Shaped Arachnid Tomb Map"/>
      <Item name="Shaped Armoury Map"/>
      <Item name="Shaped Ashen Wood Map"/>
      <Item name="Shaped Bone Crypt Map"/>
      <Item name="Shaped Castle Ruins Map"/>
      <Item name="Shaped Cells Map"/>
      <Item name="Shaped Mud Geyser Map"/>
      <Item name="Shipyard Map"/>
      <Item name="Vault Map"/>

      <!-- Tier 13 -->
      <Item name="Gorge Map"/>
      <Item name="High Gardens Map"/>
      <Item name="Lair Map"/>
      <Item name="Leyline Map"/>
      <Item name="Lighthouse Map"/>
      <Item name="Plaza Map"/>
      <Item name="Scriptorium Map"/>
      <Item name="Shaped Arachnid Nest Map"/>
      <Item name="Shaped Arena Map"/>
      <Item name="Shaped Atoll Map"/>
      <Item name="Shaped Barrows Map"/>
      <Item name="Shaped Bog Map"/>
      <Item name="Shaped Cemetery Map"/>
      <Item name="Shaped Pier Map"/>
      <Item name="Shaped Shore Map"/>
      <Item name="Shaped Tropical Island Map"/>
      <Item name="Waterways Map"/>

      <!-- Tier 14 -->
      <Item name="Maze Map"/>
      <Item name="Mineral Pools Map"/>
      <Item name="Palace Map"/>
      <Item name="Shaped Coves Map"/>
      <Item name="Shaped Cursed Crypt Map"/>
      <Item name="Shaped Museum Map"/>
      <Item name="Shaped Orchard Map"/>
      <Item name="Shaped Overgrown Shrine Map"/>
      <Item name="Shaped Promenade Map"/>
      <Item name="Shaped Reef Map"/>
      <Item name="Shaped Temple Map"/>
      <Item name="Shrine Map"/>
      <Item name="Springs Map"/>
      <Item name="Volcano Map"/>

      <!-- Tier 15 -->
      <Item name="Caldera Map"/>
      <Item name="Colosseum Map"/>
      <Item name="Core Map"/>
      <Item name="Dark Forest Map"/>
      <Item name="Harbinger Map"/>
      <Item name="Overgrown Ruin Map"/>
      <Item name="Shaped Arsenal Map"/>
      <Item name="Shaped Colonnade Map"/>
      <Item name="Shaped Courtyard Map"/>
      <Item name="Shaped Malformation Map"/>
      <Item name="Shaped Port Map"/>
      <Item name="Shaped Terrace Map"/>
      <Item name="Shaped Underground River Map"/>

      <!-- Tier 16 -->
      <Item name="Forge of the Phoenix Map"/>
      <Item name="Lair of the Hydra Map"/>
      <Item name="Maze of the Minotaur Map"/>
      <Item name="Pit of the Chimera Map"/>
      <Item name="Vaal Temple Map"/>

      <!-- Tier 17 -->
      <Item name="The Shaper's Realm"/>

      <!-- The Awakening Maps - [2.0.0, 2.4.0) -->
      <!-- Tier 1 -->
      <Item name="Crypt Map"/>
      <Item name="Desert Map"/>
      <Item name="Dunes Map"/>
      <Item name="Dungeon Map"/>
      <Item name="Grotto Map"/>
      <Item name="Pit Map"/>
      <Item name="Tropical Island Map"/>

      <!-- Tier 2 -->
      <Item name="Arcade Map"/>
      <Item name="Atoll Map"/>
      <Item name="Cemetery Map"/>
      <Item name="Channel Map"/>
      <Item name="Sewer Map"/>
      <Item name="Thicket Map"/>
      <Item name="Wharf Map"/>

      <!-- Tier 3 -->
      <Item name="Ghetto Map"/>
      <Item name="Mud Geyser Map"/>
      <Item name="Museum Map"/>
      <Item name="Quarry Map"/>
      <Item name="Reef Map"/>
      <Item name="Spider Lair Map"/>
      <Item name="Vaal Pyramid Map"/>

      <!-- Tier 4 -->
      <Item name="Arena Map"/>
      <Item name="Crystal Ore Map"/>
      <Item name="Overgrown Shrine Map"/>
      <Item name="Phantasmagoria Map"/>
      <Item name="Promenade Map"/>
      <Item name="Shore Map"/>
      <Item name="Spider Forest Map"/>

      <!-- Tier 5 -->
      <Item name="Bog Map"/>
      <Item name="Coves Map"/>
      <Item name="Graveyard Map"/>
      <Item name="Pier Map"/>
      <Item name="Underground River Map"/>
      <Item name="Villa Map"/>

      <!-- Tier 6 -->
      <Item name="Arachnid Nest Map"/>
      <Item name="Ashen Wood Map"/>
      <Item name="Catacombs Map"/>
      <Item name="Colonnade Map"/>
      <Item name="Strand Map"/>
      <Item name="Temple Map"/>

      <!-- Tier 7 -->
      <Item name="Cavern Map"/>
      <Item name="Jungle Valley Map"/>
      <Item name="Terrace Map"/>
      <Item name="Torture Chamber Map"/>
      <Item name="Waste Pool Map"/>

      <!-- Tier 8 -->
      <Item name="Canyon Map"/>
      <Item name="Cells Map"/>
      <Item name="Dark Forest Map"/>
      <Item name="Orchard Map"/>
      <Item name="Peninsula Map"/>

      <!-- Tier 9 -->
      <Item name="Arid Lake Map"/>
      <Item name="Gorge Map"/>
      <Item name="Malformation Map"/>
      <Item name="Residence Map"/>
      <Item name="Underground Sea Map"/>

      <!-- Tier 10 -->
      <Item name="Bazaar Map"/>
      <Item name="Chateau Map"/>
      <Item name="Necropolis Map"/>
      <Item name="Plateau Map"/>
      <Item name="Volcano Map"/>

      <!-- Tier 11 -->
      <Item name="Academy Map"/>
      <Item name="Crematorium Map"/>
      <Item name="Precinct Map"/>
      <Item name="Springs Map"/>

      <!-- Tier 12 -->
      <Item name="Arsenal Map"/>
      <Item name="Overgrown Ruin Map"/>
      <Item name="Shipyard Map"/>

      <!-- Tier 13 -->
      <Item name="Courtyard Map"/>
      <Item name="Excavation Map"/>
      <Item name="Wasteland Map"/>
      <Item name="Waterways Map"/>

      <!-- Tier 14 -->
      <Item name="Maze Map"/>
      <Item name="Palace Map"/>
      <Item name="Plaza Map"/>
      <Item name="Shrine Map"/>
      <Item name="Vaal Temple Map"/>

      <!-- Tier 15 -->
      <Item name="Abyss Map"/>
      <Item name="Colosseum Map"/>
      <Item name="Core Map"/>

      <!-- Original Maps - (1.0.0, 2.0.0) -->
      <!-- Tier 1 -->
      <Item name="Arid Lake Map"/>
      <Item name="Crypt Map"/>
      <Item name="Dunes Map"/>
      <Item name="Dungeon Map"/>
      <Item name="Grotto Map"/>
      <Item name="Orchard Map"/>
      <Item name="Overgrown Ruin Map"/>
      <Item name="Tropical Island Map"/>

      <!-- Tier 2 -->
      <Item name="Arcade Map"/>
      <Item name="Arsenal Map"/>
      <Item name="Atoll Map"/>
      <Item name="Cemetery Map"/>
      <Item name="Sewer Map"/>
      <Item name="Thicket Map"/>
      <Item name="Wharf Map"/>

      <!-- Tier 3 -->
      <Item name="Ghetto Map"/>
      <Item name="Mud Geyser Map"/>
      <Item name="Museum Map"/>
      <Item name="Reef Map"/>
      <Item name="Spider Lair Map"/>
      <Item name="Springs Map"/>
      <Item name="Vaal Pyramid Map"/>

      <!-- Tier 4 -->
      <Item name="Catacombs Map"/>
      <Item name="Crystal Ore Map"/>
      <Item name="Overgrown Shrine Map"/>
      <Item name="Promenade Map"/>
      <Item name="Shore Map"/>
      <Item name="Spider Forest Map"/>

      <!-- Tier 5 -->
      <Item name="Bog Map"/>
      <Item name="Coves Map"/>
      <Item name="Graveyard Map"/>
      <Item name="Pier Map"/>
      <Item name="Underground River Map"/>
      <Item name="Villa Map"/>

      <!-- Tier 6 -->
      <Item name="Arachnid Nest Map"/>
      <Item name="Ashen Wood Map"/>
      <Item name="Colonnade Map"/>
      <Item name="Strand Map"/>
      <Item name="Temple Map"/>

      <!-- Tier 7 -->
      <Item name="Cavern Map"/>
      <Item name="Jungle Valley Map"/>
      <Item name="Terrace Map"/>
      <Item name="Torture Chamber Map"/>
      <Item name="Waste Pool Map"/>

      <!-- Tier 8 -->
      <Item name="Canyon Map"/>
      <Item name="Cells Map"/>
      <Item name="Dark Forest Map"/>
      <Item name="Peninsula Map"/>

      <!-- Tier 9 -->
      <Item name="Gorge Map"/>
      <Item name="Maze Map"/>
      <Item name="Residence Map"/>
      <Item name="Underground Sea Map"/>

      <!-- Tier 10 -->
      <Item name="Bazaar Map"/>
      <Item name="Necropolis Map"/>
      <Item name="Plateau Map"/>

      <!-- Tier 11 -->
      <Item name="Academy Map"/>
      <Item name="Crematorium Map"/>
      <Item name="Precinct Map"/>

      <!-- Tier 12 -->
      <Item name="Shipyard Map"/>
      <Item name="Shrine Map"/>

      <!-- Tier 13 -->
      <Item name="Courtyard Map"/>
      <Item name="Palace Map"/>

      <!-- Tier 14 -->
      <Item name="Vaal Temple Map"/>

      <!-- Other-->
      <Item name="The Apex of Sacrifice"/>
      <Item name="The Alluring Abyss"/>
      <Item name="The Pale Court"/>
    </GearBaseType>
    <GearBaseType name="Gloves">
      <Item name="Iron Gauntlets"/>
      <Item name="Plated Gauntlets"/>
      <Item name="Bronze Gauntlets"/>
      <Item name="Steel Gauntlets"/>
      <Item name="Antique Gauntlets"/>
      <Item name="Ancient Gauntlets"/>
      <Item name="Goliath Gauntlets"/>
      <Item name="Vaal Gauntlets"/>
      <Item name="Titan Gauntlets"/>
      <Item name="Spiked Gloves"/>

      <Item name="Rawhide Gloves"/>
      <Item name="Goathide Gloves"/>
      <Item name="Deerskin Gloves"/>
      <Item name="Nubuck Gloves"/>
      <Item name="Eelskin Gloves"/>
      <Item name="Sharkskin Gloves"/>
      <Item name="Shagreen Gloves"/>
      <Item name="Stealth Gloves"/>
      <Item name="Slink Gloves"/>

      <Item name="Wool Gloves"/>
      <Item name="Velvet Gloves"/>
      <Item name="Silk Gloves"/>
      <Item name="Embroidered Gloves"/>
      <Item name="Satin Gloves"/>
      <Item name="Samite Gloves"/>
      <Item name="Conjurer Gloves"/>
      <Item name="Arcanist Gloves"/>
      <Item name="Sorcerer Gloves"/>
      <Item name="Fingerless Silk Gloves"/>

      <Item name="Fishscale Gauntlets"/>
      <Item name="Ironscale Gauntlets"/>
      <Item name="Bronzescale Gauntlets"/>
      <Item name="Steelscale Gauntlets"/>
      <Item name="Serpentscale Gauntlets"/>
      <Item name="Wyrmscale Gauntlets"/>
      <Item name="hydrascale Gauntlets"/>
      <Item name="Dragonscale Gauntlets"/>

      <Item name="Chain Gloves"/>
      <Item name="Ringmail Gloves"/>
      <Item name="Mesh Gloves"/>
      <Item name="Riveted Gloves"/>
      <Item name="Zealot Gloves"/>
      <Item name="Soldier Gloves"/>
      <Item name="Legion Gloves"/>
      <Item name="Crusader Gloves"/>

      <Item name="Wrapped Mitts"/>
      <Item name="Strapped Mitts"/>
      <Item name="Clasped Mitts"/>
      <Item name="Trapper Mitts"/>
      <Item name="Ambush Mitts"/>
      <Item name="Carnal Mitts"/>
      <Item name="Assassin's Mitts"/>
      <Item name="Murder Mitts"/>
    </GearBaseType>
    <GearBaseType name="Boots">
      <Item name="Iron Greaves"/>
      <Item name="Steel Greaves"/>
      <Item name="Plated Greaves"/>
      <Item name="Reinforced Greaves"/>
      <Item name="Antique Greaves"/>
      <Item name="Ancient Greaves"/>
      <Item name="Goliath Greaves"/>
      <Item name="Vaal Greaves"/>
      <Item name="Titan Greaves"/>

      <Item name="Rawhide Boots"/>
      <Item name="Goathide Boots"/>
      <Item name="Deerskin Boots"/>
      <Item name="Nubuck Boots"/>
      <Item name="Eelskin Boots"/>
      <Item name="Sharkskin Boots"/>
      <Item name="Shagreen Boots"/>
      <Item name="Stealth Boots"/>
      <Item name="Slink Boots"/>

      <Item name="Wool Shoes"/>
      <Item name="Velvet Slippers"/>
      <Item name="Silk Slippers"/>
      <Item name="Scholar Boots"/>
      <Item name="Satin Slippers"/>
      <Item name="Samite Slippers"/>
      <Item name="Conjurer Boots"/>
      <Item name="Arcanist Slippers"/>
      <Item name="Sorcerer Boots"/>

      <Item name="Leatherscale Boots"/>
      <Item name="Ironscale Boots"/>
      <Item name="Bronzescale Boots"/>
      <Item name="Steelscale Boots"/>
      <Item name="Serpentscale Boots"/>
      <Item name="Wyrmscale Boots"/>
      <Item name="Hydrascale Boots"/>
      <Item name="Dragonscale Boots"/>

      <Item name="Chain Boots"/>
      <Item name="Ringmail Boots"/>
      <Item name="Mesh Boots"/>
      <Item name="Riveted Boots"/>
      <Item name="Zealot Boots"/>
      <Item name="Soldier Boots"/>
      <Item name="Legion Boots"/>
      <Item name="Crusader Boots"/>

      <Item name="Wrapped Boots"/>
      <Item name="Strapped Boots"/>
      <Item name="Clasped Boots"/>
      <Item name="Shackled Boots"/>
      <Item name="Trapper Boots"/>
      <Item name="Ambush Boots"/>
      <Item name="Carnal Boots"/>
      <Item name="Assassin's Boots"/>
      <Item name="Murder Boots"/>

      <!-- Armor and Evasion: Fire and Cold Resistances
           Armor and Energy Shield: Fire and Lightning Resistances
           Energy Shield and Evasion: Cold and Lightning Resistances -->
      <Item name="Two-Toned Boots"/>
    </GearBaseType>
    <GearBaseType name="Axe">
      <!-- One Hand Axes -->
      <Item name="Rusted Hatchet"/>
      <Item name="Jade Hatchet"/>
      <Item name="Boarding Axe"/>
      <Item name="Cleaver"/>
      <Item name="Broad Axe"/>
      <Item name="Arming Axe"/>
      <Item name="Decorative Axe"/>
      <Item name="Spectral Axe"/>
      <Item name="Etched Hatchet"/>
      <Item name="Jasper Axe"/>
      <Item name="Tomahawk"/>
      <Item name="Wrist Chopper"/>
      <Item name="War Axe"/>
      <Item name="Chest Splitter"/>
      <Item name="Ceremonial Axe"/>
      <Item name="Wraith Axe"/>
      <Item name="Engraved Hatchet"/>
      <Item name="Karui Axe"/>
      <Item name="Siege Axe"/>
      <Item name="Reaver Axe"/>
      <Item name="Butcher Axe"/>
      <Item name="Vaal Hatchet"/>
      <Item name="Royal Axe"/>
      <Item name="Infernal Axe"/>
      <Item name="Runic Hatchet"/>

      <!-- Two Hand Axes -->
      <Item name="Stone Axe"/>
      <Item name="Jade Chopper"/>
      <Item name="Woodsplitter"/>
      <Item name="Poleaxe"/>
      <Item name="Double Axe"/>
      <Item name="Gilded Axe"/>
      <Item name="Shadow Axe"/>
      <Item name="Dagger Axe"/>
      <Item name="Jasper Chopper"/>
      <Item name="Timber Axe"/>
      <Item name="Headsman Axe"/>
      <Item name="Labrys"/>
      <Item name="Noble Axe"/>
      <Item name="Abyssal Axe"/>
      <Item name="Karui Chopper"/>
      <Item name="Talon Axe"/>
      <Item name="Sundering Axe"/>
      <Item name="Ezomyte Axe"/>
      <Item name="Vaal Axe"/>
      <Item name="Despot Axe"/>
      <Item name="Void Axe"/>
      <Item name="Fleshripper"/>
    </GearBaseType>
    <GearBaseType name="Claw">
      <Item name="Nailed Fist"/>
      <Item name="Sharktooth Claw"/>
      <Item name="Awl"/>
      <Item name="Cat's Paw"/>
      <Item name="Blinder"/>
      <Item name="Timeworn Claw"/>
      <Item name="Sparkling Claw"/>
      <Item name="Fright Claw"/>
      <Item name="Double Claw"/>
      <Item name="Thresher Claw"/>
      <Item name="Gouger"/>
      <Item name="Tiger's Paw"/>
      <Item name="Gut Ripper"/>
      <Item name="Prehistoric Claw"/>
      <Item name="Noble Claw"/>
      <Item name="Eagle Claw"/>
      <Item name="Twin Claw"/>
      <Item name="Great White Claw"/>
      <Item name="Throat Stabber"/>
      <Item name="Hellion's Paw"/>
      <Item name="Eye Gouger"/>
      <Item name="Vaal Claw"/>
      <Item name="Imperial Claw"/>
      <Item name="Terror Claw"/>
      <Item name="Gemini Claw"/>
    </GearBaseType>
    <GearBaseType name="Bow">
      <Item name="Crude Bow"/>
      <Item name="Short Bow"/>
      <Item name="Long Bow"/>
      <Item name="Composite Bow"/>
      <Item name="Recurve Bow"/>
      <Item name="Bone Bow"/>
      <Item name="Royal Bow"/>
      <Item name="Death Bow"/>
      <Item name="Grove Bow"/>
      <Item name="Reflex Bow"/>
      <Item name="Decurve Bow"/>
      <Item name="Compound Bow"/>
      <Item name="Sniper Bow"/>
      <Item name="Ivory Bow"/>
      <Item name="Highborn Bow"/>
      <Item name="Decimation Bow"/>
      <Item name="Thicket Bow"/>
      <Item name="Steelwood Bow"/>
      <Item name="Citadel Bow"/>
      <Item name="Ranger Bow"/>
      <Item name="Assassin Bow"/>
      <Item name="Spine Bow"/>
      <Item name="Imperial Bow"/>
      <Item name="Harbinger Bow"/>
      <Item name="Maraketh Bow"/>
    </GearBaseType>
    <GearBaseType name="Dagger">
      <Item name="Glass Shank"/>
      <Item name="Skinning Knife"/>
      <Item name="Carving Knife"/>
      <Item name="Stiletto"/>
      <Item name="Boot Knife"/>
      <Item name="Copper Kris"/>
      <Item name="Skean"/>
      <Item name="Imp Dagger"/>
      <Item name="Flaying Knife"/>
      <Item name="Prong Dagger"/>
      <Item name="Butcher Knife"/>
      <Item name="Poignard"/>
      <Item name="Boot Blade"/>
      <Item name="Golden Kris"/>
      <Item name="Royal Skean"/>
      <Item name="Fiend Dagger"/>
      <Item name="Trisula"/>
      <Item name="Gutting Knife"/>
      <Item name="Slaughter Knife"/>
      <Item name="Ambusher"/>
      <Item name="Ezomyte Dagger"/>
      <Item name="Platinum Kris"/>
      <Item name="Imperial Skean"/>
      <Item name="Demon Dagger"/>
      <Item name="Sai"/>
    </GearBaseType>
    <GearBaseType name="Mace">
      <!-- One Hand Maces -->
      <Item name="Driftwood Club"/>
      <Item name="Tribal Club"/>
      <Item name="Spiked Club"/>
      <Item name="Stone Hammer"/>
      <Item name="War Hammer"/>
      <Item name="Bladed Mace"/>
      <Item name="Ceremonial Mace"/>
      <Item name="Dream Mace"/>
      <Item name="Wyrm Mace"/>
      <Item name="Petrified Club"/>
      <Item name="Barbed Club"/>
      <Item name="Rock Breaker"/>
      <Item name="Battle Hammer"/>
      <Item name="Flanged Mace"/>
      <Item name="Ornate Mace"/>
      <Item name="Phantom Mace"/>
      <Item name="Dragon Mace"/>
      <Item name="Ancestral Club"/>
      <Item name="Tenderizer"/>
      <Item name="Gavel"/>
      <Item name="Legion Hammer"/>
      <Item name="Pernarch"/>
      <Item name="Auric Mace"/>
      <Item name="Nightmare Mace"/>
      <Item name="Behemoth Mace"/>

      <!-- Two Hand Maces -->
      <Item name="Driftwood Maul"/>
      <Item name="Tribal Maul"/>
      <Item name="Mallet"/>
      <Item name="Sledgehammer"/>
      <Item name="Jagged Maul"/>
      <Item name="Brass Maul"/>
      <Item name="Fright Maul"/>
      <Item name="Morning Star"/>
      <Item name="Totemic Maul"/>
      <Item name="Great Mallet"/>
      <Item name="Steelhead"/>
      <Item name="Spiny Maul"/>
      <Item name="Plated Maul"/>
      <Item name="Dread Maul"/>
      <Item name="Solar Maul"/>
      <Item name="Karui Maul"/>
      <Item name="Colossus Mallet"/>
      <Item name="Piledriver"/>
      <Item name="Meatgrinder"/>
      <Item name="Imperial Maul"/>
      <Item name="Terror Maul"/>
      <Item name="Coronal Maul"/>
    </GearBaseType>
    <GearBaseType name="Quiver">
      <!-- Current Quivers -->
      <Item name="Two-Point Arrow Quiver"/>
      <Item name="Serrated Arrow Quiver"/>
      <Item name="Sharktooth Arrow Quiver"/>
      <Item name="Blunt Arrow Quiver"/>
      <Item name="Fire Arrow Quiver"/>
      <Item name="Broadhead Arrow Quiver"/>
      <Item name="Penetrating Arrow Quiver"/>
      <Item name="Spike-Point Arrow Quiver"/>

      <!-- Old Quivers -->
      <Item name="Rugged Quiver"/>
      <Item name="Cured Quiver"/>
      <Item name="Conductive Quiver"/>
      <Item name="Heavy Quiver"/>
      <Item name="Light Quiver"/>
    </GearBaseType>
    <GearBaseType name="Sceptre">
      <Item name="Driftwood Sceptre"/>
      <Item name="Darkwood Sceptre"/>
      <Item name="Bronze Sceptre"/>
      <Item name="Quartz Sceptre"/>
      <Item name="Iron Sceptre"/>
      <Item name="Ochre Sceptre"/>
      <Item name="Ritual Sceptre"/>
      <Item name="Shadow Sceptre"/>
      <Item name="Grinning Fetish"/>
      <Item name="Horned Sceptre"/>
      <Item name="Sekhem"/>
      <Item name="Crystal Sceptre"/>
      <Item name="Lead Sceptre"/>
      <Item name="Blood Sceptre"/>
      <Item name="Royal Sceptre"/>
      <Item name="Abyssal Sceptre"/>
      <Item name="Stag Sceptre"/>
      <Item name="Karui Sceptre"/>
      <Item name="Tyrant's Sekhem"/>
      <Item name="Opal Sceptre"/>
      <Item name="Platinum Sceptre"/>
      <Item name="Vaal Sceptre"/>
      <Item name="Carnal Sceptre"/>
      <Item name="Void Sceptre"/>
      <Item name="Sambar Sceptre"/>
    </GearBaseType>
    <GearBaseType name="Staff">
      <Item name="Gnarled Branch"/>
      <Item name="Primitive Staff"/>
      <Item name="Long Staff"/>
      <Item name="Iron Staff"/>
      <Item name="Coiled Staff"/>
      <Item name="Royal Staff"/>
      <Item name="Vile Staff"/>
      <Item name="Crescent Staff"/>
      <Item name="Woodful Staff"/>
      <Item name="Quarterstaff"/>
      <Item name="Military Staff"/>
      <Item name="Serpentine Staff"/>
      <Item name="Highborn Staff"/>
      <Item name="Foul Staff"/>
      <Item name="Moon Staff"/>
      <Item name="Primordial Staff"/>
      <Item name="Lathi"/>
      <Item name="Ezomyte Staff"/>
      <Item name="Maelström Staff"/>
      <Item name="Imperial Staff"/>
      <Item name="Judgement Staff"/>
      <Item name="Eclipse Staff"/>
    </GearBaseType>
    <GearBaseType name="Sword">
      <!-- One Hand Swords -->
      <Item name="Rusted Sword"/>
      <Item name="Copper Sword"/>
      <Item name="Sabre"/>
      <Item name="Broad Sword"/>
      <Item name="War Sword"/>
      <Item name="Ancient Sword"/>
      <Item name="Elegant Sword"/>
      <Item name="Dusk Blade"/>
      <Item name="Hook Sword"/>
      <Item name="Variscite Blade"/>
      <Item name="Cutlass"/>
      <Item name="Baselard"/>
      <Item name="Battle Sword"/>
      <Item name="Elder Sword"/>
      <Item name="Graceful Sword"/>
      <Item name="Twilight Blade"/>
      <Item name="Grappler"/>
      <Item name="Gemstone Sword"/>
      <Item name="Corsair Sword"/>
      <Item name="Gladius"/>
      <Item name="Legion Sword"/>
      <Item name="Vaal Blade"/>
      <Item name="Eternal Sword"/>
      <Item name="Midnight Blade"/>
      <Item name="Tiger Hook"/>

      <!-- Thrusting One Hand Swords -->
      <Item name="Rusted Spike"/>
      <Item name="Whalebone Rapier"/>
      <Item name="Battered Foil"/>
      <Item name="Basket Rapier"/>
      <Item name="Jagged Foil"/>
      <Item name="Antique Rapier"/>
      <Item name="Elegant Foil"/>
      <Item name="Thorn Rapier"/>
      <Item name="Smallsword"/>
      <Item name="Wyrmbone Rapier"/>
      <Item name="Burnished Foil"/>
      <Item name="Estoc"/>
      <Item name="Serrated Foil"/>
      <Item name="Primeval Rapier"/>
      <Item name="Fancy Foil"/>
      <Item name="Apex Rapier"/>
      <Item name="Courtesan Sword"/>
      <Item name="Dragonbone Rapier"/>
      <Item name="Tempered Foil"/>
      <Item name="Pecoraro"/>
      <Item name="Spiraled Foil"/>
      <Item name="Vaal Rapier"/>
      <Item name="Jewelled Foil"/>
      <Item name="Harpy Rapier"/>
      <Item name="Dragoon Sword"/>

      <!-- Two Hand Swords -->
      <Item name="Corroded Blade"/>
      <Item name="Longsword"/>
      <Item name="Bastard Sword"/>
      <Item name="Two-Handed Sword"/>
      <Item name="Etched Greatsword"/>
      <Item name="Ornate Sword"/>
      <Item name="Spectral Sword"/>
      <Item name="Curved Blade"/>
      <Item name="Butcher Sword"/>
      <Item name="Footman Sword"/>
      <Item name="Highland Blade"/>
      <Item name="Engraved Greatsword"/>
      <Item name="Tiger Sword"/>
      <Item name="Wraith Sword"/>
      <Item name="Lithe Blade"/>
      <Item name="Headman's Sword"/>
      <Item name="Reaver Sword"/>
      <Item name="Ezomyte Blade"/>
      <Item name="Vaal Greatsword"/>
      <Item name="Lion Sword"/>
      <Item name="Infernal Sword"/>
      <Item name="Exquisite Blade"/>
    </GearBaseType>
    <GearBaseType name="Shield">
      <Item name="Splintered Tower Shield"/>
      <Item name="Corroded Tower Shield"/>
      <Item name="Rawhide Tower Shield"/>
      <Item name="Cedar Tower Shield"/>
      <Item name="Copper Tower Shield"/>
      <Item name="Reinforced Tower Shield"/>
      <Item name="Painted Tower Shield"/>
      <Item name="Buckskin Tower Shield"/>
      <Item name="Mahogany Tower Shield"/>
      <Item name="Bronze Tower Shield"/>
      <Item name="Girded Tower Shield"/>
      <Item name="Crested Tower Shield"/>
      <Item name="Shagreen Tower Shield"/>
      <Item name="Ebony Tower Shield"/>
      <Item name="Ezomyte Tower Shield"/>
      <Item name="Colossal Tower Shield"/>
      <Item name="Pinnacle Tower Shield"/>

      <Item name="Goathide Buckler"/>
      <Item name="Pine Buckler"/>
      <Item name="Painted Buckler"/>
      <Item name="Hammered Buckler"/>
      <Item name="War Buckler"/>
      <Item name="Gilded Buckler"/>
      <Item name="Oak Buckler"/>
      <Item name="Enameled Buckler"/>
      <Item name="Corrugated Buckler"/>
      <Item name="Battle Buckler"/>
      <Item name="Golden Buckler"/>
      <Item name="Ironwood Buckler"/>
      <Item name="Lacquered Buckler"/>
      <Item name="Vaal Buckler"/>
      <Item name="Crusader Buckler"/>
      <Item name="Imperial Buckler"/>

      <Item name="Twig Spirit Shield"/>
      <Item name="Yew Spirit Shield"/>
      <Item name="Bone Spirit Shield"/>
      <Item name="Tarnished Spirit Shield"/>
      <Item name="Jingling Spirit Shield"/>
      <Item name="Brass Spirit Shield"/>
      <Item name="Walnut Spirit Shield"/>
      <Item name="Ivory Spirit Shield"/>
      <Item name="Ancient Spirit Shield"/>
      <Item name="Chiming Spirit Shield"/>
      <Item name="Thorium Spirit Shield"/>
      <Item name="Lacewood Spirit Shield"/>
      <Item name="Fossilized Spirit Shield"/>
      <Item name="Vaal Spirit Shield"/>
      <Item name="Harmonic Spirit Shield"/>
      <Item name="Titanium Spirit Shield"/>

      <Item name="Rotted Round Shield"/>
      <Item name="Fir Round Shield"/>
      <Item name="Studded Round Shield"/>
      <Item name="Scarlet Round Shield"/>
      <Item name="Splendid Round Shield"/>
      <Item name="Maple Round Shield"/>
      <Item name="Spiked Round Shield"/>
      <Item name="Crimson Round Shield"/>
      <Item name="Baroque Round Shield"/>
      <Item name="Teak Round Shield"/>
      <Item name="Spiny Round Shield"/>
      <Item name="Cardinal Round Shield"/>
      <Item name="Elegant Round Shield"/>

      <Item name="Plank Kite Shield"/>
      <Item name="Linden Kite Shield"/>
      <Item name="Reinforced Kite Shield"/>
      <Item name="Layered Kite Shield"/>
      <Item name="Ceremonial Kite Shield"/>
      <Item name="Etched Kite Shield"/>
      <Item name="Steel Kite Shield"/>
      <Item name="Laminated Kite Shield"/>
      <Item name="Angelic Kite Shield"/>
      <Item name="Branded Kite Shield"/>
      <Item name="Champion Kite Shield"/>
      <Item name="Mosaic Kite Shield"/>
      <Item name="Archon Kite Shield"/>

      <Item name="Spiked Bundle"/>
      <Item name="Driftwood Spiked Shield"/>
      <Item name="Alloyed Spike Shield"/>
      <Item name="Burnished Spike Shield"/>
      <Item name="Ornate Spiked Shield"/>
      <Item name="Redwood Spiked Shield"/>
      <Item name="Compound Spiked Shield"/>
      <Item name="Polished Spiked Shield"/>
      <Item name="Sovereign Spiked Shield"/>
      <Item name="Alder Spike Shield"/>
      <Item name="Ezomyte Spiked Shield"/>
      <Item name="Mirrored Spiked Shield"/>
      <Item name="Supreme Spiked Shield"/>
    </GearBaseType>
    <GearBaseType name="Wand">
      <Item name="Driftwood Wand"/>
      <Item name="Goat's Horn"/>
      <Item name="Carved Wand"/>
      <Item name="Quartz Wand"/>
      <Item name="Spiraled Wand"/>
      <Item name="Sage Wand"/>
      <Item name="Pagan Wand"/>
      <Item name="Faun's Horn"/>
      <Item name="Engraved Wand"/>
      <Item name="Crystal Wand"/>
      <Item name="Serpent Wand"/>
      <Item name="Omen Wand"/>
      <Item name="Heathen Wand"/>
      <Item name="Demon's Horn"/>
      <Item name="Imbued Wand"/>
      <Item name="Opal Wand"/>
      <Item name="Tornado Wand"/>
      <Item name="Prophecy Wand"/>
      <Item name="Profane Wand"/>
      <Item name="Convoking Wand"/>
    </GearBaseType>

    <!--Source data: https://pathofexile.gamepedia.com/Divination_card-->
    <!--Regex find: ^(.*)\r -->
    <!--Regex Replace: <Item name="$1"/> -->
    <GearBaseType name="DivinationCard">
      <Item name="A Dab of Ink"/>
      <Item name="A Mother's Parting Gift"/>
      <Item name="Abandoned Wealth"/>
      <Item name="Akil's Prophecy"/>
      <Item name="Alluring Bounty"/>
      <Item name="Alone in the Darkness"/>
      <Item name="Anarchy's Price"/>
      <Item name="Arrogance of the Vaal"/>
      <Item name="Assassin's Favour"/>
      <Item name="Atziri's Arsenal"/>
      <Item name="Audacity"/>
      <Item name="Azyran's Reward"/>
      <Item name="Beauty Through Death"/>
      <Item name="Birth of the Three"/>
      <Item name="Blessing of God"/>
      <Item name="Blind Venture"/>
      <Item name="Boon of Justice"/>
      <Item name="Boon of the First Ones"/>
      <Item name="Boundless Realms"/>
      <Item name="Bowyer's Dream"/>
      <Item name="Buried Treasure"/>
      <Item name="Burning Blood"/>
      <Item name="Call to the First Ones"/>
      <Item name="Cartographer's Delight"/>
      <Item name="Chaotic Disposition"/>
      <Item name="Coveted Possession"/>
      <Item name="Dark Dreams"/>
      <Item name="Dark Temptation"/>
      <Item name="Death"/>
      <Item name="Demigod's Wager"/>
      <Item name="Destined to Crumble"/>
      <Item name="Dialla's Subjugation"/>
      <Item name="Doedre's Madness"/>
      <Item name="Dying Anguish"/>
      <Item name="Earth Drinker"/>
      <Item name="Echoes of Love"/>
      <Item name="Emperor of Purity"/>
      <Item name="Emperor's Luck"/>
      <Item name="Forbidden Power"/>
      <Item name="Gemcutter's Promise"/>
      <Item name="Gift of the Gemling Queen"/>
      <Item name="Glimmer of Hope"/>
      <Item name="Grave Knowledge"/>
      <Item name="Harmony of Souls"/>
      <Item name="Her Mask"/>
      <Item name="Heterochromia"/>
      <Item name="Hope"/>
      <Item name="House of Mirrors"/>
      <Item name="Hubris"/>
      <Item name="Humility"/>
      <Item name="Hunter's Resolve"/>
      <Item name="Hunter's Reward"/>
      <Item name="Immortal Resolve"/>
      <Item name="Imperial Legacy"/>
      <Item name="Jack in the Box"/>
      <Item name="Lantador's Lost Love"/>
      <Item name="Last Hope"/>
      <Item name="Left to Fate"/>
      <Item name="Light and Truth"/>
      <Item name="Lingering Remnants"/>
      <Item name="Lost Worlds"/>
      <Item name="Loyalty"/>
      <Item name="Lucky Connections"/>
      <Item name="Lucky Deck"/>
      <Item name="Lysah's Respite"/>
      <Item name="Mawr Blaidd"/>
      <Item name="Merciless Armament"/>
      <Item name="Might is Right"/>
      <Item name="Mitts"/>
      <Item name="Monochrome"/>
      <Item name="More is Never Enough"/>
      <Item name="No Traces"/>
      <Item name="Nook's Crown"/>
      <Item name="Perfection"/>
      <Item name="Pride Before the Fall"/>
      <Item name="Pride of the First Ones"/>
      <Item name="Prosperity"/>
      <Item name="Rain of Chaos"/>
      <Item name="Rain Tempter"/>
      <Item name="Rats"/>
      <Item name="Rebirth"/>
      <Item name="Remembrance"/>
      <Item name="Sambodhi's Vow"/>
      <Item name="Scholar of the Seas"/>
      <Item name="Seven Years Bad Luck"/>
      <Item name="Shard of Fate"/>
      <Item name="Struck by Lightning"/>
      <Item name="The Admirer"/>
      <Item name="The Aesthete"/>
      <Item name="The Archmage's Right Hand"/>
      <Item name="The Arena Champion"/>
      <Item name="The Army of Blood"/>
      <Item name="The Artist"/>
      <Item name="The Avenger"/>
      <Item name="The Bargain"/>
      <Item name="The Battle Born"/>
      <Item name="The Beast"/>
      <Item name="The Betrayal"/>
      <Item name="The Blazing Fire"/>
      <Item name="The Body"/>
      <Item name="The Breach"/>
      <Item name="The Brittle Emperor"/>
      <Item name="The Cacophony"/>
      <Item name="The Calling"/>
      <Item name="The Carrion Crow"/>
      <Item name="The Cartographer"/>
      <Item name="The Cataclysm"/>
      <Item name="The Catalyst"/>
      <Item name="The Celestial Justicar"/>
      <Item name="The Celestial Stone"/>
      <Item name="The Chains that Bind"/>
      <Item name="The Coming Storm"/>
      <Item name="The Conduit"/>
      <Item name="The Cursed King"/>
      <Item name="The Damned"/>
      <Item name="The Dapper Prodigy"/>
      <Item name="The Dark Mage"/>
      <Item name="The Darkest Dream"/>
      <Item name="The Deal"/>
      <Item name="The Deceiver"/>
      <Item name="The Deep Ones"/>
      <Item name="The Demon"/>
      <Item name="The Demoness"/>
      <Item name="The Devastator"/>
      <Item name="The Doctor"/>
      <Item name="The Doppelganger"/>
      <Item name="The Dragon"/>
      <Item name="The Dragon's Heart"/>
      <Item name="The Dreamer"/>
      <Item name="The Dreamland"/>
      <Item name="The Drunken Aristocrat"/>
      <Item name="The Encroaching Darkness"/>
      <Item name="The Endless Darkness"/>
      <Item name="The Endurance"/>
      <Item name="The Enlightened"/>
      <Item name="The Ethereal"/>
      <Item name="The Explorer"/>
      <Item name="The Eye of Terror"/>
      <Item name="The Eye of the Dragon"/>
      <Item name="The Fathomless Depths"/>
      <Item name="The Feast"/>
      <Item name="The Fiend"/>
      <Item name="The Fletcher"/>
      <Item name="The Flora's Gift"/>
      <Item name="The Fool"/>
      <Item name="The Formless Sea"/>
      <Item name="The Forsaken"/>
      <Item name="The Fox"/>
      <Item name="The Gambler"/>
      <Item name="The Garish Power"/>
      <Item name="The Gemcutter"/>
      <Item name="The Gentleman"/>
      <Item name="The Gladiator"/>
      <Item name="The Golden Era"/>
      <Item name="The Hale Heart"/>
      <Item name="The Harvester"/>
      <Item name="The Hermit"/>
      <Item name="The Heroic Shot"/>
      <Item name="The Hoarder"/>
      <Item name="The Hunger"/>
      <Item name="The Immortal"/>
      <Item name="The Incantation"/>
      <Item name="The Innocent"/>
      <Item name="The Inoculated"/>
      <Item name="The Insatiable"/>
      <Item name="The Inventor"/>
      <Item name="The Iron Bard"/>
      <Item name="The Jester"/>
      <Item name="The Jeweller's Boon"/>
      <Item name="The Journey"/>
      <Item name="The King's Blade"/>
      <Item name="The King's Heart"/>
      <Item name="The Landing"/>
      <Item name="The Last One Standing"/>
      <Item name="The Lich"/>
      <Item name="The Life Thief"/>
      <Item name="The Lion"/>
      <Item name="The Lord in Black"/>
      <Item name="The Lord of Celebration"/>
      <Item name="The Lover"/>
      <Item name="The Lunaris Priestess"/>
      <Item name="The Mad King"/>
      <Item name="The Master Artisan"/>
      <Item name="The Master"/>
      <Item name="The Mayor"/>
      <Item name="The Mercenary"/>
      <Item name="The Messenger"/>
      <Item name="The Metalsmith's Gift"/>
      <Item name="The Mountain"/>
      <Item name="The Nurse"/>
      <Item name="The Oath"/>
      <Item name="The Obscured"/>
      <Item name="The Offering"/>
      <Item name="The Old Man"/>
      <Item name="The One With All"/>
      <Item name="The Opulent"/>
      <Item name="The Pack Leader"/>
      <Item name="The Pact"/>
      <Item name="The Penitent"/>
      <Item name="The Poet"/>
      <Item name="The Polymath"/>
      <Item name="The Porcupine"/>
      <Item name="The Price of Loyalty"/>
      <Item name="The Price of Protection"/>
      <Item name="The Primordial"/>
      <Item name="The Professor"/>
      <Item name="The Puzzle"/>
      <Item name="The Queen"/>
      <Item name="The Rabid Rhoa"/>
      <Item name="The Realm"/>
      <Item name="The Risk"/>
      <Item name="The Rite of Elements"/>
      <Item name="The Road to Power"/>
      <Item name="The Ruthless Ceinture"/>
      <Item name="The Sacrifice"/>
      <Item name="The Saint's Treasure"/>
      <Item name="The Samurai's Eye"/>
      <Item name="The Scarred Meadow"/>
      <Item name="The Scavenger"/>
      <Item name="The Scholar"/>
      <Item name="The Seeker"/>
      <Item name="The Sephirot"/>
      <Item name="The Side Quest"/>
      <Item name="The Sigil"/>
      <Item name="The Siren"/>
      <Item name="The Skeleton"/>
      <Item name="The Soul"/>
      <Item name="The Spark and the Flame"/>
      <Item name="The Spoiled Prince"/>
      <Item name="The Standoff"/>
      <Item name="The Stormcaller"/>
      <Item name="The Summoner"/>
      <Item name="The Sun"/>
      <Item name="The Surgeon"/>
      <Item name="The Surveyor"/>
      <Item name="The Survivalist"/>
      <Item name="The Sword King's Salute"/>
      <Item name="The Thaumaturgist"/>
      <Item name="The Throne"/>
      <Item name="The Tower"/>
      <Item name="The Traitor"/>
      <Item name="The Trial"/>
      <Item name="The Twilight Moon"/>
      <Item name="The Twins"/>
      <Item name="The Tyrant"/>
      <Item name="The Undaunted"/>
      <Item name="The Undisputed"/>
      <Item name="The Union"/>
      <Item name="The Valkyrie"/>
      <Item name="The Valley of Steel Boxes"/>
      <Item name="The Vast"/>
      <Item name="The Visionary"/>
      <Item name="The Void"/>
      <Item name="The Warden"/>
      <Item name="The Warlord"/>
      <Item name="The Watcher"/>
      <Item name="The Web"/>
      <Item name="The Wilted Rose"/>
      <Item name="The Wind"/>
      <Item name="The Witch"/>
      <Item name="The Wolf's Legacy"/>
      <Item name="The Wolf's Shadow"/>
      <Item name="The Wolf"/>
      <Item name="The Wolven King's Bite"/>
      <Item name="The Wolverine"/>
      <Item name="The World Eater"/>
      <Item name="The Wrath"/>
      <Item name="The Wretched"/>
      <Item name="Thirst for Knowledge"/>
      <Item name="Three Faces in the Dark"/>
      <Item name="Three Voices"/>
      <Item name="Thunderous Skies"/>
      <Item name="Time-Lost Relic"/>
      <Item name="Tranquillity"/>
      <Item name="Treasure Hunter"/>
      <Item name="Turn the Other Cheek"/>
      <Item name="Vanity"/>
      <Item name="Vile Power"/>
      <Item name="Vinia's Token"/>
      <Item name="Void of the Elements"/>
      <Item name="Volatile Power"/>
      <Item name="Wealth and Power"/>
    </GearBaseType>

    <GearBaseType name="Jewel">
      <Item name="Cobalt Jewel"/>
      <Item name="Crimson Jewel"/>
      <Item name="Viridian Jewel"/>
      <Item name="Prismatic Jewel"/>
    </GearBaseType>

    <GearBaseType name="AbyssJewel">
      <Item name="Ghastly Eye Jewel"/>
      <Item name="Hypnotic Eye Jewel"/>
      <Item name="Murderous Eye Jewel"/>
      <Item name="Searching Eye Jewel"/>
    </GearBaseType>

    <GearBaseType name="FishingRod">
      <Item name="Fishing Rod"/>
    </GearBaseType>
  </GearBaseTypes>

  <FatedUniques>
    <FatedUnique targetName="Reverberation Rod" fatedName="Amplification Rod" prophecyName="Power Magnified"
                 baseType="Spiraled Wand" />
    <FatedUnique targetName="Asenath's Mark" fatedName="Asenath's Chant" prophecyName="Song of the Sekhema"
                 baseType="Iron Circlet" />
    <FatedUnique targetName="Atziri's Mirror" fatedName="Atziri's Reflection" prophecyName="The Queen's Sacrifice"
                 baseType="Golden Buckler" />
    <FatedUnique targetName="Cameria's Maul" fatedName="Cameria's Avarice" prophecyName="Cold Greed"
                 baseType="Gavel" />
    <FatedUnique targetName="Chober Chaber" fatedName="Chaber Cairn" prophecyName="Faith Exhumed"
                 baseType="Great Mallet" />
    <FatedUnique targetName="Eclipse Solaris" fatedName="Corona Solaris" prophecyName="Blinding Light"
                 baseType="Crystal Wand" />
    <FatedUnique targetName="Craghead" fatedName="Cragfall" prophecyName="Heavy Blows"
                 baseType="Serrated Arrow Quiver" />
    <FatedUnique targetName="Icetomb" fatedName="Crystal Vault" prophecyName="End of the Light"
                 baseType="Latticed Ringmail" />
    <FatedUnique targetName="Death's Harp" fatedName="Death's Opus" prophecyName="The Bowstring's Music"
                 baseType="Death Bow" />
    <FatedUnique targetName="Deidbell" fatedName="Deidbellow" prophecyName="Dying Cry"
                 baseType="Gilded Sallet" />
    <FatedUnique targetName="Doedre's Tenure" fatedName="Doedre's Malevolence" prophecyName="The Malevolent Witch"
                 baseType="Velvet Gloves" />
    <FatedUnique targetName="Doomfletch" fatedName="Doomfletch's Prism" prophecyName="Ancient Doom"
                 baseType="Royal Bow" />
    <FatedUnique targetName="Redbeak" fatedName="Dreadbeak" prophecyName="The Dreaded Rhoa"
                 baseType="Rusted Sword" />
    <FatedUnique targetName="Dreadarc" fatedName="Dreadsurge" prophecyName="Burning Dread"
                 baseType="Cleaver" />
    <FatedUnique targetName="Dusktoe" fatedName="Duskblight" prophecyName="Agony at Dusk"
                 baseType="Ironscale Boots" />
    <FatedUnique targetName="Ezomyte Peak" fatedName="Ezomyte Hold" prophecyName="The Bloody Flowers Redux"
                 baseType="Iron Hat" />
    <FatedUnique targetName="Foxshade" fatedName="Fox's Fortune" prophecyName="Dark Instincts"
                 baseType="Wild Leather" />
    <FatedUnique targetName="Heatshiver" fatedName="Frostferno" prophecyName="A Vision of Ice and Fire"
                 baseType="Leather Hood" />
    <FatedUnique targetName="Geofri's Baptism" fatedName="Geofri's Devotion" prophecyName="Black Devotion"
                 baseType="Brass Maul" />
    <FatedUnique targetName="Geofri's Crest" fatedName="Geofri's Legacy" prophecyName="The Bishop's Legacy"
                 baseType="Great Crown" />
    <FatedUnique targetName="Wondertrap" fatedName="Greedtrap" prophecyName="Greed's Folly"
                 baseType="Velvet Slippers" />
    <FatedUnique targetName="Hrimsorrow" fatedName="Hrimburn" prophecyName="Fire and Ice"
                 baseType="Goathide Gloves" />
    <FatedUnique targetName="Hrimnor's Hymn" fatedName="Hrimnor's Dirge" prophecyName="Winter's Mournful Melodies"
                 baseType="Sledgehammer" />
    <FatedUnique targetName="Hyrri's Bite" fatedName="Hyrri's Demise" prophecyName="A Dishonourable Death"
                 baseType="Sharktooth Arrow Quiver" />
    <FatedUnique targetName="Kaltenhalt" fatedName="Kaltensoul" prophecyName="The Snuffed Flame"
                 baseType="Painted Buckler" />
    <FatedUnique targetName="Kaom's Sign" fatedName="Kaom's Way" prophecyName="The King's Path"
                 baseType="Coral Ring" />
    <FatedUnique targetName="Karui Ward" fatedName="Karui Charge" prophecyName="The Karui Rebellion"
                 baseType="Jade Amulet" />
    <FatedUnique targetName="Malachai's Simula" fatedName="Malachai's Awakening" prophecyName="The Nightmare Awakens"
                 baseType="Iron Mask" />
    <FatedUnique targetName="Crown of Thorns" fatedName="Martyr's Crown" prophecyName="Pleasure and Pain"
                 baseType="Vine Circlet" />
    <FatedUnique targetName="Fencoil" fatedName="Mirebough" prophecyName="Trapped in the Tower"
                 baseType="Gnarled Branch" />
    <FatedUnique targetName="Araku Tiki" fatedName="Ngamahu Tiki" prophecyName="A Forest of False Idols"
                 baseType="Coral Amulet" />
    <FatedUnique targetName="Quecholli" fatedName="Panquetzaliztli" prophecyName="The Fall of an Empire"
                 baseType="Jagged Maul" />
    <FatedUnique targetName="Queen's Decree" fatedName="Queen's Escape" prophecyName="The Misunderstood Queen"
                 baseType="Ornate Sword" />
    <FatedUnique targetName="Realmshaper" fatedName="Realm Ender" prophecyName="The Beginning and the End"
                 baseType="Iron Staff" />
    <FatedUnique targetName="Goredrill" fatedName="Sanguine Gambol" prophecyName="Crimson Hues"
                 baseType="Skinning Knife" />
    <FatedUnique targetName="Shavronne's Pace" fatedName="Shavronne's Gambit" prophecyName="The Flow of Energy"
                 baseType="Scholar Boots" />
    <FatedUnique targetName="Silverbranch" fatedName="Silverbough" prophecyName="The Silverwood"
                 baseType="Crude Bow" />
    <FatedUnique targetName="Sundance" fatedName="Sunspite" prophecyName="Sun's Punishment"
                 baseType="Clasped Boots" />
    <FatedUnique targetName="Limbsplit" fatedName="The Cauteriser" prophecyName="Severed Limbs"
                 baseType="Woodsplitter" />
    <FatedUnique targetName="The Dancing Dervish" fatedName="The Dancing Duo" prophecyName="Dance of Steel"
                 baseType="Reaver Sword" />
    <FatedUnique targetName="The Ignomon" fatedName="The Effigon" prophecyName="Blind Faith"
                 baseType="Gold Amulet" />
    <FatedUnique targetName="The Screaming Eagle" fatedName="The Gryphon" prophecyName="The Apex Predator"
                 baseType="Jade Hatchet" />
    <FatedUnique targetName="Iron Heart" fatedName="The Iron Fortress" prophecyName="Battle Hardened"
                 baseType="Crusader Plate" />
    <FatedUnique targetName="The Magnate" fatedName="The Nomad" prophecyName="The Great Leader of the North"
                 baseType="Studded Belt" />
    <FatedUnique targetName="Springleaf" fatedName="The Oak" prophecyName="Nature's Resilience"
                 baseType="Plank Kite Shield" />
    <FatedUnique targetName="Blackgleam" fatedName="The Signal Fire" prophecyName="Fire and Brimstone"
                 baseType="Fire Arrow Quiver" />
    <FatedUnique targetName="The Stormheart" fatedName="The Stormwall" prophecyName="The Storm Spire"
                 baseType="Royal Staff" />
    <FatedUnique targetName="The Magnate" fatedName="The Tactician" prophecyName="The Great Mind of the North"
                 baseType="Studded Belt" />
    <FatedUnique targetName="Storm Cloud" fatedName="The Tempest" prophecyName="The Servant's Heart"
                 baseType="Long Bow" />
    <FatedUnique targetName="Chalice of Horrors" fatedName="Thirst for Horrors" prophecyName="Mouth of Horrors"
                 baseType="War Buckler" />
    <FatedUnique targetName="Timeclasp" fatedName="Timetwist" prophecyName="A Rift in Time"
                 baseType="Moonstone Ring" />
    <FatedUnique targetName="Blackheart" fatedName="Voidheart" prophecyName="From The Void"
                 baseType="Iron Ring" />
    <FatedUnique targetName="Bramblejack" fatedName="Wall of Brambles" prophecyName="The King and the Brambles"
                 baseType="Plate Vest" />
    <FatedUnique targetName="Matua Tupuna" fatedName="Whakatutuki o Matua" prophecyName="The Mentor"
                 baseType="Tarnished Spirit Shield" />
    <FatedUnique targetName="Briskwrap" fatedName="Wildwrap" prophecyName="Last of the Wildmen"
                 baseType="Strapped Leather" />
    <FatedUnique targetName="Windscream" fatedName="Windshriek" prophecyName="Darktongue's Shriek"
                 baseType="Reinforced Greaves" />
    <FatedUnique targetName="Bloodboil" fatedName="Winterweave" prophecyName="Cold Blooded Fury"
                 baseType="Coral Ring" />
  </FatedUniques>
</Data>


================================================
FILE: POEApi.Model/Data.xsd
================================================
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Data"
    elementFormDefault="qualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="Data">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="GearBaseTypes" minOccurs="1" maxOccurs="1" />
        <xs:element ref="FatedUniques" minOccurs="0" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="GearBaseTypes">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="GearBaseType" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="GearBaseType">
    <xs:complexType>
      <xs:attribute name="name" use="required" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="Item">
    <xs:complexType>
      <xs:attribute name="id" use="optional" type="xs:string" />
      <xs:attribute name="name" use="required" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="FatedUniques">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="FatedUnique" minOccurs="1" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="FatedUnique">
    <xs:complexType>
      <xs:attribute name="targetName" use="optional" type="xs:string" />
      <xs:attribute name="fatedName" use="optional" type="xs:string" />
      <xs:attribute name="prophecyName" use="optional" type="xs:string" />
      <xs:attribute name="baseType" use="optional" type="xs:string" />
    </xs:complexType>
  </xs:element>
</xs:schema>


================================================
FILE: POEApi.Model/Decoration.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace POEApi.Model
{
    public class Decoration : Item
    {
        public Decoration(JSONProxy.Item item)
            : base(item)
        {

        }
    }
}


================================================
FILE: POEApi.Model/DivineVessel.cs
================================================
namespace POEApi.Model
{
    public class DivineVessel : Item
    {
        public DivineVessel(JSONProxy.Item item) : base(item)
        {
            
        }
    }
}

================================================
FILE: POEApi.Model/EquipedItems.cs
================================================
using POEApi.Infrastructure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace POEApi.Model
{
    public class EquipedItems
    {
        private Dictionary<string, PropertyInfo> properties;
        private Dictionary<string, string> propertyMapping;

        public Item Amulet { get; set; }
        public Item Belt { get; set; }
        public Item Helm { get; set; }
        public Item RingLeft { get; set; }
        public Item RingRight { get; set; }
        public Item Flask0 { get; set; }
        public Item Flask1 { get; set; }
        public Item Flask2 { get; set; }
        public Item Flask3 { get; set; }
        public Item Flask4 { get; set; }
        public Item Weapon { get; set; }
        public Item Offhand { get; set; }
        public Item AltWeapon { get; set; }
        public Item AltOffhand { get; set; }
        public Item Boots { get; set; }
        public Item Armour { get; set; }
        public Item Gloves { get; set; }

        public EquipedItems(IEnumerable<Item> items)
        {
            propertyMapping = new Dictionary<string, string>();
            properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).ToDictionary(p => p.Name);
            propertyMapping.Add("Ring", "RingLeft");
            propertyMapping.Add("Ring2", "RingRight");
            propertyMapping.Add("Weapon2", "AltWeapon");
            propertyMapping.Add("Offhand2", "AltOffhand");
            propertyMapping.Add("BodyArmour", "Armour");

            foreach (var item in items)
                if (item.InventoryId != "Map")
                    SetProperty(item);
        }   

        private void SetProperty(Item item)
        {
            try
            {
                string target = item.InventoryId;

                if (propertyMapping.ContainsKey(item.InventoryId))
                    target = propertyMapping[item.InventoryId];

                if (item.InventoryId == "Flask")
                    target = item.InventoryId + item.X;

                properties[target].SetValue(this, item, null);
            }
            catch (Exception ex)
            {
                Logger.Log("Error in EquipedItems.setProperty : " + ex);
                Logger.Log("Target property : " + item.InventoryId);

            }
        }

        public Dictionary<string, Item> GetItems()
        {
            return properties.Keys.ToDictionary(prop => prop, prop => (Item)properties[prop].GetValue(this, null));
        }
    }
}


================================================
FILE: POEApi.Model/Essence.cs
================================================
using System.Diagnostics;

namespace POEApi.Model
{
    [DebuggerDisplay("{TypeLine}")]
    public class Essence : Item
    {
        public EssenceType Type { get; }

        public Essence(JSONProxy.Item item) : base(item)
        {
            Type = ProxyMapper.GetEssenceType(item);
        }
    }
}

================================================
FILE: POEApi.Model/EssenceType.cs
================================================
namespace POEApi.Model
{
    public enum EssenceType
    {
        WhisperingGreed,
        WhisperingContempt,
        WhisperingHatred,
        WhisperingWoe,
        MutteringGreed,
        MutteringContempt,
        MutteringHatred,
        MutteringWoe,
        MutteringFear,
        MutteringAnger,
        MutteringTorment,
        MutteringSorrow,
        WeepingGreed,
        WeepingContempt,
        WeepingHatred,
        WeepingWoe,
        WeepingFear,
        WeepingAnger,
        WeepingTorment,
        WeepingSorrow,
        WeepingRage,
        WeepingSuffering,
        WeepingWrath,
        WeepingDoubt,
        WailingGreed,
        WailingContempt,
        WailingHatred,
        WailingWoe,
        WailingFear,
        WailingAnger,
        WailingTorment,
        WailingSorrow,
        WailingRage,
        WailingSuffering,
        WailingWrath,
        WailingDoubt,
        WailingLoathing,
        WailingZeal,
        WailingAnguish,
        WailingSpite,
        ScreamingGreed,
        ScreamingContempt,
        ScreamingHatred,
        ScreamingWoe,
        ScreamingFear,
        ScreamingAnger,
        ScreamingTorment,
        ScreamingSorrow,
        ScreamingRage,
        ScreamingSuffering,
        ScreamingWrath,
        ScreamingDoubt,
        ScreamingLoathing,
        ScreamingZeal,
        ScreamingAnguish,
        ScreamingSpite,
        ScreamingScorn,
        ScreamingEnvy,
        ScreamingMisery,
        ScreamingDread,
        ShriekingGreed,
        ShriekingContempt,
        ShriekingHatred,
        ShriekingWoe,
        ShriekingFear,
        ShriekingAnger,
        ShriekingTorment,
        ShriekingSorrow,
        ShriekingRage,
        ShriekingSuffering,
        ShriekingWrath,
        ShriekingDoubt,
        ShriekingLoathing,
        ShriekingZeal,
        ShriekingAnguish,
        ShriekingSpite,
        ShriekingScorn,
        ShriekingEnvy,
        ShriekingMisery,
        ShriekingDread,
        DeafeningGreed,
        DeafeningContempt,
        DeafeningHatred,
        DeafeningWoe,
        DeafeningFear,
        DeafeningAnger,
        DeafeningTorment,
        DeafeningSorrow,
        DeafeningRage,
        DeafeningSuffering,
        DeafeningWrath,
        DeafeningDoubt,
        DeafeningLoathing,
        DeafeningZeal,
        DeafeningAnguish,
        DeafeningSpite,
        DeafeningScorn,
        DeafeningEnvy,
        DeafeningMisery,
        DeafeningDread,
        Insanity,
        Horror,
        Delirium,
        Hysteria,
        RemnantOfCorruption,

        //Must always be last
        Unknown
    }
}

================================================
FILE: POEApi.Model/Events/AuthenticateEventArgs.cs
================================================
namespace POEApi.Model.Events
{
    public class AuthenticateEventArgs : POEEventArgs
    {
        public string Email { get; private set; }
        public string Realm { get; private set; }

        public AuthenticateEventArgs(string email, string realm,POEEventState state) :
            base(state)
        {
            Email = email;
            Realm = realm;
        }
    }
}


================================================
FILE: POEApi.Model/Events/ImageLoadedEventArgs.cs
================================================
using System;

namespace POEApi.Model.Events
{
    public class ImageLoadedEventArgs : POEEventArgs
    {
        public string URL { get; private set; }
        public ImageLoadedEventArgs(string url, POEEventState state) :
            base(state)
        {
            URL = url;
        }
    }
}


================================================
FILE: POEApi.Model/Events/POEEventArgs.cs
================================================
using System;

namespace POEApi.Model.Events
{
    public class POEEventArgs : EventArgs
    {
        public POEEventState State { get; private set; }
        public POEEventArgs(POEEventState state)
        {
            State = state;
        }
    }
}


================================================
FILE: POEApi.Model/Events/POEEventState.cs
================================================
namespace POEApi.Model.Events
{
    public enum POEEventState
    {
        BeforeEvent,
        AfterEvent
    }
}


================================================
FILE: POEApi.Model/Events/StashLoadedEventArgs.cs
================================================
namespace POEApi.Model.Events
{
    public class StashLoadedEventArgs : POEEventArgs
    {
        public int StashID { get; private set; }
        public int NumTabs { get; private set; }

        public StashLoadedEventArgs(int index, int numTabs, POEEventState state) :
            base(state)
        {
            StashID = index;
            NumTabs = numTabs;
        }
    }
}


================================================
FILE: POEApi.Model/FatedUniqueInfo.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace POEApi.Model
{
    public class FatedUniqueInfo
    {
        /// <summary>
        /// The name of the unique item that will be upgraded.
        /// </summary>
        public string TargetItemName { get; set; }
        /// <summary>
        /// The name of the item that is created from upgrading the target item.
        /// </summary>
        public string FatedItemName { get; set; }
        /// <summary>
        /// The name of the base type of the fated unique.
        /// </summary>
        public string BaseTypeName { get; set; }
        /// <summary>
        /// The name of the prophecy that upgrades the target item.
        /// </summary>
        public string ProphecyName { get; set; }
    }
}


================================================
FILE: POEApi.Model/Fossil.cs
================================================
namespace POEApi.Model
{
    public class Fossil : Item
    {
        public Fossil(JSONProxy.Item item) : base(item)
        {

        }
    }
}

================================================
FILE: POEApi.Model/FullBestiaryOrb.cs
================================================
namespace POEApi.Model
{
    public class FullBestiaryOrb : Item
    {
        public FullBestiaryOrb(JSONProxy.Item item) : base(item)
        {
            ItemType = ItemType.Currency;

            Genus = ProxyMapper.GetGenus(item.Properties);
            Group = ProxyMapper.GetGroup(item.Properties);
            Family = ProxyMapper.GetFamily(item.Properties);

            // TODO: This item's explicit mods are the mods of the contained beast.  These could be various types of
            // mods ("prefix mod", "suffix mod", "monster mod", etc.), but only the name is provided in the JSON for
            // the explicit mod.  Compile a list of each of these types of mods and map them here, so we can style the
            // text of the mods correctly in the item tooltip.  Right now all of the mods have the default blue
            // foreground text and no other styling, which is only correct for prefix/suffix mods.  Note that the
            // in-game detailed tooltip uses "monster mod" for different kinds of mods, including bestiary beast mods
            // (bold white text with red outline) and bloodline mods (magenta text RGB(210, 0, 220)).
        }

        // TODO: Compile the possible values of Genus, Group, and Family, and use enums instead of raw strings.
        public string Genus { get; }
        public string Group { get; }
        public string Family { get; }
    }
}


================================================
FILE: POEApi.Model/Gear.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using POEApi.Infrastructure;

namespace POEApi.Model
{
    public class Gear : Item
    {
        public List<Socket> Sockets { get; set; }
        public List<SocketableItem> SocketedItems { get; set; }
        public List<string> Implicitmods { get; set; }
        public List<Requirement> Requirements { get; set; }
        public GearType GearType { get; set; }
        public string BaseType { get; set; }

        public override bool IsGear => true;

        public Gear(JSONProxy.Item item) : base(item)
        {
            Sockets = GetSockets(item);
            Explicitmods = item.ExplicitMods;
            SocketedItems = GetSocketedItems(item);
            Implicitmods = item.ImplicitMods;
            Requirements = ProxyMapper.GetRequirements(item.Requirements);
            ItemType = Model.ItemType.Gear;
            GearType = GearTypeFactory.GetType(this);
            BaseType = GearTypeFactory.GetBaseType(this);
        }

        private List<Socket> GetSockets(JSONProxy.Item item) =>
            item.Sockets == null ? new List<Socket>() : item.Sockets.Select(proxy => new Socket(proxy)).ToList();

        private List<SocketableItem> GetSocketedItems(JSONProxy.Item item) =>
            item.SocketedItems == null ? new List<SocketableItem>() :
            item.SocketedItems.Select(proxy => (SocketableItem)ItemFactory.Get(proxy)).ToList();

        public bool IsLinked(int links)
        {
            return Sockets.GroupBy(s => s.Group).Any(g => g.Count() == links);
        }

        public int NumberOfSockets()
        {
            return Sockets.Count();
        }

        protected override Dictionary<string, string> DescriptiveNameComponents
        {
            get
            {
                // TODO: Reduce code duplication between this class's implementation and AbyssJewel's (they both
                // have a "Rarity" property that works the same way, but do not inherit it from the same parent class).
                var components = base.DescriptiveNameComponents;
                if (Rarity != Rarity.Normal)
                {
                    if (!Identified)
                    {
                        components["name"] = string.Format("Unidentified {0} {1}", Rarity, TypeLine);
                    }
                    else if (this.Rarity != Rarity.Magic)
                    {
                        string quotedName = string.IsNullOrWhiteSpace(Name) ? string.Empty :
                            string.Format("\"{0}\", ", Name);
                        components["name"] = string.Format("{0}{1} {2}", quotedName, Rarity, TypeLine);
                    }
                }

                return components;
            }
        }

        public override string PobData
        {
            get
            {
                try
                {
                    var pobData = new StringBuilder();
                    pobData.AppendLine(Name);
                    pobData.AppendLine(TypeLine);
                    pobData.AppendLine($"Unique ID: {Id}");

                    var itemType = GetSpecialItemType();
                    if (string.IsNullOrEmpty(itemType) == false)
                        pobData.AppendLine(itemType);

                    if (Corrupted)
                        pobData.AppendLine(nameof(Corrupted));

                    if (string.IsNullOrEmpty(Radius) == false)
                        pobData.AppendLine($"Radius: {Radius}");

                    pobData.AppendLine($"Quality: {Quality}");

                    if (Sockets != null && Sockets.Any())
                    {
                        //Links are denoted by "Groups"
                        List<int> groups = Sockets.Select(x => x.Group).Distinct().ToList();
                        string socketData = string.Empty;
                            
                        foreach (var group in groups)
                        {
                            socketData += string.Join("=", Sockets.Where(x => x.Group == group).Select(y => y.ToPobFormat()));
                            
                            //Don't append a space on the last character
                            if (groups.Last() != group)
                            {
                                //Space character denotes group demarcations
                                socketData += " ";
                            }
                        }

                        pobData.AppendLine($"Sockets: {socketData}");
                    }

                    if (Implicitmods != null && Implicitmods.Any())
                    {
                        pobData.AppendLine($"Implicits: {Implicitmods.Count}");
                        Implicitmods.ForEach(x => pobData.AppendLine($"{{crafted}}{x}"));
                    }

                    if (FracturedMods != null && FracturedMods.Any())
                    {
                        FracturedMods.ForEach(x => pobData.AppendLine($"{{fractured}}{x}"));
                    }

                    if (Explicitmods != null && Explicitmods.Any())
                    {
                        Explicitmods.ForEach(x=> pobData.AppendLine(x));
                    }

                    if (CraftedMods != null && CraftedMods.Any())
                    {
                        CraftedMods.ForEach(x => pobData.AppendLine($"{{crafted}}{x}"));
                    }

                    return pobData.ToString();
                }
                catch (Exception e)
                {
                    Logger.Log(e);
                    throw;
                }
            }
        }

        private string GetSpecialItemType()
        {
            if (Elder)
            {
                return "Elder Item";
            }

            if (Shaper)
            {
                return "Shaper Item";
            }

            if (Fractured)
            {
                return "Fractured Item";
            }

            if (Synthesised)
            {
                return "Synthesised Item";
            }

            return null;
        }
    }
}


================================================
FILE: POEApi.Model/GearType/GearType.cs
================================================
namespace POEApi.Model
{
    public enum GearType
    {
        Unknown,
        Ring,
        Amulet,
        Helmet,
        Chest,
        Belt,
        Gloves,
        Boots,
        Axe,
        Claw,
        Bow,
        Dagger,
        Mace,
        Quiver,
        Sceptre,
        Staff,
        Sword,
        Shield,
        Wand,
        FishingRod,
        Flask,
        Map,
        QuestItem,
        DivinationCard,
        Jewel,
        AbyssJewel,
        Talisman,
        Breachstone,
        Leaguestone
    }
}


================================================
FILE: POEApi.Model/GearType/GearTypeFactory.cs
================================================
using System.Collections.Generic;

namespace POEApi.Model
{
    internal class GearTypeFactory
    {
        private static List<GearTypeRunner> _runners = new List<GearTypeRunner>()
        {
            { new HelmetRunner() },
            { new RingRunner() },
            { new AmuletRunner() },
            { new TalismanRunner() },
            { new BeltRunner() },
            { new FlaskRunner() },
            { new GloveRunner() },
            { new BootRunner() },
            { new AxeRunner() },
            { new ClawRunner() },
            { new BowRunner() },
            { new DaggerRunner() },
            { new ShieldRunner() },
            { new MaceRunner() },
            { new QuiverRunner() },
            { new SceptreRunner() },
            { new StaffRunner() },
            { new SwordRunner() },
            { new WandRunner() },
            { new FishingRodRunner() },
            { new MapRunner() },
            { new DivinationCardRunner() },
            { new JewelRunner() },
            { new AbyssJewelRunner() },
            { new BreachstoneRunner() },
            { new LeaguestoneRunner() },
            { new ChestRunner() } //Must always be last!
        };

        public static GearType GetType(Gear item)
        {
            foreach (var runner in _runners)
                if (runner.IsCompatibleType(item))
                    return runner.Type;

            return GearType.Unknown;
        }

        public static string GetBaseType(Gear item)
        {
            foreach (var runner in _runners)
            {
                // If we know the GearType of the item, only query the GearTypeRunner for
                // that type.  If the GearType is unknown, query all of them.
                if (item.GearType == GearType.Unknown || item.GearType == runner.Type)
                {
                    string baseType = runner.GetBaseType(item);
                    if (!string.IsNullOrWhiteSpace(baseType))
                    {
                        return baseType;
                    }
                }
            }
            return null;
        }
    }
}


================================================
FILE: POEApi.Model/GearType/GearTypeRunner.cs
================================================
using System.Collections.Generic;
using System.Linq;

namespace POEApi.Model
{
    public abstract class GearTypeRunner
    {
        public abstract bool IsCompatibleType(Gear item);
        public abstract string GetBaseType(Gear item);
        public GearType Type { get; set; }

        public GearTypeRunner(GearType gearType)
        {
            Type = gearType;
        }
    }

    public class GearTypeRunnerBase : GearTypeRunner
    {
        protected List<string> _generalTypes;
        protected List<string> _compatibleTypes;
        protected List<string> _incompatibleTypes;

        public GearTypeRunnerBase(GearType gearType, IEnumerable<string> compatibleTypes)
            : base(gearType)
        {
            _generalTypes = new List<string>();
            _compatibleTypes = compatibleTypes.OrderByDescending(s => s.Length).ToList();
            _incompatibleTypes = new List<string>();
        }

        public override bool IsCompatibleType(Gear item)
        {
            if (_incompatibleTypes != null && _incompatibleTypes.Any(t => item.TypeLine.Contains(t)))
                return false;
            
            // First, check the general types, to see if there is an easy match.
            foreach (var type in _generalTypes)
                if (item.TypeLine.Contains(type))
                    return true;

            // Second, check all known types.
            foreach (var type in _compatibleTypes)
                if (item.TypeLine.Contains(type))
                    return true;

            return false;
        }

        public override string GetBaseType(Gear item)
        {
            if (_incompatibleTypes != null && _incompatibleTypes.Any(t => item.TypeLine.Contains(t)))
                return null;

            foreach (var type in _compatibleTypes)
                if (item.TypeLine.Contains(type))
                    return type;

            return null;
        }
    }

    public class RingRunner : GearTypeRunnerBase
    {
        public RingRunner()
            : base(GearType.Ring, Settings.GearBaseTypes[GearType.Ring])
        {
            _incompatibleTypes = new List<string>() { "Ringmail" };
        }

        public override bool IsCompatibleType(Gear item)
        {
            if (item.TypeLine.Contains("Ring") && !_incompatibleTypes.Any(t => item.TypeLine.Contains(t)))
                return true;

            return false;
        }
    }

    public class AmuletRunner : GearTypeRunnerBase
    {
        public AmuletRunner()
            : base(GearType.Amulet, Settings.GearBaseTypes[GearType.Amulet])
        {
            _generalTypes.Add("Amulet");
        }
    }

    public class TalismanRunner : GearTypeRunnerBase
    {
        public TalismanRunner()
            : base(GearType.Talisman, new List<string>() { "Talisman" })
        {
            _generalTypes.Add("Talisman");
        }
    }

    public class BreachstoneRunner : GearTypeRunnerBase
    {
        public BreachstoneRunner()
            : base(GearType.Breachstone, new List<string>()
            {
                "Chayula's Breachstone",
                "Xoph's Breachstone",
                "Esh's Breachstone",
                "Tul's Breachstone",
                "Uul-Netol's Breachstone"
            })
        {
            _generalTypes.Add("Breachstone");
        }
    }

    public class LeaguestoneRunner : GearTypeRunnerBase
    {
        public LeaguestoneRunner() : base(GearType.Leaguestone, new List<string>() { "Leaguestone" })
        {
            _generalTypes.Add("Leaguestone");
        }
    }

    public class HelmetRunner : GearTypeRunnerBase
    {
        public HelmetRunner()
            : base(GearType.Helmet, Settings.GearBaseTypes[GearType.Helmet])
        {
            _generalTypes.AddRange(new List<string>() { "Helmet", "Circlet", "Cap", "Mask", "Chain Coif", "Casque", "Hood", "Ringmail Coif", "Chainmail Coif", "Ring Coif", "Crown", "Burgonet", "Bascinet", "Pelt" });
        }
    }

    public class ChestRunner : GearTypeRunnerBase
    {
        public ChestRunner()
            : base(GearType.Chest, Settings.GearBaseTypes[GearType.Chest])
        {
            
        }
    }

    public class BeltRunner : GearTypeRunnerBase
    {
        public BeltRunner()
            : base(GearType.Belt, Settings.GearBaseTypes[GearType.Belt])
        {
            _generalTypes.Add("Belt");
            _generalTypes.Add("Sash");
            _generalTypes.Add("Stygian Vise");
        }
    }

    public class FlaskRunner : GearTypeRunnerBase
    {
        public FlaskRunner()
            : base(GearType.Flask, Settings.GearBaseTypes[GearType.Flask])
        {
            _generalTypes.Add("Flask");
        }
    }

    public class MapRunner : GearTypeRunnerBase
    {
        public MapRunner()
            : base(GearType.Map, Settings.GearBaseTypes[GearType.Map])
        {
            _generalTypes.Add("Map");
        }
    }

    public class DivinationCardRunner : GearTypeRunnerBase
    {
        public DivinationCardRunner()
            : base(GearType.DivinationCard, Settings.GearBaseTypes[GearType.DivinationCard])
        {
        }
    }

    public class JewelRunner : GearTypeRunnerBase
    {
        public JewelRunner()
            : base(GearType.Jewel, Settings.GearBaseTypes[GearType.Jewel])
        {
            _generalTypes.Add("Jewel");
            _incompatibleTypes = new List<string>() { "Jewelled Foil", "Eye Jewel" };
        }
    }

    internal class AbyssJewelRunner : GearTypeRunnerBase
    {
        public AbyssJewelRunner()
            : base(GearType.AbyssJewel, Settings.GearBaseTypes[GearType.AbyssJewel])
        {
            _generalTypes.Add("Eye Jewel");
            _incompatibleTypes = new List<string>() { "Jewelled Foil" };
        }
    }

    public class GloveRunner : GearTypeRunnerBase
    {
        public GloveRunner()
            : base(GearType.Gloves, Settings.GearBaseTypes[GearType.Gloves])
        {
            _generalTypes.Add("Glove");
            _generalTypes.Add("Mitts");
            _generalTypes.Add("Gauntlets");
        }
    }

    public class BootRunner : GearTypeRunnerBase
    {
        public BootRunner()
            : base(GearType.Boots, Settings.GearBaseTypes[GearType.Boots])
        {
            _generalTypes.Add("Greaves");
            _generalTypes.Add("Slippers");
            _generalTypes.Add("Boots");
            _generalTypes.Add("Shoes");
        }
    }

    public class AxeRunner : GearTypeRunnerBase
    {
        public AxeRunner()
            : base(GearType.Axe, Settings.GearBaseTypes[GearType.Axe])
        {
            _generalTypes.AddRange(new List<string>() { "Axe", "Chopper", "Splitter", "Labrys", "Tomahawk", "Hatchet", "Poleaxe", "Woodsplitter", "Cleaver" });
        }
    }

    public class ClawRunner : GearTypeRunnerBase
    {
        public ClawRunner()
            : base(GearType.Claw, Settings.GearBaseTypes[GearType.Claw])
        {
            _generalTypes.AddRange(new List<string>() { "Fist", "Awl", "Paw", "Blinder", "Ripper", "Stabber", "Claw", "Gouger" });
        }
    }

    public class BowRunner : GearTypeRunnerBase
    {
        public BowRunner()
            : base(GearType.Bow, Settings.GearBaseTypes[GearType.Bow])
        {
            _generalTypes.Add("Bow");
        }
    }

    public class DaggerRunner : GearTypeRunnerBase
    {
        public DaggerRunner()
            : base(GearType.Dagger, Settings.GearBaseTypes[GearType.Dagger])
        {
            _generalTypes.AddRange(new List<string>() { "Dagger", "Shank", "Knife", "Stiletto", "Skean", "Poignard", "Ambusher", "Boot Blade", "Kris", "Trisula" });
            _incompatibleTypes = new List<string>() { "Saint" };
        }
    }

    public class MaceRunner : GearTypeRunnerBase
    {
        public MaceRunner()
            : base(GearType.Mace, Settings.GearBaseTypes[GearType.Mace])
        {
            _generalTypes.AddRange(new List<string>() { "Club", "Tenderizer", "Mace", "Hammer", "Maul", "Mallet", "Breaker", "Gavel", "Pernarch", "Steelhead", "Piledriver", "Bladed Mace", "Morning Star" });
        }
    }

    public class QuiverRunner : GearTypeRunnerBase
    {
        public QuiverRunner()
            : base(GearType.Quiver, Settings.GearBaseTypes[GearType.Quiver])
        {
            _generalTypes.Add("Quiver");
        }
    }

    public class SceptreRunner : GearTypeRunnerBase
    {
        public SceptreRunner()
            : base(GearType.Sceptre, Settings.GearBaseTypes[GearType.Sceptre])
        {
            _generalTypes.Add("Sceptre");
            _generalTypes.Add("Fetish");
            _generalTypes.Add("Sekhem");
        }
    }

    public class StaffRunner : GearTypeRunnerBase
    {
        public StaffRunner()
            : base(GearType.Staff, Settings.GearBaseTypes[GearType.Staff])
        {
            _generalTypes.Add("Staff");
            _generalTypes.Add("Gnarled Branch");
            _generalTypes.Add("Quarterstaff");
            _generalTypes.Add("Lathi");
        }
    }

    public class SwordRunner : GearTypeRunnerBase
    {
        public SwordRunner()
            : base(GearType.Sword, Settings.GearBaseTypes[GearType.Sword])
        {
            _generalTypes.AddRange(new List<string>() { "Sword", "sword", "Sabre", "Dusk Blade", "Cutlass", "Baselard", "Gladius", "Variscite Blade", "Vaal Blade", "Midnight Blade", "Corroded Blade",
                   "Highland Blade", "Ezomyte Blade", "Rusted Spike", "Rapier", "Foil", "Pecoraro", "Estoc", "Twilight Blade", "Lithe Blade" });
        }
    }

    public class ShieldRunner : GearTypeRunnerBase
    {
        public ShieldRunner()
            : base(GearType.Shield, Settings.GearBaseTypes[GearType.Shield])
        {
            _generalTypes.Add("Shield");
            _generalTypes.Add("Spiked Bundle");
            _generalTypes.Add("Buckler");
        }
    }

    public class WandRunner : GearTypeRunnerBase
    {
        public WandRunner()
            : base(GearType.Wand, Settings.GearBaseTypes[GearType.Wand])
        {
            _generalTypes.Add("Wand");
            _generalTypes.Add("Horn");
        }
    }

    public class FishingRodRunner : GearTypeRunnerBase
    {
        public FishingRodRunner()
            : base(GearType.FishingRod, Settings.GearBaseTypes[GearType.FishingRod])
        {
        }
    }
}

================================================
FILE: POEApi.Model/GearType.cs
================================================
namespace POEApi.Model
{
    public enum GearType
    {
        Ring,
        Amulet,
        Helmet,
        Chest,
        Belt,
        Gloves,
        Boots,
        Weapon,
        Flask
    }
}


================================================
FILE: POEApi.Model/Gem.cs
================================================
using System.Linq;
using System.Diagnostics;

namespace POEApi.Model
{
    public class Gem : SocketableItem
    {
        public int Level { get; set; }

        /// <summary>
        /// Value between 0 and 1 to show how far a gem has progressed to the next level.
        /// </summary>
        public double LevelExperienceProgress { get; private set; }

        /// <summary>
        /// Numerator to show how much experience has been gained for this level
        /// </summary>
        public int ExperienceNumerator { get; set; }

        /// <summary>
        /// Denominator to show how much experience needs to be gained for the next level.
        /// </summary>
        public int ExperienceDenominator { get; set; }

        public Gem(JSONProxy.Item item) : base(item)
        {
            Properties = ProxyMapper.GetProperties(item.Properties);
            ItemType = ItemType.Gem;

            Level = getLevel();

            ExtractGemExperience(item);
        }

        private void ExtractGemExperience(JSONProxy.Item item)
        {
            var experienceProperties = item.AdditionalProperties?.FirstOrDefault(x => x.Name == "Experience");

            if (experienceProperties == null)
            {
                return;
            }

            LevelExperienceProgress = experienceProperties.Progress;
            var experienceValues = experienceProperties.Values[0].FirstOrDefault()?.ToString();

            if (experienceValues == null || !experienceValues.Contains("/"))
            {
                return;
            }

            var numeratorAndDenominator = experienceValues.Split('/');

            int temporaryInt; 
            if(int.TryParse(numeratorAndDenominator[0], out temporaryInt))
            {
                ExperienceNumerator = temporaryInt;
            }

            if(int.TryParse(numeratorAndDenominator[1], out temporaryInt))
            {
                ExperienceDenominator = temporaryInt;
            }

            HasExperience = true;
        }

        private int getLevel()
        {
            Property levelProperty = Properties.Find(p => p.Name == "Level");
            if (levelProperty == null || levelProperty.Values.Count == 0)
                return 1;

            var levelPropertyValue = levelProperty.Values[0].Item1;
            levelPropertyValue = levelPropertyValue.Split(' ')[0];  // fixes "20 (MAX)"

            int level;
            if (!int.TryParse(levelPropertyValue, out level))
                return 1;
            
            return level;
        }

        public bool HasExperience { get; set; }
    }
}


================================================
FILE: POEApi.Model/GemCategory.cs
================================================
namespace POEApi.Model
{
    public enum GemCategory
    {
        AoE,
        Attack,
        Aura,
        Bow,
        Cast,
        Chaining,
        Chaos,
        Cold,
        Curse,
        Duration,
        Fire,
        Lightning,
        Melee,
        Mine,
        Minion,
        Movement,
        Projectile,
        Spell,
        Totem,
        Trap,
        Support,
        Vaal
    }
}


================================================
FILE: POEApi.Model/GemHandler.cs
================================================
using System.Collections.Generic;

namespace POEApi.Model
{
    internal class GemHandler
    {
        public static SortedDictionary<string, int> GetGemDistribution(IEnumerable<Gem> gems)
        {
            SortedDictionary<string, int> gemTable = new SortedDictionary<string, int>();
            foreach (Gem gem in gems)
            {
                if (gemTable.ContainsKey(gem.TypeLine))
                    gemTable[gem.TypeLine]++;
                else
                    gemTable[gem.TypeLine] = 1;
            }

            return gemTable;
        }
    }
}


================================================
FILE: POEApi.Model/ImageComparer.cs
================================================
using System.Collections.Generic;

namespace POEApi.Model
{
    public class ImageComparer : IEqualityComparer<Item>
    {
        public bool Equals(Item x, Item y)
        {
            if (x.GetHashCode() == y.GetHashCode())
                return true;

            return x.IconURL.Equals(y.IconURL);
        }

        public int GetHashCode(Item obj)
        {
            return obj.IconURL.GetHashCode();
        }
    }
}


================================================
FILE: POEApi.Model/Incubator.cs
================================================
namespace POEApi.Model
{
    public class Incubator : Item
    {
        public Incubator(JSONProxy.Item item) : base(item)
        {
            
        }
    }
}

================================================
FILE: POEApi.Model/Interfaces/IBreachCurrency.cs
================================================
namespace POEApi.Model.Interfaces
{
    public interface IBreachCurrency
    {
        BreachType Type { get; set; }
    }
}

================================================
FILE: POEApi.Model/Interfaces/ILegion.cs
================================================
namespace POEApi.Model.Interfaces
{
    public interface ILegion
    {
        LegionFaction Faction { get; set; }
    }
}

================================================
FILE: POEApi.Model/Item.cs
================================================
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using POEApi.Model.JSONProxy;

namespace POEApi.Model
{
    public enum ItemType : int
    {
        UnSet,
        Gear,
        Gem,
        Jewel,
        Currency,
    }

    public enum Rarity : int
    {
        Normal,
        Magic,
        Rare,
        Unique,
        Relic
    }

    [DebuggerDisplay("{DebuggerDisplay,nq}")]
    public abstract class Item : ICloneable
    {
        public string Id { get; set; }
        public bool Verified { get; private set; }
        public bool Identified { get; private set; }
        // Only non-unique equipment, non-corrupted item, or maps that are not already mirrored can be mirrored.
        public bool IsMirrored { get; set; }
        public int W { get; private set; }
        public int H { get; private set; }
        public string IconURL { get; private set; }
        public string League { get; private set; }
        public string Name { get; private set; }
        public string TypeLine { get; private set; }
        public string DescrText { get; private set; }
        public int X { get; set; }
        public int Y { get; set; }
        public string InventoryId { get; set; }
        public string SecDescrText { get; private set; }
        public List<string> Explicitmods { get; set; }
        public ItemType ItemType { get; set; }
        public List<Property> Properties { get; set; }
        public bool IsQuality { get; private set; }
        public int Quality { get; private set; }
        public bool Corrupted { get; private set; }
        public List<string> Microtransactions { get; set; }
        public List<String> EnchantMods { get; set; }
        public List<string> FlavourText { get; set; }

        public List<string> CraftedMods { get; set; }
        public List<string> VeiledMods { get; set; }
        public List<string> FracturedMods { get; set; }

        public IncubatedDetails IncubatedDetails { get; set; }

        public int TradeX { get; set; }
        public int TradeY { get; set; }
        public string TradeInventoryId { get; set; }
        public string Character { get; set; }
        public int ItemLevel { get; set; }
        public bool Shaper { get; set; }
        public bool Elder { get; set; }
        public bool Synthesised { get; set; }
        public bool Fractured { get; set; }
        public int StackSize { get; set; }
        public int MaxStackSize { get; set; }
        public Rarity Rarity { get; set; }

        public string BackgroundUrl { get; private set; }

        public bool HasBackground => string.IsNullOrEmpty(BackgroundUrl) == false;

        public virtual bool IsGear => false;

        protected Item(JSONProxy.Item item)
        {
            Id = item.Id;
            Verified = item.Verified;
            Identified = item.Identified;
            IsMirrored = item.Duplicated;
            W = item.W;
            H = item.H;
            IconURL = getIconUrl(item.Icon);
            League = item.League;
            Name = item.Name;
            TypeLine = item.TypeLine;
            DescrText = item.DescrText;
            X = item.X;
            Y = item.Y;
            InventoryId = item.InventoryId;
            SecDescrText = item.SecDescrText;
            Explicitmods = item.ExplicitMods;
            ItemType = Model.ItemType.UnSet;
            CraftedMods = item.CraftedMods ?? new List<string>();
            VeiledMods = item.VeiledMods ?? new List<string>();
            EnchantMods = item.EnchantMods ?? new List<string>();
            FracturedMods = item.FracturedMods ?? new List<string>();
            FlavourText = item.FlavourText;
            ItemLevel = item.Ilvl;
            Shaper = item.Shaper;
            Elder = item.Elder;
            Synthesised = item.Synthesised;
            Fractured = item.Fractured;
            StackSize = item.StackSize;
            MaxStackSize = item.MaxStackSize;
            IncubatedDetails = item.IncubatedItem;

            if (item.Properties != null)
            {
                Properties = item.Properties.Select(p => new Property(p)).ToList();

                if (Properties.Any(p => p.Name == "Quality"))
                {
                    IsQuality = true;
                    Quality = ProxyMapper.GetQuality(item.Properties);
                }

                if (Properties.Any(p => p.Name == "Radius"))
                {
                    Radius = Properties.First(p => p.Name == "Radius").Values[0].Item1;
                }
            }

            Corrupted = item.Corrupted;
            Microtransactions = item.CosmeticMods ?? new List<string>();
            EnchantMods = item.EnchantMods ?? new List<string>();

            TradeX = X;
            TradeY = Y;
            TradeInventoryId = InventoryId;
            Character = string.Empty;
            Rarity = GetRarity(item);

            if (item.Elder || item.Shaper)
                BackgroundUrl = ItemBackgroundUrlBuilder.GetUrl(this);
        }

        public string Radius { get; set; }

        private string getIconUrl(string url)
        {
            Uri uri;
            if (Uri.TryCreate(url, UriKind.Absolute, out uri))
                return url;

            return "https://webcdn.pathofexile.com" + url;
        }

        private Rarity GetRarity(JSONProxy.Item item)
        {
            //Looks like isRelic is coming across the wire as an additional field but coincidentally 9 was the correct frame type here.
            if (item.FrameType == 9 || item.IsRelic)
                return Rarity.Relic;

            if (item.FrameType <= 3)
                return (Rarity)item.FrameType;

            return Rarity.Normal;
        }

        // TODO: Allow providing a format string in another function, so how an Item is presented can be customized.
        //       Something similar to (but not as extreme as) the DateTime class' ToString() method.
        // (See: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings)
        public virtual string DescriptiveName
        {
            get
            {
                return AssembleDescriptiveName();
            }
        }

        protected virtual Dictionary<string, string> DescriptiveNameComponents
        {
            get
            {
                // TODO: Use a persistent Dictionary that we do not need to recreate for every call.  But this would
                // require reworking the class in multiple places and in the (applicable) getters, so it would not be
                // trivial.  Could make the recreation "lazy", however, by just setting a "dirty" flag in the property
                // setters, and recreating the Dictionary if the data is dirty.
                return new Dictionary<string, string>
                {
                    { "quality", IsQuality ? string.Format("+{0}% Quality", Quality) : null },
                    { "iLevel",  ItemLevel > 0 ? string.Format("i{0}", ItemLevel) : null },
                    { "name", TypeLine },
                };
            }
        }

        protected virtual string AssembleDescriptiveName()
        {
            var parts = DescriptiveNameComponents;
            var orderedParts = new List<string>
            {
                parts["name"], parts["quality"], parts["iLevel"]
            }.Where(i => !string.IsNullOrWhiteSpace(i));
            return string.Join(", ", orderedParts);
        }

        public object Clone()
        {
            return MemberwiseClone();
        }

        private string DebuggerDisplay
        {
            get
            {
                return AssembleDescriptiveName();
            }
        }
        
        public virtual string PobData => String.Empty;
    }
}


================================================
FILE: POEApi.Model/ItemBackgroundUrlBuilder.cs
================================================
using POEApi.Infrastructure;
using System;
using System.Collections.Generic;

namespace POEApi.Model
{
    internal static class ItemBackgroundUrlBuilder
    {
        private const string ElderBackgroundUrl = "https://www.pathofexile.com/image/inventory/ElderBackground.png?w={0}&h={1}";
        private const string ShaperBackgroundUrl = "https://www.pathofexile.com/image/inventory/ShaperBackground.png?w={0}&h={1}&x={2}&y={3}";
        private const int GridSize = 47;

        public static string GetUrl(Item item)
        {
            try
            {
                if (item.Elder)
                    return string.Format(ElderBackgroundUrl, item.W, item.H);

                if (item.Shaper)
                    return string.Format(ShaperBackgroundUrl, item.W, item.H, item.X * GridSize, item.Y * GridSize);

                return string.Empty;
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                return string.Empty;
            }
        }
    }
}


================================================
FILE: POEApi.Model/ItemFactory.cs
================================================
using System;
using System.Linq;
using POEApi.Infrastructure;

namespace POEApi.Model
{
    internal class ItemFactory
    {
        public static Item Get(JSONProxy.Item item)
        {
            try
            {
                item.Name = FilterString(item.Name);
                item.TypeLine = FilterString(item.TypeLine);

                if (!string.IsNullOrWhiteSpace(item.ProphecyText))
                    return new Prophecy(item);

                if(item.AbyssJewel)
                    return new AbyssJewel(item);

                if (item.FrameType == 4)
                    return new Gem(item);

                if (item.DescrText != null && item.DescrText.ToLower() == "right click this item then left click a location on the ground to create the object.")
                    return new Decoration(item);

                if (item.DescrText != null && string.Equals(item.DescrText,
                    "Right-click to add this to your bestiary.", StringComparison.CurrentCultureIgnoreCase))
                    return new FullBestiaryOrb(item);

                if (item.TypeLine.Contains("Leaguestone"))
                    return new Leaguestone(item);

                if (item.FrameType == 5)
                    return GetCurrency(item);

                if (item.TypeLine.Contains("Map") && item.DescrText != null && item.DescrText.Contains("Travel to this Map"))
                    return new Map(item);

                if (item.FrameType == 7)
                    return new QuestItem(item);

                if (item.FrameType == 0)
                {
                    if (item.TypeLine == "Divine Vessel")
                        return new DivineVessel(item);

                    if(item.TypeLine == "Offering to the Goddess")
                        return new Offering(item);

                    if (item.TypeLine.Contains("Scarab")) //TODO: Refactor to use category property: "category": { "maps": ["fragment", "scarab"] }
                        return new Scarab(item);

                    if (item.TypeLine.Contains("Incubator")) //TODO: Refactor to use category property: "category": { "currency": ["incubator"] }
                        return new Incubator(item);
                }

                return new Gear(item);
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                var errorMessage = "ItemFactory unable to instantiate type : " + item.TypeLine;
                Logger.Log(errorMessage);

                try
                {
                    // Try to fall back and create an unknownItem based off of the provided item object.  This will
                    // hopefully preserve enough properties so Procurement does not crash elsewhere and the issue is
                    // more easily debuggable.
                    var baseItemShell = new UnknownItem(item, ex.ToString());
                    Logger.Log("Successfully instantiated base item shell for item.");
                    return baseItemShell;
                }
                catch (Exception innerException)
                {
                    Logger.Log(innerException);
                    errorMessage = "Additionally, failed to instantiate base item shell for type : " + item.TypeLine;
                    Logger.Log(errorMessage);

                    return new UnknownItem();
                }
            }
        }

        private static Item GetCurrency(JSONProxy.Item item)
        {
            var typeline = item.TypeLine.ToLower();

            if (typeline.Contains("essence") || typeline.Contains("remnant of"))
                return new Essence(item);

            if (typeline.Contains("splinter of"))
                return new BreachSplinter(item);

            if(typeline.Contains("splinter"))
                return new LegionSplinter(item);

            if(typeline.Contains("emblem"))
                return new LegionEmblem(item);

            if (typeline.Contains("blessing"))
                return new Breachstone(item);

            if (item.TypeLine.Contains("Sextant"))
                return new Sextant(item);

            if (item.TypeLine.Contains("Net"))
                return new Net(item);

            if (item.TypeLine.Contains("Fossil"))
                return new Fossil(item);

            if (item.TypeLine.Contains("Resonator"))
                return new Resonator(item);

            return new Currency(item);
        }


        private static string FilterString(string json)
        {
            var items = json.Split(new[] {">>"}, StringSplitOptions.None);

            if (items.Count() == 1)
                return json;

            return items[3];
        }
    }
}

================================================
FILE: POEApi.Model/ItemFilterConfig.json
================================================
{
  "fileConfig": [
    {
      "disabled": true,
      "inputLocation": "<ITEM FILTER DIRECTORY>\\NeverSink's filter - 1-REGULAR.filter",
      "outputLocation": "<ITEM FILTER DIRECTORY>\\[MOD] NeverSink's filter - 1-REGULAR.filter",
      "filterRuleConfig": [
        {
          "ruleType": "CHANCING_BASES",
          "name": "Chancing Bases",
          "searchString": "#   [1008] Chancing items\r\n#------------------------------------",
          "searchStringRelation": "AFTER",
          "additionalConfig": {
            "@type": "type.googleapis.com/POEApi.Model.Protobuf.ChancingBasesFilterRuleConfig",
            "otherCharactersStyling": "SECONDARY"
          }
        },
        {
          "ruleType": "MISSING_SAME_BASE_TYPE",
          "name": "Missing Same Base Types",
          "searchString": "#===============================================================================================================\r\n# [[0300]]",
          "additionalConfig": {
            "@type": "type.googleapis.com/POEApi.Model.Protobuf.MissingSameBaseTypesFilterRuleConfig"
          }
        }
      ]
    }
  ],
  "leagueConfig": [
    {
      "name": "SSF Legion",
      "buildConfig": [
        {
          "buildName": "Freezing Pulse",
          "chancingBase": [
            {
              "baseTypeName": "Occultist's Vestment",
              "uniqueItemName": "Shavronne's Wrappings",
              "quantityNeeded": 1
            },
            {
              "baseTypeName": "Prophecy Wand",
              "uniqueItemName": "Void Battery",
              "quantityNeeded": 2
            },
            {
              "baseTypeName": "Jade Amulet",
              "uniqueItemName": "The Pandemonius",
              "quantityNeeded": 1
            },
            {
              "baseTypeName": "Cobalt Jewel",
              "uniqueItemName": "First Snow",
              "quantityNeeded": 2,
              "quantityHeld": 1
            },
            {
              "baseTypeName": "Cobalt Jewel",
              "uniqueItemName": "Energy From Within",
              "quantityNeeded": 1
            }
          ]
        },
        {
          "buildName": "2h Freezing Cyclone",
          "chancingBase": [
            {
              "baseTypeName": "Goathide Gloves",
              "uniqueItemName": "Hrimsorrow",
              "quantityNeeded": 1
            },
            {
              "disabled": true,
              "baseTypeName": "Nightmare Bascinet",
              "uniqueItemName": "Devoto's Devotion",
              "quantityNeeded": 1
            }
          ]
        }
      ]
    }
  ]
}

================================================
FILE: POEApi.Model/ItemFilterConfig.proto
================================================
syntax = "proto3";

import "google/protobuf/any.proto";

package POEApi.Model.Protobuf;

message SemanticVersion {
  int32 major = 1;
  int32 minor = 2;
  int32 revision = 3;
}

message MissingSameBaseTypesFilterRuleConfig {
  bool disable_missing_normal_items = 1;
  bool disable_missing_magic_items = 2;
  bool disable_missing_rare_items = 3;
  bool disable_missing_normal_quality_items = 4;
  bool disable_missing_magic_quality_items = 5;
  bool disable_missing_rare_quality_items = 6;
}

message ChancingBasesFilterRuleConfig {
  enum ChancingBaseStyling {
	PRIMARY = 0;
	SECONDARY = 1;
	UNSTYLED = 2;
  }
  ChancingBaseStyling current_character_styling = 5;
  ChancingBaseStyling other_characters_styling = 6;
}

message FilterRuleConfig {
  bool disabled = 1;

  enum FilterRuleType {
    UNKNOWN = 0;
    MISSING_SAME_BASE_TYPE = 1;
    CHANCING_BASES = 2;
  }
  FilterRuleType rule_type = 2;
  string name = 3;

  string search_string = 4;

  enum SearchStringRelation {
	BEFORE = 0;
	AFTER = 1;
  }
  SearchStringRelation search_string_relation = 5;

  google.protobuf.Any additional_config = 6;
}

message FileConfig {
  bool disabled = 1;
  string input_location = 2;
  string output_location = 3;

  repeated FilterRuleConfig filter_rule_config = 4;
}

message ChancingBaseConfig {
  bool disabled = 1;
  string base_type_name = 2;
  string unique_item_name = 3;

  int32 quantity_held = 4;
  int32 quantity_needed = 5;

  string required_league = 6;
}

message BuildConfig {
  bool disabled = 1;
  string build_name = 2;
  string character_name = 3;
  repeated string stash_name = 4;

  repeated ChancingBaseConfig chancing_base = 5;
}

message LeagueConfig {
  bool disabled = 1;
  string name = 2;

  repeated BuildConfig build_config = 3;
}

message ItemFilterConfig {
  SemanticVersion version = 1;

  repeated FileConfig file_config = 2;
  repeated LeagueConfig league_config = 3;
}

================================================
FILE: POEApi.Model/ItemTradeInfo.cs
================================================
namespace POEApi.Model
{
    public class ItemTradeInfo
    {
        public string Buyout { get; set; }
        public string Price { get; set; }
        public string CurrentOffer { get; set; }
        public string Notes { get; set; }
        public bool IsEmpty
        {
            get { return string.IsNullOrEmpty(Buyout) && string.IsNullOrEmpty(Price) && string.IsNullOrEmpty(CurrentOffer) && string.IsNullOrEmpty(Notes); }
        }

        public ItemTradeInfo()
        { }

        public ItemTradeInfo(string buyout, string price, string currentOffer, string notes)
        {
            Buyout = buyout;
            Price = price;
            CurrentOffer = currentOffer;
            Notes = notes;
        }
    }
}


================================================
FILE: POEApi.Model/JSONProxy/Account.cs
================================================
namespace POEApi.Model.JSONProxy
{
    // Represents a pathofexile.com account; should match what is defined at
    // https://www.pathofexile.com/developer/docs/reference#profile .
    public class Account
    {
        public string uuid { get; set; }
        public string name { get; set; }
        public string realm { get; set; }

        // TODO: Add objects for guild and twitch information.
    }
}

================================================
FILE: POEApi.Model/JSONProxy/Stash.cs
================================================
using System.Collections.Generic;
using Newtonsoft.Json;

namespace POEApi.Model.JSONProxy
{
    public class Property
    {
        public string Name { get; set; }
        public List<object> Values { get; set; }
        public int DisplayMode { get; set; }
    }

    public class AdditionalProperty
    {
        public string Name { get; set; }
        public List<List<object>> Values { get; set; }
        public int DisplayMode { get; set; }
        public double Progress { get; set; }
    }


    public class Requirement
    {
        public string Name { get; set; }
        public List<object> Values { get; set; }
        public int DisplayMode { get; set; }
    }

    public class IncubatedDetails
    {
        public string Name { get; set; }
        public int Level { get; set; }
        public int Progress { get; set; }
        public int Total { get; set; }
    }

    public class Item
    {
        public string Id { get; set; }
        public bool Verified { get; set; }
        public int W { get; set; }
        public int H { get; set; }
        public string Icon { get; set; }
        public bool Support { get; set; }
        public string League { get; set; }
        public bool Shaper { get; set; }
        public bool Elder { get; set; }
        public bool Synthesised { get; set; }
        public bool Fractured { get; set; }
        public string Name { get; set; }
        public string TypeLine { get; set; }
        public bool Identified { get; set; }
        public bool Duplicated { get; set; }
        public List<Property> Properties { get; set; }
        public List<string> ExplicitMods { get; set; }
        public string DescrText { get; set; }
        public int FrameType { get; set; }
        public int X { get; set; }
        public int Y { get; set; }
        public string InventoryId { get; set; }
        public List<Item> SocketedItems { get; set; }
        public List<Socket> Sockets { get; set; }
        public List<AdditionalProperty> AdditionalProperties { get; set; }
        public string SecDescrText { get; set; }
        public List<string> ImplicitMods { get; set; }
        public List<string> FlavourText { get; set; }
        public List<Requirement> Requirements { get; set; }
        public List<Requirement> NextLevelRequirements { get; set; }
        public int Socket { get; set; }
        public int StackSize { get; set; }
        public int MaxStackSize { get; set; }
        public string Colour { get; set; }
        public bool Corrupted { get; set; }
        public bool AbyssJewel { get; set; }
        public IncubatedDetails IncubatedItem { get; set; }
        public List<string> CosmeticMods { get; set; }
        public List<string> CraftedMods { get; set; }
        public List<string> EnchantMods { get; set; }
        public List<string> VeiledMods { get; set; }
        public List<string> FracturedMods { get; set; }
        public int Ilvl { get; set; }
        public string ProphecyText { get; set; }
        public string ProphecyDiffText { get; set; }
        public bool IsRelic { get; set; }
    }

    public class Socket
    {
        public string Attr { get; set; }
        public int Group { get; set; }
    }

    [JsonObject(MemberSerialization.OptOut)]
    public class Stash
    {
        public int NumTabs { get; set; }
        public List<Item> Items { get; set; }
        public List<Tab> Tabs { get; set; }
    }

    [JsonObject(MemberSerialization.OptOut)]
    public class Inventory
    {
        public List<Item> Items { get; set; }
    }

    public class Colour
    {
        public int r { get; set; }
        public int g { get; set; }
        public int b { get; set; }
    }

    public class Tab
    {
        public string n { get; set; }
        public int i { get; set; }
        public Colour colour { get; set; }
        public string srcL { get; set; }
        public string srcC { get; set; }
        public string srcR { get; set; }
        public bool hidden { get; set; }
        public string type { get; set; }
        public bool selected { get; set; }
    }
}

================================================
FILE: POEApi.Model/Leaguestone.cs
================================================
using System.Diagnostics;

namespace POEApi.Model
{
    [DebuggerDisplay("{TypeLine} Charges: {Charges.ToString()}")]
    public class Leaguestone : Item
    {
        public ChargeInfo Charges { get; }

        public Leaguestone(JSONProxy.Item item) : base(item)
        {
            Charges = ProxyMapper.GetCharges(item.Properties);
        }
    }
}

================================================
FILE: POEApi.Model/LegionEmblem.cs
================================================
using POEApi.Model.Interfaces;

namespace POEApi.Model
{
    public class LegionEmblem : Item, ILegion
    {
        public LegionEmblem(JSONProxy.Item item) : base(item)
        {
            Faction = ProxyMapper.GetLegionFaction(item);
        }

        public LegionFaction Faction { get; set; }
    }
}

================================================
FILE: POEApi.Model/LegionFaction.cs
================================================
namespace POEApi.Model
{
    public enum LegionFaction
    {
        Unknown,

        EternalEmpire,
        Karui,
        Maraketh,
        Templar,
        Vaal
    }
}

================================================
FILE: POEApi.Model/LegionSplinter.cs
================================================
using POEApi.Model.Interfaces;

namespace POEApi.Model
{
    public class LegionSplinter : Item, ILegion
    {
        public LegionSplinter(JSONProxy.Item item) : base(item)
        {
            Faction = ProxyMapper.GetLegionFaction(item);
        }

        public LegionFaction Faction { get; set; }
    }
}

================================================
FILE: POEApi.Model/Map.cs
================================================
using System.Collections.Generic;

namespace POEApi.Model
{
    public class Map : Item
    {
        public int MapTier { get; private set; }
        public int MapQuantity { get; private set; }

        public Map(JSONProxy.Item item) : base(item)
        {
            ItemType = Model.ItemType.Gear;
            Properties = ProxyMapper.GetProperties(item.Properties);
            MapTier = int.Parse(Properties.Find(p => p.Name == "Map Tier").Values[0].Item1);
        }
    }
}


================================================
FILE: POEApi.Model/Net.cs
================================================
namespace POEApi.Model
{
    public class Net : Currency
    {
        public Net(JSONProxy.Item item) : base(item)
        {
            NetTier = ProxyMapper.GetNetTier(item.Properties);
        }

        // Note: Necromancy nets technically do not have a net tier, but uses the default value of 0 here.
        public int NetTier { get; }
    }
}

================================================
FILE: POEApi.Model/Offering.cs
================================================
namespace POEApi.Model
{
    public class Offering : Item
    {
        public Offering(JSONProxy.Item item) : base(item)
        {
            
        }
    }
}

================================================
FILE: POEApi.Model/OrbType.cs
================================================
namespace POEApi.Model
{
    public enum OrbType
    {
        Eternal,
        Imprint,
        Exalted,
        Divine,
        GemCutterPrism,
        Regal,
        Blessed,
        Chaos,
        Regret,
        Chisel,
        Alchemy,
        Scouring,
        Fusing,
        Chance,
        Chromatic,
        JewelersOrb,
        Alteration,
        Augmentation,
        Transmutation,
        PortalScroll,
        WisdomScroll,
        ArmourersScrap,
        GlassblowersBauble,
        BlacksmithsWhetstone,
        ScrollFragment,
        ScrollofWisdom,
        AlbinaRhoaFeather,
        AlchemyShard,
        Mirror,
        VaalOrb,
        PerandusCoin,
        SilverCoin,
        TransmutationShard,
        AlterationShard,
        AncientOrb,
        AncientShard,
        AnnulmentShard,
        BindingShard,
        ChaosShard,
        EngineersOrb,
        EngineersShard,
        ExaltedShard,
        HarbingersOrb,
        HarbingersShard,
        HorizonShard,
        MirrorShard,
        AnnulmentOrb,
        BindingOrb,
        HorizonOrb,
        RegalShard,
        BestiaryOrb,
        SimpleRopeNet,
        ReinforcedRopeNet,
        StrongRopeNet,
        SimpleIronNet,
        ReinforcedIronNet,
        StrongIronNet,
        SimpleSteelNet,
        ReinforcedSteelNet,
        StrongSteelNet,
        ThaumaturgicalNet,
        NecromancyNet,
        PantheonSoul,
        IncursionVial,

        //Must always be last
        Unknown
    }
}


================================================
FILE: POEApi.Model/POEApi.Model.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\Grpc.Tools.1.21.0\build\Grpc.Tools.props" Condition="Exists('..\packages\Grpc.Tools.1.21.0\build\Grpc.Tools.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{9841DD07-224D-4534-B9D1-F934C1D7BC73}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>POEApi.Model</RootNamespace>
    <AssemblyName>POEApi.Model</AssemblyName>
    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
    <NuGetPackageImportStamp>
    </NuGetPackageImportStamp>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>none</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="Google.Protobuf, Version=3.8.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
      <HintPath>..\packages\Google.Protobuf.3.8.0\lib\net45\Google.Protobuf.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
      <HintPath>..\packages\Grpc.Core.1.21.0\lib\net45\Grpc.Core.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="Grpc.Core.Api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
      <HintPath>..\packages\Grpc.Core.Api.1.21.0\lib\net45\Grpc.Core.Api.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="PresentationCore" />
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Interactive.Async, Version=3.2.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Interactive.Async.3.2.0\lib\net46\System.Interactive.Async.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AbyssJewel.cs" />
    <Compile Include="Breachstone.cs" />
    <Compile Include="BreachType.cs" />
    <Compile Include="CharacterStashBuilder.cs" />
    <Compile Include="ChargeInfo.cs" />
    <Compile Include="Colour.cs" />
    <Compile Include="Decoration.cs" />
    <Compile Include="DivineVessel.cs" />
    <Compile Include="Essence.cs" />
    <Compile Include="EssenceType.cs" />
    <Compile Include="FatedUniqueInfo.cs" />
    <Compile Include="Fossil.cs" />
    <Compile Include="FullBestiaryOrb.cs" />
    <Compile Include="GemHandler.cs" />
    <Compile Include="Interfaces\ILegion.cs" />
    <Compile Include="Incubator.cs" />
    <Compile Include="Interfaces\IBreachCurrency.cs" />
    <Compile Include="ItemBackgroundUrlBuilder.cs" />
    <Compile Include="ItemTradeInfo.cs" />
    <Compile Include="Character.cs" />
    <Compile Include="Currency.cs" />
    <Compile Include="CurrencyHandler.cs" />
    <Compile Include="CurrencyRatio.cs" />
    <Compile Include="EquipedItems.cs" />
    <Compile Include="Events\AuthenticateEventArgs.cs" />
    <Compile Include="Gear.cs" />
    <Compile Include="GearType\GearType.cs" />
    <Compile Include="GearType\GearTypeFactory.cs" />
    <Compile Include="GearType\GearTypeRunner.cs" />
    <Compile Include="Gem.cs" />
    <Compile Include="Events\ImageLoadedEventArgs.cs" />
    <Compile Include="GemCategory.cs" />
    <Compile Include="ImageComparer.cs" />
    <Compile Include="Item.cs" />
    <Compile Include="ItemFactory.cs" />
    <Compile Include="JSONProxy\Account.cs" />
    <Compile Include="JSONProxy\Stash.cs" />
    <Compile Include="Leaguestone.cs" />
    <Compile Include="LegionEmblem.cs" />
    <Compile Include="LegionSplinter.cs" />
    <Compile Include="LegionFaction.cs" />
    <Compile Include="Map.cs" />
    <Compile Include="Net.cs" />
    <Compile Include="Offering.cs" />
    <Compile Include="OrbType.cs" />
    <Compile Include="Events\POEEventArgs.cs" />
    <Compile Include="Events\POEEventState.cs" />
    <Compile Include="POEModel.cs" />
    <Compile Include="Property.cs" />
    <Compile Include="Prophecy.cs" />
    <Compile Include="ProxyMapper.cs" />
    <Compile Include="QuestItem.cs" />
    <Compile Include="Requirement.cs" />
    <Compile Include="Resonator.cs" />
    <Compile Include="Scarab.cs" />
    <Compile Include="Settings.cs" />
    <Compile Include="Sextant.cs" />
    <Compile Include="SextantType.cs" />
    <Compile Include="ShopSetting.cs" />
    <Compile Include="Socket.cs" />
    <Compile Include="SocketableItem.cs" />
    <Compile Include="BreachSplinter.cs" />
    <Compile Include="Stash.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Events\StashLoadedEventArgs.cs" />
    <Compile Include="Tab.cs" />
    <Compile Include="UnknownItem.cs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\POEApi.Infrastructure\POEApi.Infrastructure.csproj">
      <Project>{2F0E4301-694B-4A26-80D8-D57042DA9D6F}</Project>
      <Name>POEApi.Infrastructure</Name>
    </ProjectReference>
    <ProjectReference Include="..\POEApi.Transport\POEApi.Transport.csproj">
      <Project>{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}</Project>
      <Name>POEApi.Transport</Name>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup>
    <Content Include="Buyouts.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="Data.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Settings.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <SubType>Designer</SubType>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="Settings.xsd">
      <SubType>Designer</SubType>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="Data.xsd">
      <SubType>Designer</SubType>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <None Include="packages.config" />
    <Protobuf Include="ItemFilterConfig.proto" />
    <None Include="app.config" />
    <None Include="ItemFilterConfig.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\Grpc.Tools.1.21.0\build\Grpc.Tools.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Tools.1.21.0\build\Grpc.Tools.props'))" />
    <Error Condition="!Exists('..\packages\Grpc.Tools.1.21.0\build\Grpc.Tools.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Tools.1.21.0\build\Grpc.Tools.targets'))" />
    <Error Condition="!Exists('..\packages\Grpc.Core.1.21.0\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.1.21.0\build\net45\Grpc.Core.targets'))" />
  </Target>
  <Import Project="..\packages\Grpc.Tools.1.21.0\build\Grpc.Tools.targets" Condition="Exists('..\packages\Grpc.Tools.1.21.0\build\Grpc.Tools.targets')" />
  <Import Project="..\packages\Grpc.Core.1.21.0\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.21.0\build\net45\Grpc.Core.targets')" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: POEApi.Model/POEModel.cs
================================================
using System.Collections.Generic;
using System.IO;
using System.Linq;
using POEApi.Infrastructure;
using POEApi.Model.Events;
using POEApi.Transport;
using System.Security;
using System;
using System.Diagnostics;
using POEApi.Infrastructure.Events;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using POEApi.Model.JSONProxy;
using System.Threading.Tasks;

namespace POEApi.Model
{
    public class POEModel
    {
        public ITransport Transport;
        private CacheService cacheService;
        private bool downOnlyMyCharacters;


        public delegate void AuthenticateEventHandler(POEModel sender, AuthenticateEventArgs e);
        public event AuthenticateEventHandler Authenticating;

        public delegate void StashLoadEventHandler(POEModel sender, StashLoadedEventArgs e);
        public event StashLoadEventHandler StashLoading;

        public delegate void ImageLoadEventHandler(POEModel sender, ImageLoadedEventArgs e);
        public event ImageLoadEventHandler ImageLoading;

        public event ThottledEventHandler Throttled;

        public bool Offline { get; private set; }

        public POEModel()
        {
            downOnlyMyCharacters = bool.Parse(Settings.UserSettings["DownloadOnlyMyCharacters"]);
        }

        public bool Authenticate(string email, SecureString password, bool offline, string realm)
        {
            if (Transport != null)
                Transport.Throttled -= new ThottledEventHandler(instance_Throttled);

            Transport = GetTransport(email, offline);
            cacheService = new CacheService(email);
            Offline = offline;

            if (offline)
                return true;

            Transport.Throttled += new ThottledEventHandler(instance_Throttled);
            onAuthenticate(POEEventState.BeforeEvent, email,realm);

            Transport.Authenticate(email, password);

            onAuthenticate(POEEventState.AfterEvent, email, realm);

            return true;
        }

        public string GetAccountName(string realm)
        {
            try
            {
                if (Offline)
                {
                    return string.Empty;
                }

                var account = GetProperObjectFromTransport<Account>(Transport.GetAccountName(realm));

                if (string.IsNullOrEmpty(account?.name))
                {
                    throw new Exception("Null account name received from API");
                }

                return account.name;
            }
            catch (Exception ex)
            {
                Logger.Log(string.Format("Error downloading account name, exception details: {0}", ex.ToString()));

                throw new Exception(@"Error downloading account name, details logged to DebugInfo.log. Please open a ticket at https://github.com/Stickymaddness/Procurement/issues and include your DebugInfo.log");
            }
        }

        /// <summary>
        /// With a stream from the transport and a strong type, parse the json.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="networkData"></param>
        /// <returns></returns>
        private T GetProperObjectFromTransport<T>(Stream networkData)
        {
            using (var stream = networkData)
            using (var textReader = new StreamReader(stream))
            using (var jsonTextReader = new JsonTextReader(textReader))
            {
                try
                {
                    var serializer = new JsonSerializer {ContractResolver = new CamelCasePropertyNamesContractResolver()};

                    return (T) serializer.Deserialize(jsonTextReader, typeof (T));
                }
                catch
                {
                    MemoryStream ms = stream as MemoryStream;
                    ms.Seek(0, SeekOrigin.Begin);
                    var sr = new StreamReader(ms);
                    var text = sr.ReadToEnd();
                    Debug.Write(text);
                }
            }
            
            throw new ApplicationException("Unable to deserialize object");
        }

        void instance_Throttled(object sender, ThottledEventArgs e)
        {
            if (Throttled != null)
                Throttled(sender, e);
        }

        private ITransport GetTransport(string email, bool offline)
        {
            if (Settings.ProxySettings["Enabled"] != bool.TrueString)
                return new CachedTransport(email, new HttpTransport(email), offline);

            return new CachedTransport(email, new HttpTransport(email, Settings.ProxySettings["Username"], Settings.ProxySettings["Password"], Settings.ProxySettings["Domain"]), offline);
        }

        public void ForceRefresh()
        {
            cacheService.Clear();
        }

        public Stash GetStash(int index, string league, string accountName, string realm, bool forceRefresh = false)
        {
            JSONProxy.Stash proxy = null;

            onStashLoaded(POEEventState.BeforeEvent, index, -1);

            using (var stream = Transport.GetStash(index, league, accountName, realm, forceRefresh))
            {
                try
                {
                    if (stream == Stream.Null)
                    {
                        return new Stash(null);
                    }

                    proxy = GetProperObjectFromTransport<JSONProxy.Stash>(stream);
                    if (proxy == null)
                        LogNullStash(stream, "Proxy was null");
                }
                catch (Exception ex)
                {
                    Logger.Log(ex);
                    LogNullStash(stream, "JSON Serialization Failed");
                }
            }

            onStashLoaded(POEEventState.AfterEvent, index, proxy.NumTabs);

            return new Stash(proxy);
        }

        private void LogNullStash(Stream stream, string errorPrefix)
        {
            try
            {
                MemoryStream ms = stream as MemoryStream;
                ms.Seek(0, SeekOrigin.Begin);
                Logger.Log(errorPrefix + ": base64 bytes:");
                Logger.Log(Convert.ToBase64String(ms.ToArray()));
                Logger.Log("END");
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
            }

            throw new Exception(@"Downloading stash, details logged to DebugInfo.log, please open a ticket at https://github.com/Stickymaddness/Procurement/issues and include your DebugInfo.log");
        }

        public Stash GetStash(string league, string accountName, string realm)
        {
            try
            {
                var myTabs = Settings.Lists["MyTabs"];
                bool onlyMyTabs = myTabs.Count != 0;

                Stash stash = GetStash(0, league, accountName, realm);

                var firstTab = stash.Tabs.FirstOrDefault();
                if (firstTab != null && firstTab.Hidden)
                    stash.ClearItems();

                List<Tab> skippedTabs = new List<Tab>();

                if (!onlyMyTabs)
                    return GetAllTabs(league, accountName, stash, realm);

                int tabCount = 0;

                for (int i = 1; i < stash.NumberOfTabs; i++)
                {
                    if (myTabs.Contains(stash.Tabs[i].Name))
                    {
                        stash.Add(GetStash(i, league, accountName, realm));
                        ++tabCount;
                    }
                    else
                        skippedTabs.Add(stash.Tabs[i]);
                }

                foreach (var tab in skippedTabs)
                    stash.Tabs.Remove(tab);

                stash.NumberOfTabs = tabCount + 1;

                return stash;
            }
            catch (Exception ex)
            {
                Logger.Log(string.Format("Error downloading stash for {0}, exception details: {1}", league, ex.ToString()));
                throw new Exception(@"Downloading stash for " + league + ", details logged to DebugInfo.log, please open a ticket at https://github.com/Stickymaddness/Procurement/issues and include your DebugInfo.log");
            }
        }

        private Stash GetAllTabs(string league, string accountName, Stash stash, string realm)
        {
            List<Tab> hiddenTabs = new List<Tab>();

            for (int i = 1; i < stash.NumberOfTabs; i++)
            {
                if (!stash.Tabs[i].Hidden)
                {
                    stash.Add(GetStash(i, league, accountName, realm));
                }
                else
                {
                    hiddenTabs.Add(stash.Tabs[i]);
                }
            }

            var firstTab = stash.Tabs.FirstOrDefault();
            if (firstTab != null && firstTab.Hidden)
            {
                stash.Tabs.Remove(stash.Tabs[0]);
                --stash.NumberOfTabs;
            }

            foreach (var tab in hiddenTabs)
            {
                stash.Tabs.Remove(tab);
                --stash.NumberOfTabs;
            }

            return stash;
        }

        public List<Character> GetCharacters(string realm)
        {
            return GetProperObjectFromTransport<List<Character>>(Transport.GetCharacters(realm));
        }

        public List<Item> GetInventory(string characterName, bool forceRefresh, string accountName, string realm)
        {
            try
            {
                if (downOnlyMyCharacters && !Settings.Lists["MyCharacters"].Contains(characterName))
                    return new List<Item>();

                Inventory item  = GetProperObjectFromTransport<Inventory>(Transport.GetInventory(characterName, forceRefresh, accountName, realm));

                if (item?.Items == null)
                    return new List<Item>();

                return item.Items.Select(i => ItemFactory.Get(i)).ToList();
            }
            catch (Exception sex)
            {
                Logger.Log(string.Format("Error reading character data for character '{0}', Exception info: ", characterName, sex.ToString()));
                throw new Exception(string.Format("Error reading character data for {0}, if you are in offline mode you will need to login and update. If you received this error while logging in, the authenticated session may have expired or bad data has been returned by GGG or a network issue may have occurred - Please try again.", characterName));
            }
        }

        public void GetImages(IEnumerable<Item> items)
        {
            foreach (var item in items.Distinct(new ImageComparer()))
                GetImageWithEvents(item);

            LoadShaperElderImages(items);
        }

        private void LoadShaperElderImages(IEnumerable<Item> items)
        {
            IEnumerable<Item> elderShaperItems = items.Where(i => i.Shaper || i.Elder);

            foreach (var item in elderShaperItems)
            {
                var prefix = item.Shaper ? "Shaper" : "Elder";

                onImageLoaded(POEEventState.BeforeEvent, $"{prefix} {item.Name}");
                Transport.GetImage(item.BackgroundUrl);
                onImageLoaded(POEEventState.AfterEvent, $"{prefix} {item.Name}");
            }
        }

        private void GetImageWithEvents(Item item)
        {
            try
            {
                GetImageWithEvents(GetItemName(item), item.IconURL);
            }
            catch (Exception ex)
            {
                Logger.Log(string.Format("Error downloading image for : {0}, exception details: {1}", item.IconURL, ex.ToString()));
                throw;
            }
        }

        private void GetImageWithEvents(string name, string url)
        {
            onImageLoaded(POEEventState.BeforeEvent, name);
            Transport.GetImage(url);
            onImageLoaded(POEEventState.AfterEvent, name);
        }

        public Stream GetImage(string url)
        {
            return Transport.GetImage(url);
        }

        public IEnumerable<Stream> GetImage(Tab tab)
        {
            onImageLoaded(POEEventState.BeforeEvent, tab.Name);
            yield return Transport.GetImage(tab.srcL);
            yield return Transport.GetImage(tab.srcC);
            yield return Transport.GetImage(tab.srcR);
            onImageLoaded(POEEventState.AfterEvent, tab.Name);
        }

        public bool UpdateThread(string threadID, string threadTitle, string threadText)
        {
            return Transport.UpdateThread(threadID, threadTitle, threadText);
        }

        public bool BumpThread(string threadId, string threadTitle)
        {
            return Transport.BumpThread(threadId, threadTitle);
        }

        private static string GetItemName(Item item)
        {
            if (item.Name != string.Empty)
                return item.Name;

            return item.TypeLine;
        }

        private void onStashLoaded(POEEventState state, int index, int numberOfTabs)
        {
            if (StashLoading != null)
                StashLoading(this, new StashLoadedEventArgs(index, numberOfTabs, state));
        }

        private void onImageLoaded(POEEventState state, string url)
        {
            if (ImageLoading != null)
                ImageLoading(this, new ImageLoadedEventArgs(url, state));
        }

        private void onAuthenticate(POEEventState state, string email, string realm)
        {
            if (Authenticating != null)
                Authenticating(this, new AuthenticateEventArgs(email, realm, state));
        }
    }
}


================================================
FILE: POEApi.Model/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("POEApi.Model")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("POEApi.Model")]
[assembly: AssemblyCopyright("Artistic License 2.0")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("4daa5e0a-7d48-44e3-a589-2385c8116799")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.29.2.0")]
[assembly: AssemblyFileVersion("1.29.2.0")]
[assembly: InternalsVisibleTo("POEApi.Model.Tests")]





================================================
FILE: POEApi.Model/Property.cs
================================================
using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;

namespace POEApi.Model
{
    public clas
Download .txt
gitextract_rfobdqo7/

├── .gitignore
├── LICENSE
├── POEApi.Infrastructure/
│   ├── CacheService.cs
│   ├── CurrencyAbbreviationMap.cs
│   ├── DPAPI.cs
│   ├── Events/
│   │   ├── ThottledEventArgs.cs
│   │   └── ThrottledEventHandler.cs
│   ├── ExcessiveRequestException.cs
│   ├── Extensions.cs
│   ├── ForumThreadException.cs
│   ├── Logger.cs
│   ├── LogonFailedException.cs
│   ├── POEApi.Infrastructure.csproj
│   └── Properties/
│       └── AssemblyInfo.cs
├── POEApi.Model/
│   ├── AbyssJewel.cs
│   ├── BreachSplinter.cs
│   ├── BreachStone.cs
│   ├── BreachType.cs
│   ├── Buyouts.xml
│   ├── Character.cs
│   ├── CharacterStashBuilder.cs
│   ├── ChargeInfo.cs
│   ├── Colour.cs
│   ├── Currency.cs
│   ├── CurrencyHandler.cs
│   ├── CurrencyRatio.cs
│   ├── Data.xml
│   ├── Data.xsd
│   ├── Decoration.cs
│   ├── DivineVessel.cs
│   ├── EquipedItems.cs
│   ├── Essence.cs
│   ├── EssenceType.cs
│   ├── Events/
│   │   ├── AuthenticateEventArgs.cs
│   │   ├── ImageLoadedEventArgs.cs
│   │   ├── POEEventArgs.cs
│   │   ├── POEEventState.cs
│   │   └── StashLoadedEventArgs.cs
│   ├── FatedUniqueInfo.cs
│   ├── Fossil.cs
│   ├── FullBestiaryOrb.cs
│   ├── Gear.cs
│   ├── GearType/
│   │   ├── GearType.cs
│   │   ├── GearTypeFactory.cs
│   │   └── GearTypeRunner.cs
│   ├── GearType.cs
│   ├── Gem.cs
│   ├── GemCategory.cs
│   ├── GemHandler.cs
│   ├── ImageComparer.cs
│   ├── Incubator.cs
│   ├── Interfaces/
│   │   ├── IBreachCurrency.cs
│   │   └── ILegion.cs
│   ├── Item.cs
│   ├── ItemBackgroundUrlBuilder.cs
│   ├── ItemFactory.cs
│   ├── ItemFilterConfig.json
│   ├── ItemFilterConfig.proto
│   ├── ItemTradeInfo.cs
│   ├── JSONProxy/
│   │   ├── Account.cs
│   │   └── Stash.cs
│   ├── Leaguestone.cs
│   ├── LegionEmblem.cs
│   ├── LegionFaction.cs
│   ├── LegionSplinter.cs
│   ├── Map.cs
│   ├── Net.cs
│   ├── Offering.cs
│   ├── OrbType.cs
│   ├── POEApi.Model.csproj
│   ├── POEModel.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── Property.cs
│   ├── Prophecy.cs
│   ├── ProxyMapper.cs
│   ├── QuestItem.cs
│   ├── Requirement.cs
│   ├── Resonator.cs
│   ├── Scarab.cs
│   ├── Settings.cs
│   ├── Settings.xml
│   ├── Settings.xsd
│   ├── Sextant.cs
│   ├── SextantType.cs
│   ├── ShopSetting.cs
│   ├── Socket.cs
│   ├── SocketableItem.cs
│   ├── StackInfo.cs
│   ├── Stash.cs
│   ├── Tab.cs
│   ├── UnknownItem.cs
│   ├── app.config
│   └── packages.config
├── POEApi.Transport/
│   ├── CachedTransport.cs
│   ├── HttpTransport.cs
│   ├── ITransport.cs
│   ├── POEApi.Transport.csproj
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── TaskThrottle.cs
│   ├── app.config
│   └── packages.config
├── Procurement/
│   ├── App.xaml
│   ├── App.xaml.cs
│   ├── ApplicationState.cs
│   ├── Controls/
│   │   ├── AbstractStashTabControl.cs
│   │   ├── Category.cs
│   │   ├── CharacterSelector.xaml
│   │   ├── CharacterSelector.xaml.cs
│   │   ├── CurrencyStashTab.xaml
│   │   ├── CurrencyStashTab.xaml.cs
│   │   ├── Equipped.xaml
│   │   ├── Equipped.xaml.cs
│   │   ├── EssenceStashTab.xaml
│   │   ├── EssenceStashTab.xaml.cs
│   │   ├── ExpressionDark.xaml
│   │   ├── ExpressionDarkGrid.xaml
│   │   ├── ExpressionDarkGrid_brushes.xaml
│   │   ├── ForumExport.xaml
│   │   ├── ForumExport.xaml.cs
│   │   ├── ForumExportTemplateReader.cs
│   │   ├── ForumTemplate.xaml
│   │   ├── ForumTemplate.xaml.cs
│   │   ├── FragmentStashTab.xaml
│   │   ├── FragmentStashTab.xaml.cs
│   │   ├── Inventory.xaml
│   │   ├── Inventory.xaml.cs
│   │   ├── ItemDisplay.xaml
│   │   ├── ItemDisplay.xaml.cs
│   │   ├── ItemHover.xaml
│   │   ├── ItemHover.xaml.cs
│   │   ├── ItemHoverHeader.xaml
│   │   ├── ItemHoverHeader.xaml.cs
│   │   ├── ItemHoverImage.xaml
│   │   ├── ItemHoverImage.xaml.cs
│   │   ├── LeagueSelection.xaml
│   │   ├── LeagueSelection.xaml.cs
│   │   ├── RecipeResults.xaml
│   │   ├── RecipeResults.xaml.cs
│   │   ├── SetBuyoutView.xaml
│   │   ├── SetBuyoutView.xaml.cs
│   │   ├── SetTabBuyoutView.xaml
│   │   ├── SetTabBuyoutView.xaml.cs
│   │   ├── StashTabControl.xaml
│   │   ├── StashTabControl.xaml.cs
│   │   ├── TabControlStyle.xaml
│   │   ├── TradeSettings.xaml
│   │   └── TradeSettings.xaml.cs
│   ├── ForumExportTemplate.txt
│   ├── Interfaces/
│   │   └── IStashControl.cs
│   ├── MainWindow.xaml
│   ├── MainWindow.xaml.cs
│   ├── Procurement.csproj
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── RelayCommand.cs
│   ├── Utility/
│   │   ├── AlphaHittestedImage.cs
│   │   ├── CharacterTabInjector.cs
│   │   ├── ClientLogFileEventArgs.cs
│   │   ├── ClientLogFileWatcher.cs
│   │   ├── ExportPreferenceManager.cs
│   │   ├── ItemHoverRenderer.cs
│   │   ├── PoeTradeOnlineHelper.cs
│   │   ├── StashHelper.cs
│   │   └── VersionChecker.cs
│   ├── View/
│   │   ├── AboutView.xaml
│   │   ├── AboutView.xaml.cs
│   │   ├── BindableRichTextBox.cs
│   │   ├── Block.xaml
│   │   ├── Block.xaml.cs
│   │   ├── Converters/
│   │   │   ├── CharacterToImageConverter.cs
│   │   │   ├── CharacterToLevelConverter.cs
│   │   │   ├── CurrencyCraftingSlotScalingConverter.cs
│   │   │   ├── FilterListToNameConverter.cs
│   │   │   ├── ItemDisplayConverter.cs
│   │   │   ├── ItemExplicitModsToFormattedRunConverter.cs
│   │   │   ├── ItemPropertyToFormattedRunConverter.cs
│   │   │   ├── ItemRequirementToFormattedRunConverter.cs
│   │   │   ├── ItemToColorBrushConverter.cs
│   │   │   ├── ItemToItemHoverSymbolPath.cs
│   │   │   ├── ItemToItemHoverSymbolVisibility.cs
│   │   │   ├── ObjectInListMultiConverter.cs
│   │   │   ├── RecipeDescriptionConverter.cs
│   │   │   ├── ResultMatchConverter.cs
│   │   │   └── TabIDToStashControlConverter.cs
│   │   ├── IViewModel.cs
│   │   ├── InventoryView.xaml
│   │   ├── InventoryView.xaml.cs
│   │   ├── ItemExplicitModsToFormattedRunConverter.cs
│   │   ├── ItemPropertyToFormattedRunConverter.cs
│   │   ├── ItemRequirementToFormattedRunConverter.cs
│   │   ├── ItemToColorBrushConverter.cs
│   │   ├── LoadingAnimation.xaml
│   │   ├── LoadingAnimation.xaml.cs
│   │   ├── LoginView.xaml
│   │   ├── LoginView.xaml.cs
│   │   ├── RecipeView.xaml
│   │   ├── RecipeView.xaml.cs
│   │   ├── RefreshView.xaml
│   │   ├── RefreshView.xaml.cs
│   │   ├── SettingsView.xaml
│   │   ├── SettingsView.xaml.cs
│   │   ├── StashView.xaml
│   │   ├── StashView.xaml.cs
│   │   ├── TradingView.xaml
│   │   ├── TradingView.xaml.cs
│   │   ├── VisibilityConverter.cs
│   │   └── VisualTreeHelper.cs
│   ├── ViewModel/
│   │   ├── AdvancedSearchCategory.cs
│   │   ├── Cache/
│   │   │   └── BitmapCache.cs
│   │   ├── DisplayModeStrategy/
│   │   │   ├── DisplayModeFactory.cs
│   │   │   ├── DisplayModeStrategyBase.cs
│   │   │   ├── IDisplayModeStrategy.cs
│   │   │   ├── NamePlusValueStrategy.cs
│   │   │   ├── StringFormatStrategy.cs
│   │   │   └── ValuesPlusNameStrategy.cs
│   │   ├── Filters/
│   │   │   ├── FilterGroup.cs
│   │   │   ├── ForumExport/
│   │   │   │   ├── AccurayFilter.cs
│   │   │   │   ├── AllElementalResistances.cs
│   │   │   │   ├── AllGemsFilter.cs
│   │   │   │   ├── AllMicrotransactions.cs
│   │   │   │   ├── AndFilter.cs
│   │   │   │   ├── AtlasFragmentFilter.cs
│   │   │   │   ├── AttackSpeed.cs
│   │   │   │   ├── AuraGemsFilter.cs
│   │   │   │   ├── BuyoutFilter.cs
│   │   │   │   ├── CastSpeed.cs
│   │   │   │   ├── CategoryManager.cs
│   │   │   │   ├── ChaosResistance.cs
│   │   │   │   ├── CharacterAttributeFilters.cs
│   │   │   │   ├── ColdResistance.cs
│   │   │   │   ├── CorruptedGemFilter.cs
│   │   │   │   ├── CraftedModFilter.cs
│   │   │   │   ├── CritChanceFilter.cs
│   │   │   │   ├── CurrencyFilter.cs
│   │   │   │   ├── CurseGemFilter.cs
│   │   │   │   ├── DamageChaos.cs
│   │   │   │   ├── DamageCold.cs
│   │   │   │   ├── DamageFire.cs
│   │   │   │   ├── DamageLightning.cs
│   │   │   │   ├── DamageTriple.cs
│   │   │   │   ├── DivineVesselFilter.cs
│   │   │   │   ├── DropOnlyGemFilter.cs
│   │   │   │   ├── DualRes.cs
│   │   │   │   ├── ElderItemFilter.cs
│   │   │   │   ├── EnchantModFilter.cs
│   │   │   │   ├── EnergyShieldFilter.cs
│   │   │   │   ├── EssenceFilter.cs
│   │   │   │   ├── ExplicitModBase.cs
│   │   │   │   ├── FatedUniqueBaseTypesFilter.cs
│   │   │   │   ├── FatedUniquePropheciesFilter.cs
│   │   │   │   ├── FatedUniqueTargetsFilter.cs
│   │   │   │   ├── FatedUniquesFilter.cs
│   │   │   │   ├── FireResistance.cs
│   │   │   │   ├── FiveLink.cs
│   │   │   │   ├── FossilFilter.cs
│   │   │   │   ├── FourLink.cs
│   │   │   │   ├── FracturedItemFilter.cs
│   │   │   │   ├── FullBestiaryOrbFilter.cs
│   │   │   │   ├── GearSearchFilters.cs
│   │   │   │   ├── GearTypeFilter.cs
│   │   │   │   ├── GemCategoryFilter.cs
│   │   │   │   ├── GemLevelFilter.cs
│   │   │   │   ├── GlobalCritChanceFilter.cs
│   │   │   │   ├── GlobalCritMultiplierFilter.cs
│   │   │   │   ├── IncreasedDamageFilter.cs
│   │   │   │   ├── IncreasedPhysicalDamageFilter.cs
│   │   │   │   ├── IncubatorFilter.cs
│   │   │   │   ├── IncursionVialsFilter.cs
│   │   │   │   ├── ItemQuantityFilter.cs
│   │   │   │   ├── ItemRarityFilter.cs
│   │   │   │   ├── LeagestoneFilter.cs
│   │   │   │   ├── LeveledGemFilter.cs
│   │   │   │   ├── LifeFilter.cs
│   │   │   │   ├── LifeLeech.cs
│   │   │   │   ├── LifeRegenFilter.cs
│   │   │   │   ├── LightningResistance.cs
│   │   │   │   ├── Link.cs
│   │   │   │   ├── MagicRarity.cs
│   │   │   │   ├── ManaFilter.cs
│   │   │   │   ├── ManaLeechFilter.cs
│   │   │   │   ├── ManaRegenFilter.cs
│   │   │   │   ├── MapFilter.cs
│   │   │   │   ├── MapLevelFilter.cs
│   │   │   │   ├── MirroredItemFilter.cs
│   │   │   │   ├── MovementSpeed.cs
│   │   │   │   ├── MultipleVeiledModsFilter.cs
│   │   │   │   ├── NormalRarity.cs
│   │   │   │   ├── OneHandedFilter.cs
│   │   │   │   ├── OrFilter.cs
│   │   │   │   ├── OrStatFilter.cs
│   │   │   │   ├── PercentEnergyShieldFilter.cs
│   │   │   │   ├── PercentLifeFilter.cs
│   │   │   │   ├── PhysicalDamageFilter.cs
│   │   │   │   ├── PopularGemsFilter.cs
│   │   │   │   ├── ProphecyFilter.cs
│   │   │   │   ├── ProphecyFragmentFilter.cs
│   │   │   │   ├── QualityGemFilter.cs
│   │   │   │   ├── RareRarity.cs
│   │   │   │   ├── RarityFilter.cs
│   │   │   │   ├── ResistanceBase.cs
│   │   │   │   ├── ResonatorFilter.cs
│   │   │   │   ├── ScarabFilter.cs
│   │   │   │   ├── ShaperItemFilter.cs
│   │   │   │   ├── SixBlueSockets.cs
│   │   │   │   ├── SixGreenSockets.cs
│   │   │   │   ├── SixLink.cs
│   │   │   │   ├── SixRedSockets.cs
│   │   │   │   ├── SixSocketFilter.cs
│   │   │   │   ├── SocketColourFilter.cs
│   │   │   │   ├── SpellDamageFilter.cs
│   │   │   │   ├── StatFilter.cs
│   │   │   │   ├── StatFilterBase.cs
│   │   │   │   ├── SupportGemsFilter.cs
│   │   │   │   ├── SynthesisedItemFilter.cs
│   │   │   │   ├── TripleResistance.cs
│   │   │   │   ├── TwoHandedFilter.cs
│   │   │   │   ├── TypeLineFilter.cs
│   │   │   │   ├── UniqueRarity.cs
│   │   │   │   ├── UnknownItemFilter.cs
│   │   │   │   ├── VaalFragmentFilter.cs
│   │   │   │   ├── VaalUberFragmentFilter.cs
│   │   │   │   ├── VeiledModFilter.cs
│   │   │   │   ├── VeiledPrefixFilter.cs
│   │   │   │   ├── VeiledSuffixFilter.cs
│   │   │   │   └── XHandFilter.cs
│   │   │   ├── IFilter.cs
│   │   │   ├── ItemFilter.cs
│   │   │   └── UserSearchFilter.cs
│   │   ├── ForumExportViewModel.cs
│   │   ├── ForumExportVisitors/
│   │   │   ├── ExplicitModVisitor.cs
│   │   │   ├── GearVisitor.cs
│   │   │   ├── GemVisitor.cs
│   │   │   ├── IGNVistior.cs
│   │   │   ├── IVisitor.cs
│   │   │   ├── LastUpdatedVisitor.cs
│   │   │   ├── LeveledGemVisitor.cs
│   │   │   ├── LinksVisitor.cs
│   │   │   ├── MagicFindVisitor.cs
│   │   │   ├── MapVisitor.cs
│   │   │   ├── MultipleBuyoutVisitor.cs
│   │   │   ├── QualityGemVisitor.cs
│   │   │   ├── SimpleVisitor.cs
│   │   │   ├── SimpleVisitors.cs
│   │   │   ├── SingleBuyoutVisitor.cs
│   │   │   ├── StashVisitor.cs
│   │   │   ├── TypeLineVisitor.cs
│   │   │   ├── VisitorBase.cs
│   │   │   └── XHandedVisitor.cs
│   │   ├── ForumTemplateViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── ItemDisplayViewModel.cs
│   │   ├── ItemFilterUpdater.cs
│   │   ├── ItemHoverViewModel.cs
│   │   ├── ItemHoverViewModelFactory.cs
│   │   ├── LoginWindowViewModel.cs
│   │   ├── MainPageViewModel.cs
│   │   ├── ObservableBase.cs
│   │   ├── PricingInfo.cs
│   │   ├── RecipeResultViewModel.cs
│   │   ├── Recipes/
│   │   │   ├── ArmourersScrapRecipe.cs
│   │   │   ├── BlacksmithsWhetstoneRecipe.cs
│   │   │   ├── CartographersChiselRecipe.cs
│   │   │   ├── ChromaticRecipe.cs
│   │   │   ├── GCPRecipe.cs
│   │   │   ├── GlassblowersBaubleRecipe.cs
│   │   │   ├── LoreweaveRecipe.cs
│   │   │   ├── MatchedSet.cs
│   │   │   ├── MinimumQualityRecipe.cs
│   │   │   ├── RareSetRecipe.cs
│   │   │   ├── Recipe.cs
│   │   │   ├── RecipeManager.cs
│   │   │   ├── RecipeResult.cs
│   │   │   ├── SameBaseTypeRecipe.cs
│   │   │   ├── SameNameRecipe.cs
│   │   │   └── VaalOrbRecipe.cs
│   │   ├── ScreenController.cs
│   │   ├── SetBuyoutViewModel.cs
│   │   ├── SetTabBuyoutViewModel.cs
│   │   ├── SettingsViewModel.cs
│   │   ├── StatusController.cs
│   │   ├── TabInfo.cs
│   │   ├── TabViewModel/
│   │   │   ├── CommonTabViewModel.cs
│   │   │   ├── CurrencyStashViewModel.cs
│   │   │   ├── EssenceStashViewModel.cs
│   │   │   ├── FragmentStashViewModel.cs
│   │   │   ├── StashViewModel.cs
│   │   │   ├── TabContent.cs
│   │   │   ├── TabFactory.cs
│   │   │   └── TabVisuals.cs
│   │   ├── TradeSettingsViewModel.cs
│   │   └── TradingViewModel.cs
│   ├── app.config
│   └── packages.config
├── Procurement.sln
├── README.md
├── Tests/
│   ├── POEApi.Model.Tests/
│   │   ├── Files.Designer.cs
│   │   ├── Files.resx
│   │   ├── GearTests.cs
│   │   ├── IFilterTests.cs
│   │   ├── ItemFactoryTests.cs
│   │   ├── POEApi.Model.Tests.csproj
│   │   ├── PoeModelTests.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── TestData/
│   │   │   ├── SampleCharacter.json
│   │   │   ├── SampleCharacterExpiredName.json
│   │   │   ├── SampleCurrencyTabWithShards.json
│   │   │   ├── SampleFragmentStash.json
│   │   │   ├── SampleInventory.json
│   │   │   ├── SampleInventoryWithPantheonSoul.json
│   │   │   ├── SampleInventoryWithQuestItems.json
│   │   │   ├── SampleStash.json
│   │   │   ├── SampleStashWithDivineVessel.json
│   │   │   ├── SampleStashWithEssences.json
│   │   │   ├── SampleStashWithLeagueStoneChargeInfo.json
│   │   │   ├── SampleStashWithLitheBlade.json
│   │   │   ├── SampleStashWithMaps.json
│   │   │   ├── SampleStashWithMirroredItems.json
│   │   │   ├── SampleStashWithNets.json
│   │   │   ├── SampleStashWithRelic.json
│   │   │   ├── SampleStashWithRemnantOfCorruption.json
│   │   │   ├── SampleStashWithSaintlyChainmail.json
│   │   │   ├── SampleStashWithScarab.json
│   │   │   └── SampleStashWithSynthesisItems.json
│   │   ├── UnitTestHelper.cs
│   │   ├── UnknownItemTests.cs
│   │   ├── app.config
│   │   └── packages.config
│   ├── POEApi.TestHelpers/
│   │   ├── Builders/
│   │   │   ├── Build.cs
│   │   │   └── JSONProxyItemBuilder.cs
│   │   ├── POEApi.TestHelpers.csproj
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── app.config
│   │   └── packages.config
│   └── Procurement.Tests/
│       ├── Procurement.Tests.csproj
│       ├── Properties/
│       │   └── AssemblyInfo.cs
│       ├── ViewModel/
│       │   └── Recipes/
│       │       ├── RareSetRecipeTests.cs
│       │       ├── SameBaseTypeRecipeTests.cs
│       │       ├── SameNameRecipeTests.cs
│       │       └── VaalOrbRecipeTests.cs
│       ├── app.config
│       └── packages.config
├── Tools/
│   ├── App.config
│   ├── EssenceGenerator.cs
│   ├── Procurement.Tools.csproj
│   ├── Procurement.Tools.sln
│   ├── Program.cs
│   └── Properties/
│       └── AssemblyInfo.cs
└── latest-release.txt
Download .txt
SYMBOL INDEX (1593 symbols across 350 files)

FILE: POEApi.Infrastructure/CacheService.cs
  class CacheService (line 7) | public class CacheService
    method GetFullPath (line 11) | private string GetFullPath(string key)
    method CacheService (line 23) | public CacheService()
    method CacheService (line 27) | public CacheService(string email)
    method Exists (line 34) | public bool Exists(string key)
    method Get (line 39) | public Stream Get(string key)
    method Set (line 44) | public void Set(string key, Stream data)
    method Remove (line 50) | public void Remove(string key)
    method Clear (line 55) | public void Clear()

FILE: POEApi.Infrastructure/CurrencyAbbreviationMap.cs
  class CurrencyAbbreviationMap (line 8) | public sealed class CurrencyAbbreviationMap
    method CurrencyAbbreviationMap (line 16) | private CurrencyAbbreviationMap()
    method AddItem (line 36) | private static void AddItem(string currency, string abbreviation)
    method FromAbbreviation (line 42) | public string FromAbbreviation(string abbreviation)
    method FromCurrency (line 50) | public string FromCurrency(string currency)

FILE: POEApi.Infrastructure/DPAPI.cs
  class DPAPI (line 12) | public static class DPAPI
    method Encrypt (line 17) | public static string Encrypt(this SecureString secret)
    method Decrypt (line 46) | public static SecureString Decrypt(this string cipher)
    method UnWrap (line 86) | public static string UnWrap(this SecureString secret)

FILE: POEApi.Infrastructure/Events/ThottledEventArgs.cs
  class ThottledEventArgs (line 5) | public class ThottledEventArgs : EventArgs
    method ThottledEventArgs (line 8) | public ThottledEventArgs(TimeSpan waitTime)

FILE: POEApi.Infrastructure/ExcessiveRequestException.cs
  class ExcessiveRequestException (line 5) | public class ExcessiveRequestException: Exception
    method ExcessiveRequestException (line 7) | public ExcessiveRequestException()

FILE: POEApi.Infrastructure/Extensions.cs
  class Extensions (line 11) | public static class Extensions
    method GetHash (line 13) | public static string GetHash(this string input)
    method GetEnum (line 23) | public static T GetEnum<T>(this XAttribute attribute)
    method ReadAllBytes (line 28) | public static byte[] ReadAllBytes(this StreamReader reader)
    method SafeSubString (line 43) | public static string SafeSubString(this string text, int start, int le...
    method SafeSubString (line 48) | public static string SafeSubString(this string text, int start, int le...
    method GetEntry (line 56) | public static string GetEntry(this Dictionary<string, string> dictiona...

FILE: POEApi.Infrastructure/ForumThreadException.cs
  class ForumThreadException (line 5) | public class ForumThreadException : Exception
    method ForumThreadException (line 7) | public ForumThreadException()
    method ForumThreadException (line 10) | public ForumThreadException(string message)

FILE: POEApi.Infrastructure/Logger.cs
  class Logger (line 6) | public static class Logger
    method Log (line 9) | public static void Log(Exception e)
    method Log (line 13) | public static void Log(string message)

FILE: POEApi.Infrastructure/LogonFailedException.cs
  class LogonFailedException (line 6) | public class LogonFailedException : Exception
    method LogonFailedException (line 8) | public LogonFailedException(string userName)
    method LogonFailedException (line 12) | public LogonFailedException()

FILE: POEApi.Model/AbyssJewel.cs
  class AbyssJewel (line 5) | public class AbyssJewel : SocketableItem
    method AbyssJewel (line 7) | public AbyssJewel(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/BreachSplinter.cs
  class BreachSplinter (line 8) | public class BreachSplinter : Item, IBreachCurrency
    method BreachSplinter (line 12) | public BreachSplinter(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/BreachStone.cs
  class Breachstone (line 5) | public class Breachstone : Item, IBreachCurrency
    method Breachstone (line 9) | public Breachstone(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/BreachType.cs
  type BreachType (line 3) | public enum BreachType

FILE: POEApi.Model/Character.cs
  class Character (line 5) | public class Character

FILE: POEApi.Model/CharacterStashBuilder.cs
  class CharacterStashBuilder (line 6) | public class CharacterStashBuilder
    method GetCharacterStashItems (line 8) | public static List<Item> GetCharacterStashItems(string characterName, ...
    method UpdatePosition (line 26) | public static void UpdatePosition(Item item, Item clone)

FILE: POEApi.Model/ChargeInfo.cs
  class ChargeInfo (line 3) | public class ChargeInfo
    method ChargeInfo (line 8) | internal ChargeInfo(int charges, int maxCharges)
    method ToString (line 14) | public override string ToString()

FILE: POEApi.Model/Colour.cs
  class Colour (line 5) | public class Colour

FILE: POEApi.Model/Currency.cs
  class Currency (line 5) | [DebuggerDisplay("Type: {Type} Stack: {StackInfo.Amount}/{StackInfo.MaxS...
    method Currency (line 8) | public Currency(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/CurrencyHandler.cs
  class CurrencyHandler (line 7) | internal class CurrencyHandler
    method CurrencyHandler (line 11) | static CurrencyHandler()
    method getRatio (line 19) | private static double getRatio(OrbType type)
    method calculateRatio (line 27) | private static double calculateRatio(CurrencyRatio ratio)
    method GetChaosValue (line 35) | internal static double GetChaosValue(OrbType type)
    method GetTotal (line 40) | public static double GetTotal(OrbType target, IEnumerable<Currency> cu...
    method GetTotalCurrencyDistribution (line 54) | public static Dictionary<OrbType, double> GetTotalCurrencyDistribution...
    method GetTotalCurrencyCount (line 64) | public static Dictionary<OrbType, double> GetTotalCurrencyCount(IEnume...

FILE: POEApi.Model/CurrencyRatio.cs
  class CurrencyRatio (line 3) | public class CurrencyRatio
    method CurrencyRatio (line 9) | public CurrencyRatio(OrbType orbType, double orbAmount, double chaosAm...

FILE: POEApi.Model/Decoration.cs
  class Decoration (line 8) | public class Decoration : Item
    method Decoration (line 10) | public Decoration(JSONProxy.Item item)

FILE: POEApi.Model/DivineVessel.cs
  class DivineVessel (line 3) | public class DivineVessel : Item
    method DivineVessel (line 5) | public DivineVessel(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/EquipedItems.cs
  class EquipedItems (line 9) | public class EquipedItems
    method EquipedItems (line 32) | public EquipedItems(IEnumerable<Item> items)
    method SetProperty (line 47) | private void SetProperty(Item item)
    method GetItems (line 69) | public Dictionary<string, Item> GetItems()

FILE: POEApi.Model/Essence.cs
  class Essence (line 5) | [DebuggerDisplay("{TypeLine}")]
    method Essence (line 10) | public Essence(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/EssenceType.cs
  type EssenceType (line 3) | public enum EssenceType

FILE: POEApi.Model/Events/AuthenticateEventArgs.cs
  class AuthenticateEventArgs (line 3) | public class AuthenticateEventArgs : POEEventArgs
    method AuthenticateEventArgs (line 8) | public AuthenticateEventArgs(string email, string realm,POEEventState ...

FILE: POEApi.Model/Events/ImageLoadedEventArgs.cs
  class ImageLoadedEventArgs (line 5) | public class ImageLoadedEventArgs : POEEventArgs
    method ImageLoadedEventArgs (line 8) | public ImageLoadedEventArgs(string url, POEEventState state) :

FILE: POEApi.Model/Events/POEEventArgs.cs
  class POEEventArgs (line 5) | public class POEEventArgs : EventArgs
    method POEEventArgs (line 8) | public POEEventArgs(POEEventState state)

FILE: POEApi.Model/Events/POEEventState.cs
  type POEEventState (line 3) | public enum POEEventState

FILE: POEApi.Model/Events/StashLoadedEventArgs.cs
  class StashLoadedEventArgs (line 3) | public class StashLoadedEventArgs : POEEventArgs
    method StashLoadedEventArgs (line 8) | public StashLoadedEventArgs(int index, int numTabs, POEEventState stat...

FILE: POEApi.Model/FatedUniqueInfo.cs
  class FatedUniqueInfo (line 8) | public class FatedUniqueInfo

FILE: POEApi.Model/Fossil.cs
  class Fossil (line 3) | public class Fossil : Item
    method Fossil (line 5) | public Fossil(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/FullBestiaryOrb.cs
  class FullBestiaryOrb (line 3) | public class FullBestiaryOrb : Item
    method FullBestiaryOrb (line 5) | public FullBestiaryOrb(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/Gear.cs
  class Gear (line 9) | public class Gear : Item
    method Gear (line 20) | public Gear(JSONProxy.Item item) : base(item)
    method GetSockets (line 32) | private List<Socket> GetSockets(JSONProxy.Item item) =>
    method GetSocketedItems (line 35) | private List<SocketableItem> GetSocketedItems(JSONProxy.Item item) =>
    method IsLinked (line 39) | public bool IsLinked(int links)
    method NumberOfSockets (line 44) | public int NumberOfSockets()
    method GetSpecialItemType (line 149) | private string GetSpecialItemType()

FILE: POEApi.Model/GearType.cs
  type GearType (line 3) | public enum GearType

FILE: POEApi.Model/GearType/GearType.cs
  type GearType (line 3) | public enum GearType

FILE: POEApi.Model/GearType/GearTypeFactory.cs
  class GearTypeFactory (line 5) | internal class GearTypeFactory
    method GetType (line 38) | public static GearType GetType(Gear item)
    method GetBaseType (line 47) | public static string GetBaseType(Gear item)

FILE: POEApi.Model/GearType/GearTypeRunner.cs
  class GearTypeRunner (line 6) | public abstract class GearTypeRunner
    method IsCompatibleType (line 8) | public abstract bool IsCompatibleType(Gear item);
    method GetBaseType (line 9) | public abstract string GetBaseType(Gear item);
    method GearTypeRunner (line 12) | public GearTypeRunner(GearType gearType)
  class GearTypeRunnerBase (line 18) | public class GearTypeRunnerBase : GearTypeRunner
    method GearTypeRunnerBase (line 24) | public GearTypeRunnerBase(GearType gearType, IEnumerable<string> compa...
    method IsCompatibleType (line 32) | public override bool IsCompatibleType(Gear item)
    method GetBaseType (line 50) | public override string GetBaseType(Gear item)
  class RingRunner (line 63) | public class RingRunner : GearTypeRunnerBase
    method RingRunner (line 65) | public RingRunner()
    method IsCompatibleType (line 71) | public override bool IsCompatibleType(Gear item)
  class AmuletRunner (line 80) | public class AmuletRunner : GearTypeRunnerBase
    method AmuletRunner (line 82) | public AmuletRunner()
  class TalismanRunner (line 89) | public class TalismanRunner : GearTypeRunnerBase
    method TalismanRunner (line 91) | public TalismanRunner()
  class BreachstoneRunner (line 98) | public class BreachstoneRunner : GearTypeRunnerBase
    method BreachstoneRunner (line 100) | public BreachstoneRunner()
  class LeaguestoneRunner (line 114) | public class LeaguestoneRunner : GearTypeRunnerBase
    method LeaguestoneRunner (line 116) | public LeaguestoneRunner() : base(GearType.Leaguestone, new List<strin...
  class HelmetRunner (line 122) | public class HelmetRunner : GearTypeRunnerBase
    method HelmetRunner (line 124) | public HelmetRunner()
  class ChestRunner (line 131) | public class ChestRunner : GearTypeRunnerBase
    method ChestRunner (line 133) | public ChestRunner()
  class BeltRunner (line 140) | public class BeltRunner : GearTypeRunnerBase
    method BeltRunner (line 142) | public BeltRunner()
  class FlaskRunner (line 151) | public class FlaskRunner : GearTypeRunnerBase
    method FlaskRunner (line 153) | public FlaskRunner()
  class MapRunner (line 160) | public class MapRunner : GearTypeRunnerBase
    method MapRunner (line 162) | public MapRunner()
  class DivinationCardRunner (line 169) | public class DivinationCardRunner : GearTypeRunnerBase
    method DivinationCardRunner (line 171) | public DivinationCardRunner()
  class JewelRunner (line 177) | public class JewelRunner : GearTypeRunnerBase
    method JewelRunner (line 179) | public JewelRunner()
  class AbyssJewelRunner (line 187) | internal class AbyssJewelRunner : GearTypeRunnerBase
    method AbyssJewelRunner (line 189) | public AbyssJewelRunner()
  class GloveRunner (line 197) | public class GloveRunner : GearTypeRunnerBase
    method GloveRunner (line 199) | public GloveRunner()
  class BootRunner (line 208) | public class BootRunner : GearTypeRunnerBase
    method BootRunner (line 210) | public BootRunner()
  class AxeRunner (line 220) | public class AxeRunner : GearTypeRunnerBase
    method AxeRunner (line 222) | public AxeRunner()
  class ClawRunner (line 229) | public class ClawRunner : GearTypeRunnerBase
    method ClawRunner (line 231) | public ClawRunner()
  class BowRunner (line 238) | public class BowRunner : GearTypeRunnerBase
    method BowRunner (line 240) | public BowRunner()
  class DaggerRunner (line 247) | public class DaggerRunner : GearTypeRunnerBase
    method DaggerRunner (line 249) | public DaggerRunner()
  class MaceRunner (line 257) | public class MaceRunner : GearTypeRunnerBase
    method MaceRunner (line 259) | public MaceRunner()
  class QuiverRunner (line 266) | public class QuiverRunner : GearTypeRunnerBase
    method QuiverRunner (line 268) | public QuiverRunner()
  class SceptreRunner (line 275) | public class SceptreRunner : GearTypeRunnerBase
    method SceptreRunner (line 277) | public SceptreRunner()
  class StaffRunner (line 286) | public class StaffRunner : GearTypeRunnerBase
    method StaffRunner (line 288) | public StaffRunner()
  class SwordRunner (line 298) | public class SwordRunner : GearTypeRunnerBase
    method SwordRunner (line 300) | public SwordRunner()
  class ShieldRunner (line 308) | public class ShieldRunner : GearTypeRunnerBase
    method ShieldRunner (line 310) | public ShieldRunner()
  class WandRunner (line 319) | public class WandRunner : GearTypeRunnerBase
    method WandRunner (line 321) | public WandRunner()
  class FishingRodRunner (line 329) | public class FishingRodRunner : GearTypeRunnerBase
    method FishingRodRunner (line 331) | public FishingRodRunner()

FILE: POEApi.Model/Gem.cs
  class Gem (line 6) | public class Gem : SocketableItem
    method Gem (line 25) | public Gem(JSONProxy.Item item) : base(item)
    method ExtractGemExperience (line 35) | private void ExtractGemExperience(JSONProxy.Item item)
    method getLevel (line 68) | private int getLevel()

FILE: POEApi.Model/GemCategory.cs
  type GemCategory (line 3) | public enum GemCategory

FILE: POEApi.Model/GemHandler.cs
  class GemHandler (line 5) | internal class GemHandler
    method GetGemDistribution (line 7) | public static SortedDictionary<string, int> GetGemDistribution(IEnumer...

FILE: POEApi.Model/ImageComparer.cs
  class ImageComparer (line 5) | public class ImageComparer : IEqualityComparer<Item>
    method Equals (line 7) | public bool Equals(Item x, Item y)
    method GetHashCode (line 15) | public int GetHashCode(Item obj)

FILE: POEApi.Model/Incubator.cs
  class Incubator (line 3) | public class Incubator : Item
    method Incubator (line 5) | public Incubator(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/Interfaces/IBreachCurrency.cs
  type IBreachCurrency (line 3) | public interface IBreachCurrency

FILE: POEApi.Model/Interfaces/ILegion.cs
  type ILegion (line 3) | public interface ILegion

FILE: POEApi.Model/Item.cs
  type ItemType (line 9) | public enum ItemType : int
  type Rarity (line 18) | public enum Rarity : int
  class Item (line 27) | [DebuggerDisplay("{DebuggerDisplay,nq}")]
    method Item (line 81) | protected Item(JSONProxy.Item item)
    method getIconUrl (line 146) | private string getIconUrl(string url)
    method GetRarity (line 155) | private Rarity GetRarity(JSONProxy.Item item)
    method AssembleDescriptiveName (line 195) | protected virtual string AssembleDescriptiveName()
    method Clone (line 205) | public object Clone()

FILE: POEApi.Model/ItemBackgroundUrlBuilder.cs
  class ItemBackgroundUrlBuilder (line 7) | internal static class ItemBackgroundUrlBuilder
    method GetUrl (line 13) | public static string GetUrl(Item item)

FILE: POEApi.Model/ItemFactory.cs
  class ItemFactory (line 7) | internal class ItemFactory
    method Get (line 9) | public static Item Get(JSONProxy.Item item)
    method GetCurrency (line 87) | private static Item GetCurrency(JSONProxy.Item item)
    method FilterString (line 122) | private static string FilterString(string json)

FILE: POEApi.Model/ItemTradeInfo.cs
  class ItemTradeInfo (line 3) | public class ItemTradeInfo
    method ItemTradeInfo (line 14) | public ItemTradeInfo()
    method ItemTradeInfo (line 17) | public ItemTradeInfo(string buyout, string price, string currentOffer,...

FILE: POEApi.Model/JSONProxy/Account.cs
  class Account (line 5) | public class Account

FILE: POEApi.Model/JSONProxy/Stash.cs
  class Property (line 6) | public class Property
  class AdditionalProperty (line 13) | public class AdditionalProperty
  class Requirement (line 22) | public class Requirement
  class IncubatedDetails (line 29) | public class IncubatedDetails
  class Item (line 37) | public class Item
  class Socket (line 87) | public class Socket
  class Stash (line 93) | [JsonObject(MemberSerialization.OptOut)]
  class Inventory (line 101) | [JsonObject(MemberSerialization.OptOut)]
  class Colour (line 107) | public class Colour
  class Tab (line 114) | public class Tab

FILE: POEApi.Model/Leaguestone.cs
  class Leaguestone (line 5) | [DebuggerDisplay("{TypeLine} Charges: {Charges.ToString()}")]
    method Leaguestone (line 10) | public Leaguestone(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/LegionEmblem.cs
  class LegionEmblem (line 5) | public class LegionEmblem : Item, ILegion
    method LegionEmblem (line 7) | public LegionEmblem(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/LegionFaction.cs
  type LegionFaction (line 3) | public enum LegionFaction

FILE: POEApi.Model/LegionSplinter.cs
  class LegionSplinter (line 5) | public class LegionSplinter : Item, ILegion
    method LegionSplinter (line 7) | public LegionSplinter(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/Map.cs
  class Map (line 5) | public class Map : Item
    method Map (line 10) | public Map(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/Net.cs
  class Net (line 3) | public class Net : Currency
    method Net (line 5) | public Net(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/Offering.cs
  class Offering (line 3) | public class Offering : Item
    method Offering (line 5) | public Offering(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/OrbType.cs
  type OrbType (line 3) | public enum OrbType

FILE: POEApi.Model/POEModel.cs
  class POEModel (line 18) | public class POEModel
    method POEModel (line 38) | public POEModel()
    method Authenticate (line 43) | public bool Authenticate(string email, SecureString password, bool off...
    method GetAccountName (line 65) | public string GetAccountName(string realm)
    method GetProperObjectFromTransport (line 97) | private T GetProperObjectFromTransport<T>(Stream networkData)
    method instance_Throttled (line 122) | void instance_Throttled(object sender, ThottledEventArgs e)
    method GetTransport (line 128) | private ITransport GetTransport(string email, bool offline)
    method ForceRefresh (line 136) | public void ForceRefresh()
    method GetStash (line 141) | public Stash GetStash(int index, string league, string accountName, st...
    method LogNullStash (line 172) | private void LogNullStash(Stream stream, string errorPrefix)
    method GetStash (line 190) | public Stash GetStash(string league, string accountName, string realm)
    method GetAllTabs (line 235) | private Stash GetAllTabs(string league, string accountName, Stash stas...
    method GetCharacters (line 267) | public List<Character> GetCharacters(string realm)
    method GetInventory (line 272) | public List<Item> GetInventory(string characterName, bool forceRefresh...
    method GetImages (line 293) | public void GetImages(IEnumerable<Item> items)
    method LoadShaperElderImages (line 301) | private void LoadShaperElderImages(IEnumerable<Item> items)
    method GetImageWithEvents (line 315) | private void GetImageWithEvents(Item item)
    method GetImageWithEvents (line 328) | private void GetImageWithEvents(string name, string url)
    method GetImage (line 335) | public Stream GetImage(string url)
    method GetImage (line 340) | public IEnumerable<Stream> GetImage(Tab tab)
    method UpdateThread (line 349) | public bool UpdateThread(string threadID, string threadTitle, string t...
    method BumpThread (line 354) | public bool BumpThread(string threadId, string threadTitle)
    method GetItemName (line 359) | private static string GetItemName(Item item)
    method onStashLoaded (line 367) | private void onStashLoaded(POEEventState state, int index, int numberO...
    method onImageLoaded (line 373) | private void onImageLoaded(POEEventState state, string url)
    method onAuthenticate (line 379) | private void onAuthenticate(POEEventState state, string email, string ...

FILE: POEApi.Model/Property.cs
  class Property (line 7) | public class Property
    method Property (line 13) | internal Property(JSONProxy.Property property)
    method Sanitize (line 27) | private string Sanitize(JToken jToken)

FILE: POEApi.Model/Prophecy.cs
  class Prophecy (line 5) | public class Prophecy : Item
    method Prophecy (line 10) | internal Prophecy(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/ProxyMapper.cs
  class ProxyMapper (line 10) | internal class ProxyMapper
    method GetTabType (line 237) | public static TabType GetTabType(string type)
    method GetPropertyByName (line 248) | private static string GetPropertyByName(List<JSONProxy.Property> prope...
    method GetOrbType (line 261) | internal static OrbType GetOrbType(JSONProxy.Item item)
    method GetOrbType (line 266) | internal static OrbType GetOrbType(string name)
    method GetEssenceType (line 293) | internal static EssenceType GetEssenceType(JSONProxy.Item item)
    method GetEssenceType (line 298) | internal static EssenceType GetEssenceType(string name)
    method GetBreachType (line 313) | public static BreachType GetBreachType(JSONProxy.Item item)
    method GetLegionFaction (line 328) | public static LegionFaction GetLegionFaction(JSONProxy.Item item)
    method GetProperties (line 343) | internal static List<Property> GetProperties(List<JSONProxy.Property> ...
    method GetRequirements (line 348) | internal static List<Requirement> GetRequirements(List<JSONProxy.Requi...
    method GetQuality (line 356) | internal static int GetQuality(List<JSONProxy.Property> properties)
    method GetTabs (line 361) | internal static List<Tab> GetTabs(List<JSONProxy.Tab> tabs)
    method GetCharges (line 374) | public static ChargeInfo GetCharges(List<JSONProxy.Property> list)
    method GetNetTier (line 396) | public static int GetNetTier(List<JSONProxy.Property> properties)
    method GetGenus (line 405) | public static string GetGenus(List<JSONProxy.Property> properties)
    method GetGroup (line 410) | public static string GetGroup(List<JSONProxy.Property> properties)
    method GetFamily (line 415) | public static string GetFamily(List<JSONProxy.Property> properties)

FILE: POEApi.Model/QuestItem.cs
  class QuestItem (line 5) | public class QuestItem : Item
    method QuestItem (line 7) | public QuestItem(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/Requirement.cs
  class Requirement (line 5) | public class Requirement
    method Requirement (line 11) | internal Requirement(JSONProxy.Requirement proxy)

FILE: POEApi.Model/Resonator.cs
  class Resonator (line 3) | public class Resonator : Item
    method Resonator (line 5) | public Resonator(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/Scarab.cs
  class Scarab (line 5) | public class Scarab : Item
    method Scarab (line 7) | public Scarab(JSONProxy.Item item) : base(item)
    method GetScarabEffect (line 17) | private ScarabEffect GetScarabEffect()
    method GetScarabRank (line 26) | private ScarabRank GetScarabRank()
  type ScarabRank (line 36) | public enum ScarabRank
  type ScarabEffect (line 45) | public enum ScarabEffect

FILE: POEApi.Model/Settings.cs
  class Settings (line 12) | public static class Settings
    method Settings (line 36) | static Settings()
    method LoadBuyouts (line 72) | private static void LoadBuyouts()
    method LoadItemBuyouts (line 93) | private static Dictionary<string, ItemTradeInfo> LoadItemBuyouts()
    method LoadShopSettings (line 104) | private static void LoadShopSettings()
    method LoadItemFilterConfig (line 109) | private static void LoadItemFilterConfig()
    method CreateShopSetting (line 132) | private static ShopSetting CreateShopSetting(XElement shop)
    method TryGetValue (line 137) | private static string TryGetValue(XElement list, string key)
    method LoadGearTypeData (line 145) | private static void LoadGearTypeData()
    method GetChaosAmount (line 177) | private static double GetChaosAmount(XElement orb)
    method GetOrbAmount (line 182) | private static double GetOrbAmount(XElement orb)
    method GetStandardNameValue (line 187) | private static Dictionary<string, string> GetStandardNameValue(string ...
    method Save (line 192) | public static void Save()
    method SaveBuyouts (line 232) | public static void SaveBuyouts()
    method SaveTabBuyouts (line 245) | public static void SaveTabBuyouts()
    method SaveLists (line 258) | public static void SaveLists()
    method updateLists (line 264) | private static void updateLists()
    method SaveShopSettings (line 282) | public static bool SaveShopSettings()
    method SaveItemFilterConfig (line 319) | public static bool SaveItemFilterConfig()

FILE: POEApi.Model/Sextant.cs
  class Sextant (line 3) | public class Sextant : Item
    method Sextant (line 7) | public Sextant(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/SextantType.cs
  type SextantType (line 3) | public enum SextantType

FILE: POEApi.Model/ShopSetting.cs
  class ShopSetting (line 3) | public class ShopSetting

FILE: POEApi.Model/Socket.cs
  class Socket (line 3) | public class Socket
    method Socket (line 8) | internal Socket(JSONProxy.Socket s)
    method ToPobFormat (line 18) | public string ToPobFormat()

FILE: POEApi.Model/SocketableItem.cs
  class SocketableItem (line 5) | public abstract class SocketableItem : Item
    method SocketableItem (line 12) | protected SocketableItem(JSONProxy.Item item) : base(item)

FILE: POEApi.Model/StackInfo.cs
  class StackInfo (line 9) | [DebuggerDisplay("{Amount}/{MaxSize}")]
    method StackInfo (line 16) | internal StackInfo(int amount, int maxSize)
  class ChargeInfo (line 23) | public class ChargeInfo
    method ChargeInfo (line 28) | internal ChargeInfo(int charges, int maxCharges)
    method ToString (line 34) | public override string ToString()

FILE: POEApi.Model/Stash.cs
  class Stash (line 10) | public class Stash
    method Stash (line 20) | internal Stash(JSONProxy.Stash proxy)
    method ClearItems (line 37) | public void ClearItems()
    method Add (line 42) | public void Add(Stash stash)
    method AddCharacterTab (line 47) | public void AddCharacterTab(Tab tab, List<Item> characterItems)
    method RefreshAll (line 53) | public void RefreshAll(POEModel currentModel, string currentLeague, st...
    method RefreshUsedTabs (line 68) | public void RefreshUsedTabs(POEModel currentModel, string currentLeagu...
    method RefreshTab (line 115) | public void RefreshTab(POEModel currentModel, string currentLeague, in...
    method refreshCharacterTab (line 137) | private void refreshCharacterTab(POEModel currentModel, int tabId, str...
    method GetItemsByTab (line 149) | public List<Item> GetItemsByTab(int tabId)
    method GetTabNameByTabId (line 179) | public string GetTabNameByTabId(int tabID)
    method GetTabNameByInventoryId (line 184) | public string GetTabNameByInventoryId(string inventoryID)
    method buildItemsByTab (line 192) | private void buildItemsByTab()
    method refreshItemsByTabTab (line 214) | private void refreshItemsByTabTab(int tabId)
    method Get (line 226) | public List<T> Get<T>() where T : Item
    method GetTotal (line 231) | public double GetTotal(OrbType target)
    method GetTotalCurrencyDistribution (line 236) | public Dictionary<OrbType, double> GetTotalCurrencyDistribution(OrbTyp...
    method GetTotalCurrencyCount (line 241) | public Dictionary<OrbType, double> GetTotalCurrencyCount()
    method GetTotalGemDistribution (line 246) | public SortedDictionary<string, int> GetTotalGemDistribution()

FILE: POEApi.Model/Tab.cs
  type TabType (line 5) | public enum TabType
  class Tab (line 20) | [DebuggerDisplay("{DebuggerDisplay,nq}")]
    method Tab (line 33) | public Tab()
    method Tab (line 36) | public Tab(JSONProxy.Tab t)
    method GetUrl (line 48) | private string GetUrl(string url)

FILE: POEApi.Model/UnknownItem.cs
  class UnknownItem (line 3) | public class UnknownItem : Item
    method getDefaultItem (line 5) | private static JSONProxy.Item getDefaultItem() => new JSONProxy.Item();
    method UnknownItem (line 7) | public UnknownItem() : base(getDefaultItem())
    method UnknownItem (line 10) | public UnknownItem(JSONProxy.Item item) : base(item)
    method UnknownItem (line 15) | public UnknownItem(JSONProxy.Item item, string errorInformation) : thi...
    method AssembleDescriptiveName (line 20) | protected override string AssembleDescriptiveName()

FILE: POEApi.Transport/CachedTransport.cs
  class CachedTransport (line 10) | public class CachedTransport : ITransport
    method CachedTransport (line 20) | public CachedTransport(string email, ITransport innerTranport, bool of...
    method instance_Throttled (line 29) | private void instance_Throttled(object sender, ThottledEventArgs e)
    method Authenticate (line 35) | public bool Authenticate(string email, SecureString password)
    method GetAccountName (line 40) | public Stream GetAccountName(string realm)
    method GetStash (line 45) | public Stream GetStash(int index, string league, string accountName, s...
    method GetStash (line 62) | public Stream GetStash(int index, string league, string accountName, s...
    method GetImage (line 67) | public Stream GetImage(string url)
    method GetCharacters (line 90) | public Stream GetCharacters(string realm)
    method GetInventory (line 103) | public Stream GetInventory(string characterName, bool forceRefresh, st...
    method UpdateThread (line 117) | public bool UpdateThread(string threadID, string threadTitle, string t...
    method BumpThread (line 122) | public bool BumpThread(string threadID, string threadTitle)

FILE: POEApi.Transport/HttpTransport.cs
  class HttpTransport (line 16) | public class HttpTransport : ITransport
    type HttpMethod (line 18) | protected enum HttpMethod { GET, POST }
    method HttpTransport (line 50) | public HttpTransport(string login)
    method HttpTransport (line 57) | public HttpTransport(string login, string proxyUser, string proxyPassw...
    method instance_Throttled (line 66) | private void instance_Throttled(object sender, ThottledEventArgs e)
    method Authenticate (line 72) | public bool Authenticate(string email, SecureString password)
    method CloudFlareSessionIdLogin (line 88) | private void CloudFlareSessionIdLogin()
    method TraditionalSessionIdLogin (line 115) | private void TraditionalSessionIdLogin()
    method GetHttpRequest (line 126) | private HttpWebRequest GetHttpRequest(HttpMethod method, string url, b...
    method GetProxySettings (line 152) | private IWebProxy GetProxySettings()
    method ProcessProxySettings (line 160) | public IWebProxy ProcessProxySettings()
    method BuildHttpRequestAndGetResponse (line 168) | protected HttpWebResponse BuildHttpRequestAndGetResponse(HttpMethod me...
    method PerformHttpRequest (line 195) | protected MemoryStream PerformHttpRequest(HttpMethod method, string ur...
    method GetStash (line 206) | public Stream GetStash(int index, string league, string accountName, s...
    method GetStash (line 212) | public Stream GetStash(int index, string league, string accountName, s...
    method GetCharacters (line 217) | public Stream GetCharacters(string realm )
    method GetAccountName (line 222) | public Stream GetAccountName(string realm )
    method GetImage (line 228) | public Stream GetImage(string url)
    method GetInventory (line 235) | public Stream GetInventory(string characterName, bool forceRefresh, st...
    method GetMemoryStreamFromResponse (line 241) | private MemoryStream GetMemoryStreamFromResponse(HttpWebResponse respo...
    method UpdateThread (line 249) | public bool UpdateThread(string threadID, string threadTitle, string t...
    method BumpThread (line 278) | public bool BumpThread(string threadID, string threadTitle)
    method ValidateAndGetHash (line 309) | private string ValidateAndGetHash(string url, string threadTitle, stri...
    method GetThreadHash (line 321) | private string GetThreadHash(string url, string regex)
    method DownloadPageData (line 327) | private string DownloadPageData(string url)
  class Realm (line 337) | public class Realm

FILE: POEApi.Transport/ITransport.cs
  type ITransport (line 7) | public interface ITransport
    method Authenticate (line 9) | bool Authenticate(string email, SecureString password);
    method GetAccountName (line 10) | Stream GetAccountName(string realm);
    method GetStash (line 11) | Stream GetStash(int index, string league, string accountName, string r...
    method GetStash (line 12) | Stream GetStash(int index, string league, string accountName, string r...
    method GetImage (line 13) | Stream GetImage(string url);
    method GetCharacters (line 14) | Stream GetCharacters(string realm);
    method GetInventory (line 15) | Stream GetInventory(string characterName, bool forceRefresh, string ac...
    method UpdateThread (line 17) | bool UpdateThread(string threadID, string threadTitle, string threadTe...
    method BumpThread (line 18) | bool BumpThread(string threadID, string threadTitle);

FILE: POEApi.Transport/TaskThrottle.cs
  class TaskThrottle (line 7) | public class TaskThrottle
    method TaskThrottle (line 31) | public TaskThrottle(TimeSpan windowSize, int windowLimit, int simultan...
    method StartTask (line 39) | public void StartTask()
    method CompleteTask (line 75) | public void CompleteTask()
    method RemvoeExpiredTasks (line 84) | protected void RemvoeExpiredTasks()

FILE: Procurement/App.xaml.cs
  class App (line 8) | public partial class App : Application
    method App (line 10) | public App()
    method Current_DispatcherUnhandledException (line 15) | void Current_DispatcherUnhandledException(object sender, System.Window...
    method getEnvironementDetails (line 23) | private string getEnvironementDetails()

FILE: Procurement/ApplicationState.cs
  class ApplicationState (line 11) | public static class ApplicationState
    method ApplicationState (line 28) | static ApplicationState()
    method SetDefaults (line 76) | public static void SetDefaults()
    method InitializeFont (line 95) | public static void InitializeFont(byte[] fontBytes)

FILE: Procurement/Controls/AbstractStashTabControl.cs
  class AbstractStashTabControl (line 15) | public abstract class AbstractStashTabControl : UserControl, IStashControl
    method AbstractStashTabControl (line 29) | public AbstractStashTabControl()
    method AbstractStashTabControl (line 34) | public AbstractStashTabControl(int tabNumber)
    method RefreshTab (line 45) | public virtual void RefreshTab(string accountName)
    method SetPremiumTabBorderColour (line 61) | public void SetPremiumTabBorderColour()
    method ForceUpdate (line 77) | public virtual void ForceUpdate()
    method Control_Loaded (line 97) | public void Control_Loaded(object sender, RoutedEventArgs e)
    method SetBackground (line 107) | protected void SetBackground(Grid childGrid, Item item)
    method SetItemBackground (line 124) | private static void SetItemBackground(Grid childGrid, Item item)
    method UpdateStashByLocation (line 139) | private void UpdateStashByLocation()
    method GetImage (line 157) | private ItemDisplayViewModel GetImage(Item item)
    method Refresh (line 162) | public virtual void Refresh()
    method GetTabType (line 170) | private TabType GetTabType()
    method IsFilterApplicableToItem (line 184) | private bool IsFilterApplicableToItem(Item item)

FILE: Procurement/Controls/Category.cs
  class Category (line 7) | internal class Category : ObservableBase
    method Category (line 9) | public Category()
    method filters_CollectionChanged (line 15) | void filters_CollectionChanged(object sender, System.Collections.Speci...

FILE: Procurement/Controls/CharacterSelector.xaml.cs
  class CharacterSelector (line 8) | public partial class CharacterSelector : UserControl
    method CharacterSelector (line 10) | public CharacterSelector()
    method ListBox_SelectionChanged (line 24) | private void ListBox_SelectionChanged(object sender, SelectionChangedE...

FILE: Procurement/Controls/CurrencyStashTab.xaml.cs
  class CurrencyStashTab (line 11) | public partial class CurrencyStashTab : AbstractStashTabControl
    method CurrencyStashTab (line 15) | public CurrencyStashTab(int tabNumber) : base(tabNumber)
    method CurrencyStashTab (line 30) | public CurrencyStashTab(int tabNumber, List<IFilter> list) : this(tabN...

FILE: Procurement/Controls/Equipped.xaml.cs
  class Equipped (line 13) | public partial class Equipped : UserControl
    method Equipped (line 32) | public Equipped()
    method OnCharacterChanged (line 41) | public static void OnCharacterChanged(DependencyObject d, DependencyPr...
    method Equipped_PreviewKeyDown (line 50) | void Equipped_PreviewKeyDown(object sender, KeyEventArgs e)
    method getAbolutePositions (line 59) | private Dictionary<string, Tuple<int, int>> getAbolutePositions()
    method Equipped_Loaded (line 87) | void Equipped_Loaded(object sender, RoutedEventArgs e)
    method render (line 93) | private void render()
    method getImage (line 137) | private UIElement getImage(Item item)
    method getBorder (line 142) | private Border getBorder()

FILE: Procurement/Controls/EssenceStashTab.xaml.cs
  class EssenceStashTab (line 11) | public partial class EssenceStashTab : AbstractStashTabControl
    method EssenceStashTab (line 15) | public EssenceStashTab(int tabNumber) : base(tabNumber)
    method EssenceStashTab (line 30) | public EssenceStashTab(int tabNumber, List<IFilter> list) : this(tabNu...

FILE: Procurement/Controls/ForumExport.xaml.cs
  class ForumExport (line 7) | public partial class ForumExport : UserControl
    method ForumExport (line 11) | public ForumExport()
    method checkBox_Checked (line 17) | void checkBox_Checked(object sender, RoutedEventArgs e)
    method ToggleAll (line 24) | private void ToggleAll(object sender, RoutedEventArgs e)

FILE: Procurement/Controls/ForumExportTemplateReader.cs
  class ForumExportTemplateReader (line 12) | internal class ForumExportTemplateReader
    method GetTemplate (line 19) | internal static string GetTemplate(string templateName)
    method SaveTemplate (line 51) | internal static void SaveTemplate(string Template)
    method saveTemplate (line 56) | private static void saveTemplate(string defaultTemplate)
    method getDefaultTemplate (line 69) | private static string getDefaultTemplate()
    method getTemplateFromDisk (line 78) | private static string getTemplateFromDisk(string templateName)

FILE: Procurement/Controls/ForumTemplate.xaml.cs
  class ForumTemplate (line 7) | public partial class ForumTemplate : UserControl
    method ForumTemplate (line 9) | public ForumTemplate()
    method Button_Click (line 17) | private void Button_Click(object sender, System.Windows.RoutedEventArg...
    method OnPaste (line 22) | private void OnPaste(object sender, DataObjectPastingEventArgs e)

FILE: Procurement/Controls/FragmentStashTab.xaml.cs
  class FragmentStashTab (line 10) | public partial class FragmentStashTab : AbstractStashTabControl
    method FragmentStashTab (line 14) | public FragmentStashTab(int tabNumber) : base(tabNumber)
    method FragmentStashTab (line 29) | public FragmentStashTab(int tabNumber, List<IFilter> list) : this(tabN...

FILE: Procurement/Controls/Inventory.xaml.cs
  class Inventory (line 12) | public partial class Inventory : UserControl
    method Inventory (line 14) | public Inventory()
    method Inventory_Loaded (line 33) | void Inventory_Loaded(object sender, RoutedEventArgs e)
    method refresh (line 41) | private void refresh(string accountName)
    method OnCharacterChanged (line 48) | public static void OnCharacterChanged(DependencyObject d, DependencyPr...
    method render (line 76) | private void render()
    method getImage (line 124) | private UIElement getImage(Item item)
    method getBorder (line 129) | private Border getBorder()
    method setBackround (line 137) | private void setBackround(Grid childGrid, Item item)
    method search (line 147) | private bool search(Item item)

FILE: Procurement/Controls/ItemDisplay.xaml.cs
  class ItemDisplay (line 17) | public partial class ItemDisplay : UserControl
    method ItemDisplay (line 44) | public ItemDisplay()
    method ItemDisplay_MouseRightButtonUp (line 65) | private void ItemDisplay_MouseRightButtonUp(object sender, MouseButton...
    method ClosePopups (line 77) | public static void ClosePopups()
    method ItemDisplay_Loaded (line 82) | private void ItemDisplay_Loaded(object sender, RoutedEventArgs e)
    method resyncText (line 119) | private void resyncText()
    method BindSocketPopup (line 162) | private void BindSocketPopup(ItemDisplayViewModel vm)
    method getContextMenu (line 219) | private ContextMenu getContextMenu()
    method buyoutControl_Update (line 247) | private void buyoutControl_Update(ItemTradeInfo info)
    method updateBuyout (line 256) | private void updateBuyout(ItemTradeInfo info)
    method buyoutControl_SaveImageClicked (line 270) | private void buyoutControl_SaveImageClicked()
    method buyoutView_SaveClicked (line 275) | private void buyoutView_SaveClicked(string amount, string orbType)
    method closeOthersButNot (line 288) | public static void closeOthersButNot(Popup current)

FILE: Procurement/Controls/ItemHover.xaml.cs
  class ItemHover (line 5) | public partial class ItemHover : UserControl
    method ItemHover (line 7) | public ItemHover()

FILE: Procurement/Controls/ItemHoverHeader.xaml.cs
  class ItemHoverHeader (line 20) | public partial class ItemHoverHeader : UserControl
    method ItemHoverHeader (line 22) | public ItemHoverHeader()

FILE: Procurement/Controls/ItemHoverImage.xaml.cs
  class ItemHoverImage (line 5) | public partial class ItemHoverImage : UserControl
    method ItemHoverImage (line 7) | public ItemHoverImage()

FILE: Procurement/Controls/LeagueSelection.xaml.cs
  class LeagueSelection (line 7) | public partial class LeagueSelection : UserControl
    method LeagueSelection (line 9) | public LeagueSelection()
    method ComboBox_SelectionChanged (line 14) | private void ComboBox_SelectionChanged(object sender, SelectionChanged...

FILE: Procurement/Controls/RecipeResults.xaml.cs
  class RecipeResults (line 22) | public partial class RecipeResults : UserControl
    method RecipeResults (line 24) | public RecipeResults()
    method RadioButton_Checked (line 29) | private void RadioButton_Checked(object sender, RoutedEventArgs e)

FILE: Procurement/Controls/SetBuyoutView.xaml.cs
  class SetBuyoutView (line 9) | public partial class SetBuyoutView : UserControl
    method SetBuyoutView (line 13) | public SetBuyoutView(Item item)
    method Save_Clicked (line 27) | public void Save_Clicked(object sender, System.Windows.RoutedEventArgs e)
    method SaveImage_Click (line 32) | public void SaveImage_Click(object sender, System.Windows.RoutedEventA...
    method Timestamp_Click (line 37) | public void Timestamp_Click(object sender, System.Windows.RoutedEventA...
    method SetBuyoutInfo (line 42) | public void SetBuyoutInfo(ItemTradeInfo buyoutInfo)
    method TextBox_KeyDown (line 47) | private void TextBox_KeyDown(object sender, KeyEventArgs e)

FILE: Procurement/Controls/SetTabBuyoutView.xaml.cs
  class SetTabBuyoutView (line 7) | public partial class SetTabBuyoutView : Window
    method SetTabBuyoutView (line 14) | public SetTabBuyoutView(PricingInfo buyoutInfo, string tabName)
    method OnMouseLeftButtonDown (line 27) | protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
    method Save_Clicked (line 33) | public void Save_Clicked(object sender, System.Windows.RoutedEventArgs e)
    method Cancel_Click (line 40) | public void Cancel_Click(object sender, System.Windows.RoutedEventArgs e)

FILE: Procurement/Controls/StashTabControl.xaml.cs
  class StashTabControl (line 13) | public partial class StashTabControl : AbstractStashTabControl
    method StashTabControl (line 18) | public StashTabControl(int tabNumber) : base(tabNumber)
    method StashTabControl (line 27) | public StashTabControl(int tabNumber, List<IFilter> list) : this(tabNu...
    method ForceUpdate (line 32) | public override void ForceUpdate()
    method RefreshTab (line 42) | public override void RefreshTab(string accountName)
    method Refresh (line 49) | public override void Refresh()
    method Render (line 56) | private void Render()

FILE: Procurement/Controls/TradeSettings.xaml.cs
  class BuyoutSettings (line 7) | public partial class BuyoutSettings : UserControl
    method BuyoutSettings (line 9) | public BuyoutSettings()
    method Hyperlink_Click (line 15) | private void Hyperlink_Click(object sender, System.Windows.RoutedEvent...

FILE: Procurement/Interfaces/IStashControl.cs
  type IStashControl (line 6) | public interface IStashControl
    method RefreshTab (line 8) | void RefreshTab(string accountName);
    method ForceUpdate (line 13) | void ForceUpdate();

FILE: Procurement/MainWindow.xaml.cs
  class MainWindow (line 12) | public partial class MainWindow : Window
    method MainWindow (line 17) | public MainWindow()
    method initLayout (line 37) | private void initLayout()
    method MainWindow_MouseLeftButtonDown (line 51) | void MainWindow_MouseLeftButtonDown(object sender, MouseButtonEventArg...
    method minimize_Click (line 57) | private void minimize_Click(object sender, RoutedEventArgs e)
    method exit_Click (line 62) | private void exit_Click(object sender, RoutedEventArgs e)
    method WndProc (line 67) | private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lPa...

FILE: Procurement/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Procurement/Properties/Settings.Designer.cs
  class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: Procurement/RelayCommand.cs
  class RelayCommand (line 7) | public class RelayCommand : ICommand
    method RelayCommand (line 18) | public RelayCommand(Action<object> execute)
    method RelayCommand (line 23) | public RelayCommand(Action<object> execute, Predicate<object> canExecute)
    method CanExecute (line 35) | [DebuggerStepThrough]
    method Execute (line 47) | public void Execute(object parameter)

FILE: Procurement/Utility/AlphaHittestedImage.cs
  class AlphaHittestedImage (line 12) | public class AlphaHittestedImage : Image
    method HitTestCore (line 14) | protected override HitTestResult HitTestCore(PointHitTestParameters hi...
    method GetAlphaColor (line 23) | private byte GetAlphaColor(Point hitPoint)

FILE: Procurement/Utility/CharacterTabInjector.cs
  class CharacterInventory (line 9) | public class CharacterInventory
    method CharacterInventory (line 14) | public CharacterInventory(Character character, List<Item> inventory)
  class CharacterTabInjector (line 21) | public class CharacterTabInjector
    method CharacterTabInjector (line 30) | public CharacterTabInjector()
    method Add (line 35) | public void Add(Character character, List<Item> inventory)
    method Inject (line 40) | internal void Inject()
    method inject (line 46) | private void inject(Character character, IEnumerable<Item> inventory)
    method getTabID (line 69) | private static int getTabID(Character character)

FILE: Procurement/Utility/ClientLogFileEventArgs.cs
  class ClientLogFileEventArgs (line 5) | public class ClientLogFileEventArgs : EventArgs
    method ClientLogFileEventArgs (line 11) | public ClientLogFileEventArgs(DateTime eventDateTime, long eventTimest...

FILE: Procurement/Utility/ClientLogFileWatcher.cs
  class ClientLogFileWatcher (line 10) | class ClientLogFileWatcher
    method Initialize (line 67) | protected void Initialize()
    method Start (line 99) | internal void Start()
    method Stop (line 116) | internal void Stop()
    method ReadClientLogFile (line 124) | protected void ReadClientLogFile()
    method OnFileChanged (line 183) | protected static void OnFileChanged(object source, FileSystemEventArgs e)

FILE: Procurement/Utility/ExportPreferenceManager.cs
  class ExportPreferenceManager (line 11) | internal class ExportPreferenceManager
    method ExportPreferenceManager (line 28) | internal ExportPreferenceManager()
    method SetTabsAndGetsSelected (line 36) | internal List<int> SetTabsAndGetsSelected(List<TabInfo> tabs)
    method UpdateTabSelection (line 53) | internal void UpdateTabSelection(TabInfo tabInfo)
    method savePreferences (line 71) | private void savePreferences()
    method loadPreferences (line 89) | private void loadPreferences()

FILE: Procurement/Utility/ItemHoverRenderer.cs
  class ItemHoverRenderer (line 15) | internal class ItemHoverRenderer
    method SaveToDisk (line 19) | internal static void SaveToDisk(Item item, Dispatcher dispatcher)
    method createSaveFolder (line 67) | private static void createSaveFolder()
    method displaySaveDialog (line 73) | private static bool displaySaveDialog()

FILE: Procurement/Utility/PoeTradeOnlineHelper.cs
  class PoeTradeOnlineHelper (line 14) | class PoeTradeOnlineHelper
    method GetLastInputInfo (line 23) | [DllImport("user32.dll")]
    type LASTINPUTINFO (line 26) | [StructLayout(LayoutKind.Sequential)]
    method PoeTradeOnlineHelper (line 36) | private PoeTradeOnlineHelper()
    method RefreshOnlineStatus (line 55) | private void RefreshOnlineStatus()
    method SetOnline (line 81) | private void SetOnline()
    method SetOffline (line 91) | private void SetOffline()
    method GetIdleTime (line 101) | private TimeSpan GetIdleTime()
    method Start (line 113) | internal void Start()
    method Stop (line 135) | internal void Stop()

FILE: Procurement/Utility/StashHelper.cs
  class StashHelper (line 12) | internal class StashHelper
    method GenerateTabImage (line 17) | internal static Image GenerateTabImage(Tab tab, bool mouseOver)
    method buildImage (line 36) | private static void buildImage(Tab tab, int offset, string key)

FILE: Procurement/Utility/VersionChecker.cs
  class VersionChecker (line 11) | internal class VersionChecker
    method CheckForUpdates (line 14) | public static void CheckForUpdates()
    method client_DownloadStringCompleted (line 40) | private static void client_DownloadStringCompleted(object sender, Down...
    method handleException (line 62) | private static void handleException(Exception ex)

FILE: Procurement/View/AboutView.xaml.cs
  class AboutView (line 5) | public partial class AboutView : UserControl, IView
    method AboutView (line 7) | public AboutView()
    method DonateButton_Click (line 18) | private void DonateButton_Click(object sender, System.Windows.RoutedEv...

FILE: Procurement/View/BindableRichTextBox.cs
  class BindableRichTextBox (line 7) | public class BindableRichTextBox : RichTextBox
    method OnDocumentChanged (line 24) | public static void OnDocumentChanged(DependencyObject obj,

FILE: Procurement/View/Block.xaml.cs
  class Block (line 20) | public partial class Block : UserControl
    method Block (line 22) | public Block()

FILE: Procurement/View/Converters/CharacterToImageConverter.cs
  class CharacterToImageConverter (line 8) | public class CharacterToImageConverter : IValueConverter
    method Convert (line 11) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 23) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/CharacterToLevelConverter.cs
  class CharacterToLevelConverter (line 10) | public class CharacterToLevelConverter : IValueConverter
    method Convert (line 12) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 18) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/CurrencyCraftingSlotScalingConverter.cs
  class CurrencyCraftingSlotScalingConverter (line 8) | public class CurrencyCraftingSlotScalingConverter : IValueConverter
    method Convert (line 16) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 32) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/FilterListToNameConverter.cs
  class FilterListToNameConverter (line 8) | public class FilterListToNameConverter : IValueConverter
    method Convert (line 10) | public object Convert(object value, System.Type targetType, object par...
    method ConvertBack (line 16) | public object ConvertBack(object value, System.Type targetType, object...

FILE: Procurement/View/Converters/ItemDisplayConverter.cs
  class ItemDisplayConverter (line 12) | public class ItemDisplayConverter : IValueConverter
    method Convert (line 14) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 20) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/ItemExplicitModsToFormattedRunConverter.cs
  class ItemExplicitModsToFormattedRunConverter (line 14) | public class ItemExplicitModsToFormattedRunConverter : IValueConverter
    method Convert (line 16) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 22) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/ItemPropertyToFormattedRunConverter.cs
  class ItemPropertyToFormattedRunConverter (line 13) | public class ItemPropertyToFormattedRunConverter : IValueConverter
    method Convert (line 15) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 21) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/ItemRequirementToFormattedRunConverter.cs
  class ItemRequirementToFormattedRunConverter (line 14) | public class ItemRequirementToFormattedRunConverter : IValueConverter
    method Convert (line 16) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 52) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/ItemToColorBrushConverter.cs
  class ItemToColorBrushConverter (line 10) | public class ItemToColorBrushConverter : IValueConverter
    method Convert (line 14) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 57) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/ItemToItemHoverSymbolPath.cs
  class ItemToItemHoverSymbolPath (line 9) | public class ItemToItemHoverSymbolPath : IValueConverter
    method Convert (line 13) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 45) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/ItemToItemHoverSymbolVisibility.cs
  class ItemToItemHoverSymbolVisibility (line 10) | public class ItemToItemHoverSymbolVisibility : IValueConverter
    method Convert (line 12) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 28) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/ObjectInListMultiConverter.cs
  class ObjectInListMultiConverter (line 11) | class ObjectInListMultiConverter : IMultiValueConverter
    method Convert (line 13) | public object Convert(object[] values, Type targetType, object paramet...
    method ConvertBack (line 20) | public object[] ConvertBack(object value, Type[] targetTypes, object p...

FILE: Procurement/View/Converters/RecipeDescriptionConverter.cs
  class RecipeDescriptionConverter (line 9) | public class RecipeDescriptionConverter : IValueConverter
    method Convert (line 11) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 18) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/ResultMatchConverter.cs
  class ResultMatchConverter (line 13) | public class ResultMatchConverter : IValueConverter
    method ResultMatchConverter (line 16) | public ResultMatchConverter()
    method Convert (line 34) | public object Convert(object value, Type targetType, object parameter,...
    method getBrush (line 54) | private LinearGradientBrush getBrush(decimal match)
    method ConvertBack (line 60) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/Converters/TabIDToStashControlConverter.cs
  class TabIDToStashControlConverter (line 14) | public class TabIDToStashControlConverter : IValueConverter
    method Convert (line 16) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 26) | public object ConvertBack(object value, Type targetType, object parame...
  class TabIDToStashControlFiltered (line 32) | public class TabIDToStashControlFiltered : IValueConverter
    method Convert (line 37) | public object Convert(object value, Type targetType, object parameter,...
    method getKey (line 71) | private string getKey(Item item)
    method getImage (line 77) | private Image getImage(Tab tab, bool mouseOver)
    method ConvertBack (line 82) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/IViewModel.cs
  type IView (line 5) | public interface IView

FILE: Procurement/View/InventoryView.xaml.cs
  class InventoryView (line 6) | public partial class InventoryView : IView
    method InventoryView (line 8) | public InventoryView()

FILE: Procurement/View/ItemExplicitModsToFormattedRunConverter.cs
  class ItemExplicitModsToFormattedRunConverter (line 14) | public class ItemExplicitModsToFormattedRunConverter : IValueConverter
    method Convert (line 16) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 22) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/ItemPropertyToFormattedRunConverter.cs
  class ItemPropertyToFormattedRunConverter (line 13) | public class ItemPropertyToFormattedRunConverter : IValueConverter
    method Convert (line 15) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 21) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/ItemRequirementToFormattedRunConverter.cs
  class ItemRequirementToFormattedRunConverter (line 14) | public class ItemRequirementToFormattedRunConverter : IValueConverter
    method Convert (line 16) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 39) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/ItemToColorBrushConverter.cs
  class ItemToColorBrushConverter (line 11) | public class ItemToColorBrushConverter : IValueConverter
    method Convert (line 13) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 49) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/LoadingAnimation.xaml.cs
  class LoadingAnimation (line 20) | public partial class LoadingAnimation : UserControl
    method LoadingAnimation (line 22) | public LoadingAnimation()

FILE: Procurement/View/LoginView.xaml.cs
  class LoginView (line 9) | public partial class LoginView : UserControl, IView
    method LoginView (line 11) | public LoginView()
    method Login_Click (line 22) | private void Login_Click(object sender, RoutedEventArgs e)
    method Offline_Click (line 27) | private void Offline_Click(object sender, RoutedEventArgs e)
    method sessionidQ_MouseLeftButtonDown (line 32) | private void sessionidQ_MouseLeftButtonDown(object sender, System.Wind...
    method sessionidQ_MouseLeftButtonUp (line 39) | private void sessionidQ_MouseLeftButtonUp(object sender, System.Window...

FILE: Procurement/View/RecipeView.xaml.cs
  class RecipeView (line 21) | public partial class RecipeView : UserControl, IView
    method RecipeView (line 23) | public RecipeView()

FILE: Procurement/View/RefreshView.xaml.cs
  class RefreshView (line 13) | public partial class RefreshView : UserControl
    method RefreshView (line 17) | public RefreshView()
    method RefreshAllTabs (line 22) | public void RefreshAllTabs()
    method RefreshUsedTabs (line 27) | public void RefreshUsedTabs()
    method RefreshTabs (line 32) | public void RefreshTabs(bool refreshAllTabs)
    method model_StashLoading (line 74) | private void model_StashLoading(POEApi.Model.POEModel sender, POEApi.M...
    method model_Throttled (line 79) | void model_Throttled(object sender, ThottledEventArgs e)
    method update (line 86) | private void update(string message, POEEventArgs e)

FILE: Procurement/View/SettingsView.xaml.cs
  class SettingsView (line 8) | public partial class SettingsView : UserControl, IView
    method SettingsView (line 10) | public SettingsView()
    method CurrencyGrid_RowEditEnding (line 21) | private void CurrencyGrid_RowEditEnding(object sender, DataGridRowEdit...
    method AboutButton_Click (line 26) | private void AboutButton_Click(object sender, RoutedEventArgs e)
    method LeagueCheckBox_Checked (line 31) | private void LeagueCheckBox_Checked(object sender, RoutedEventArgs e)
    method LeagueCheckBox_Unchecked (line 37) | private void LeagueCheckBox_Unchecked(object sender, RoutedEventArgs e)
    method CharacterCheckBox_Checked (line 43) | private void CharacterCheckBox_Checked(object sender, RoutedEventArgs e)
    method CharacterCheckBox_Unchecked (line 49) | private void CharacterCheckBox_Unchecked(object sender, RoutedEventArg...
    method recipeTab_Checked (line 55) | private void recipeTab_Checked(object sender, RoutedEventArgs e)
    method recipeTab_Unchecked (line 60) | private void recipeTab_Unchecked(object sender, RoutedEventArgs e)

FILE: Procurement/View/StashView.xaml.cs
  class StashView (line 7) | public partial class StashView : UserControl, IView
    method StashView (line 9) | public StashView()
    method CheckBox_Checked (line 20) | private void CheckBox_Checked(object sender, System.Windows.RoutedEven...
    method AdvancedSearchFilter_KeyUp (line 39) | private void AdvancedSearchFilter_KeyUp(object sender, System.Windows....
    method HeaderPanel_OnPreviewMouseWheel (line 63) | private void HeaderPanel_OnPreviewMouseWheel(object sender, MouseWheel...

FILE: Procurement/View/TradingView.xaml.cs
  class TradingView (line 6) | public partial class TradingView : UserControl, IView
    method TradingView (line 8) | public TradingView()

FILE: Procurement/View/VisibilityConverter.cs
  class VisibilityConverter (line 9) | public class VisibilityConverter : IValueConverter
    method Convert (line 11) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 66) | public object ConvertBack(object value, Type targetType, object parame...

FILE: Procurement/View/VisualTreeHelper.cs
  class VisualTreeHelper (line 3) | public static class VisualTreeHelper
    method GetVisualChildren (line 11) | private static void GetVisualChildren<T>(DependencyObject current, Col...
    method GetVisualChildren (line 33) | public static Collection<T> GetVisualChildren<T>(DependencyObject curr...
    method GetVisualChild (line 54) | public static T GetVisualChild<T, P>(P templatedParent)

FILE: Procurement/ViewModel/AdvancedSearchCategory.cs
  class AdvancedSearchCategory (line 8) | public class AdvancedSearchCategory
    method AdvancedSearchCategory (line 10) | public AdvancedSearchCategory(string key, string value)

FILE: Procurement/ViewModel/Cache/BitmapCache.cs
  class BitmapCache (line 11) | public class BitmapCache
    method BitmapCache (line 21) | public BitmapCache(Func<string, Stream> imageRetriveFunc)
    method GetByLocalUrl (line 45) | public BitmapImage GetByLocalUrl(string url)
    method CreateBitmapImage (line 61) | private static BitmapImage CreateBitmapImage(Stream stream)
    method CreateBitmapImage (line 74) | private static BitmapImage CreateBitmapImage(string url)

FILE: Procurement/ViewModel/DisplayModeStrategy/DisplayModeFactory.cs
  class DisplayModeFactory (line 6) | internal static class DisplayModeFactory
    method Create (line 8) | public static IDisplayModeStrategy Create(Property property)

FILE: Procurement/ViewModel/DisplayModeStrategy/DisplayModeStrategyBase.cs
  class DisplayModeStrategyBase (line 8) | internal abstract class DisplayModeStrategyBase : IDisplayModeStrategy
    method DisplayModeStrategyBase (line 12) | public DisplayModeStrategyBase(Property property)
    method Get (line 26) | public abstract Block Get();

FILE: Procurement/ViewModel/DisplayModeStrategy/IDisplayModeStrategy.cs
  type IDisplayModeStrategy (line 6) | internal interface IDisplayModeStrategy
    method Get (line 8) | Block Get();

FILE: Procurement/ViewModel/DisplayModeStrategy/NamePlusValueStrategy.cs
  class NamePlusValueStrategy (line 8) | internal class NamePlusValueStrategy : DisplayModeStrategyBase
    method NamePlusValueStrategy (line 10) | public NamePlusValueStrategy(Property property)
    method Get (line 14) | public override Block Get()

FILE: Procurement/ViewModel/DisplayModeStrategy/StringFormatStrategy.cs
  class StringFormatStrategy (line 8) | internal class StringFormatStrategy : DisplayModeStrategyBase
    method StringFormatStrategy (line 10) | public StringFormatStrategy(Property property)
    method Get (line 14) | public override Block Get()

FILE: Procurement/ViewModel/DisplayModeStrategy/ValuesPlusNameStrategy.cs
  class ValuesPlusNameStrategy (line 8) | class ValuesPlusNameStrategy : DisplayModeStrategyBase
    method ValuesPlusNameStrategy (line 10) | public ValuesPlusNameStrategy(Property property)
    method Get (line 14) | public override Block Get()

FILE: Procurement/ViewModel/Filters/FilterGroup.cs
  type FilterGroup (line 3) | public enum FilterGroup

FILE: Procurement/ViewModel/Filters/ForumExport/AccurayFilter.cs
  class AccurayFilter (line 8) | internal class AccurayFilter : StatFilter
    method AccurayFilter (line 15) | public AccurayFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/AllElementalResistances.cs
  class AllElementalResistances (line 3) | internal class AllElementalResistances : StatFilter
    method AllElementalResistances (line 10) | public AllElementalResistances()

FILE: Procurement/ViewModel/Filters/ForumExport/AllGemsFilter.cs
  class AllGemsFilter (line 6) | public class AllGemsFilter : IFilter
    method Applicable (line 28) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/AllMicrotransactions.cs
  class AllMicrotransactions (line 6) | internal class AllMicrotransactions : IFilter
    method Applicable (line 23) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/AndFilter.cs
  class AndFilter (line 6) | public class AndFilter : IFilter
    method AndFilter (line 15) | public AndFilter(params IFilter[] filters)
    method Applicable (line 36) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/AtlasFragmentFilter.cs
  class AtlasFragmentFilter (line 3) | public class AtlasFragmentFilter : TypeLineFilter
    method AtlasFragmentFilter (line 5) | public AtlasFragmentFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/AttackSpeed.cs
  class AttackSpeed (line 3) | internal class AttackSpeed : StatFilter
    method AttackSpeed (line 10) | public AttackSpeed()

FILE: Procurement/ViewModel/Filters/ForumExport/AuraGemsFilter.cs
  class AuraGemsFilter (line 3) | internal class AuraGemsFilter : GemCategoryFilter
    method AuraGemsFilter (line 5) | public AuraGemsFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/BuyoutFilter.cs
  class BuyoutFilter (line 9) | internal class BuyoutFilter : IFilter
    method BuyoutFilter (line 12) | public BuyoutFilter(string buyoutValue)
    method Applicable (line 36) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/CastSpeed.cs
  class CastSpeed (line 3) | internal class CastSpeed : StatFilter
    method CastSpeed (line 10) | public CastSpeed()

FILE: Procurement/ViewModel/Filters/ForumExport/CategoryManager.cs
  class CategoryManager (line 10) | public static class CategoryManager
    method CategoryManager (line 15) | static CategoryManager()
    method GetAvailableCategories (line 24) | public static List<AdvancedSearchCategory> GetAvailableCategories()
    method GetCategory (line 35) | public static IEnumerable<IFilter> GetCategory(string category)
    method initializeUserCategories (line 40) | private static void initializeUserCategories()
    method GetAvailableFilters (line 46) | public static List<IFilter> GetAvailableFilters()
    method getAvailableFilters (line 51) | private static List<IFilter> getAvailableFilters()
    method initializeBaseCategories (line 63) | private static void initializeBaseCategories()

FILE: Procurement/ViewModel/Filters/ForumExport/ChaosResistance.cs
  class ChaosResistance (line 3) | internal class ChaosResistance : StatFilter
    method ChaosResistance (line 10) | public ChaosResistance()

FILE: Procurement/ViewModel/Filters/ForumExport/CharacterAttributeFilters.cs
  class StrengthFilter (line 3) | class StrengthFilter : StatFilter
    method StrengthFilter (line 10) | public StrengthFilter()
  class IntelligenceFilter (line 16) | class IntelligenceFilter : StatFilter
    method IntelligenceFilter (line 23) | public IntelligenceFilter()
  class DexterityFilter (line 28) | class DexterityFilter : StatFilter
    method DexterityFilter (line 35) | public DexterityFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/ColdResistance.cs
  class ColdResistance (line 3) | internal class ColdResistance : OrStatFilter
    method ColdResistance (line 10) | public ColdResistance()

FILE: Procurement/ViewModel/Filters/ForumExport/CorruptedGemFilter.cs
  class CorruptedGemFilter (line 6) | internal class CorruptedGemFilter : IFilter
    method Applicable (line 28) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/CraftedModFilter.cs
  class CraftedModFilter (line 9) | public class CraftedModFilter : IFilter
    method Applicable (line 31) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/CritChanceFilter.cs
  class CritChanceFilter (line 8) | public class CritChanceFilter : ExplicitModBase
    method CritChanceFilter (line 10) | public CritChanceFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/CurrencyFilter.cs
  class CurrencyFilter (line 6) | public class CurrencyFilter : IFilter
    method Applicable (line 28) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/CurseGemFilter.cs
  class CurseGemFilter (line 3) | class CurseGemFilter : GemCategoryFilter
    method CurseGemFilter (line 5) | public CurseGemFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/DamageChaos.cs
  class DamageChaos (line 3) | internal class DamageChaos : StatFilter
    method DamageChaos (line 10) | public DamageChaos()

FILE: Procurement/ViewModel/Filters/ForumExport/DamageCold.cs
  class DamageCold (line 3) | internal class DamageCold : StatFilter
    method DamageCold (line 10) | public DamageCold()

FILE: Procurement/ViewModel/Filters/ForumExport/DamageFire.cs
  class DamageFire (line 3) | internal class DamageFire : StatFilter
    method DamageFire (line 10) | public DamageFire()

FILE: Procurement/ViewModel/Filters/ForumExport/DamageLightning.cs
  class DamageLightning (line 3) | internal class DamageLightning: StatFilter
    method DamageLightning (line 10) | public DamageLightning()

FILE: Procurement/ViewModel/Filters/ForumExport/DamageTriple.cs
  class DamageTriple (line 7) | internal class DamageTriple : IFilter
    method DamageTriple (line 16) | public DamageTriple()
    method Applicable (line 38) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/DivineVesselFilter.cs
  class DivineVesselFilter (line 5) | public class DivineVesselFilter : IFilter
    method Applicable (line 11) | public bool Applicable(Item item)
  class OfferingFilter (line 17) | public class OfferingFilter : IFilter
    method Applicable (line 23) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/DropOnlyGemFilter.cs
  class DropOnlyGemFilter (line 9) | internal class DropOnlyGemFilter : IFilter
    method DropOnlyGemFilter (line 18) | public DropOnlyGemFilter()
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/DualRes.cs
  class DualResistances (line 8) | public class DualResistances : ResistanceBase, IFilter
    method Applicable (line 30) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/ElderItemFilter.cs
  class ElderItemFilter (line 5) | public class ElderItemFilter : IFilter
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/EnchantModFilter.cs
  class EnchantModFilter (line 9) | public class EnchantModFilter : IFilter
    method Applicable (line 31) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/EnergyShieldFilter.cs
  class EnergyShieldFilter (line 3) | public class EnergyShieldFilter : ExplicitModBase
    method EnergyShieldFilter (line 5) | public EnergyShieldFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/EssenceFilter.cs
  class EssenceFilter (line 5) | public class EssenceFilter : IFilter
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/ExplicitModBase.cs
  class ExplicitModBase (line 7) | public abstract class ExplicitModBase : IFilter
    method ExplicitModBase (line 10) | public ExplicitModBase(string keyword)
    method Applicable (line 15) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/FatedUniqueBaseTypesFilter.cs
  class FatedUniqueBaseTypesFilter (line 6) | public class FatedUniqueBaseTypesFilter : IFilter
    method Applicable (line 28) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/FatedUniquePropheciesFilter.cs
  class FatedUniquePropheciesFilter (line 6) | public class FatedUniquePropheciesFilter : IFilter
    method Applicable (line 28) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/FatedUniqueTargetsFilter.cs
  class FatedUniqueTargetsFilter (line 6) | public class FatedUniqueTargetsFilter : IFilter
    method Applicable (line 28) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/FatedUniquesFilter.cs
  class FatedUniquesFilter (line 6) | public class FatedUniquesFilter : IFilter
    method Applicable (line 28) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/FireResistance.cs
  class FireResistance (line 3) | public class FireResistance : OrStatFilter
    method FireResistance (line 10) | public FireResistance()

FILE: Procurement/ViewModel/Filters/ForumExport/FiveLink.cs
  class FiveLink (line 9) | internal class FiveLink : Link
    method FiveLink (line 11) | public FiveLink()

FILE: Procurement/ViewModel/Filters/ForumExport/FossilFilter.cs
  class FossilFilter (line 5) | public class FossilFilter : IFilter
    method Applicable (line 11) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/FourLink.cs
  class FourLink (line 9) | internal class FourLink : Link
    method FourLink (line 11) | public FourLink()

FILE: Procurement/ViewModel/Filters/ForumExport/FracturedItemFilter.cs
  class FracturedItemFilter (line 5) | public class FracturedItemFilter : IFilter
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/FullBestiaryOrbFilter.cs
  class FullBestiaryOrbFilter (line 5) | public class FullBestiaryOrbFilter : IFilter
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/GearSearchFilters.cs
  class RingFilter (line 5) | class RingFilter : GearTypeFilter
    method RingFilter (line 7) | public RingFilter()
  class AmuletFilter (line 12) | class AmuletFilter : GearTypeFilter
    method AmuletFilter (line 14) | public AmuletFilter()
  class TalismanFilter (line 19) | class TalismanFilter : GearTypeFilter
    method TalismanFilter (line 21) | public TalismanFilter()
  class HelmetFilter (line 26) | class HelmetFilter : GearTypeFilter
    method HelmetFilter (line 28) | public HelmetFilter()
  class ChestFilter (line 33) | class ChestFilter : GearTypeFilter
    method ChestFilter (line 35) | public ChestFilter()
  class GlovesFilter (line 40) | class GlovesFilter : GearTypeFilter
    method GlovesFilter (line 42) | public GlovesFilter()
  class BootFilter (line 47) | class BootFilter : GearTypeFilter
    method BootFilter (line 49) | public BootFilter()
  class BeltFilter (line 54) | class BeltFilter : GearTypeFilter
    method BeltFilter (line 56) | public BeltFilter()
  class AxeFilter (line 61) | class AxeFilter : GearTypeFilter
    method AxeFilter (line 63) | public AxeFilter()
  class ClawFilter (line 68) | class ClawFilter : GearTypeFilter
    method ClawFilter (line 70) | public ClawFilter()
  class BowFilter (line 75) | class BowFilter : GearTypeFilter
    method BowFilter (line 77) | public BowFilter()
  class DaggerFilter (line 82) | class DaggerFilter : GearTypeFilter
    method DaggerFilter (line 84) | public DaggerFilter()
  class MaceFilter (line 89) | class MaceFilter : GearTypeFilter
    method MaceFilter (line 91) | public MaceFilter()
  class QuiverFilter (line 96) | class QuiverFilter : GearTypeFilter
    method QuiverFilter (line 98) | public QuiverFilter()
  class SceptreFilter (line 103) | class SceptreFilter : GearTypeFilter
    method SceptreFilter (line 105) | public SceptreFilter()
  class StaffFilter (line 111) | class StaffFilter : GearTypeFilter
    method StaffFilter (line 113) | public StaffFilter()
  class SwordFilter (line 118) | class SwordFilter : GearTypeFilter
    method SwordFilter (line 120) | public SwordFilter()
  class ShieldFilter (line 125) | class ShieldFilter : GearTypeFilter
    method ShieldFilter (line 127) | public ShieldFilter()
  class WandFilter (line 132) | class WandFilter : GearTypeFilter
    method WandFilter (line 134) | public WandFilter()
  class FishingRodFilter (line 139) | class FishingRodFilter : GearTypeFilter
    method FishingRodFilter (line 141) | public FishingRodFilter()
  class FlaskFilter (line 146) | class FlaskFilter : GearTypeFilter
    method FlaskFilter (line 148) | public FlaskFilter()
  class DivinationCardFilter (line 153) | class DivinationCardFilter : GearTypeFilter
    method DivinationCardFilter (line 155) | public DivinationCardFilter()
  class JewelFilter (line 162) | class JewelFilter : GearTypeFilter
    method JewelFilter (line 164) | public JewelFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/GearTypeFilter.cs
  class GearTypeFilter (line 7) | public class GearTypeFilter : IFilter
    method GearTypeFilter (line 15) | public GearTypeFilter(GearType gearType, string keyword)
    method Applicable (line 24) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/GemCategoryFilter.cs
  class GemCategoryFilter (line 7) | internal class GemCategoryFilter : IFilter
    method GemCategoryFilter (line 10) | public GemCategoryFilter(string filter)
    method Applicable (line 35) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/GemLevelFilter.cs
  class GemLevelFilter (line 8) | internal class GemLevelFilter : StatFilter
    method GemLevelFilter (line 10) | internal GemLevelFilter(string keyword)
  class AllGemLevelFilter (line 20) | internal class AllGemLevelFilter : StatFilter
    method AllGemLevelFilter (line 22) | public AllGemLevelFilter()
  class ColdGemLevelFilter (line 32) | internal class ColdGemLevelFilter : GemLevelFilter
    method ColdGemLevelFilter (line 34) | public ColdGemLevelFilter()
  class FireGemLevelFilter (line 39) | internal class FireGemLevelFilter : GemLevelFilter
    method FireGemLevelFilter (line 41) | public FireGemLevelFilter()
  class LightningGemLevelFilter (line 46) | internal class LightningGemLevelFilter : GemLevelFilter
    method LightningGemLevelFilter (line 48) | public LightningGemLevelFilter()
  class ChaosGemLevelFilter (line 53) | internal class ChaosGemLevelFilter : GemLevelFilter
    method ChaosGemLevelFilter (line 55) | public ChaosGemLevelFilter()
  class MeleeGemLevelFilter (line 60) | internal class MeleeGemLevelFilter : GemLevelFilter
    method MeleeGemLevelFilter (line 62) | public MeleeGemLevelFilter()
  class BowGemLevelFilter (line 67) | internal class BowGemLevelFilter : GemLevelFilter
    method BowGemLevelFilter (line 69) | public BowGemLevelFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/GlobalCritChanceFilter.cs
  class GlobalCritChanceFilter (line 8) | public class GlobalCritChanceFilter : ExplicitModBase
    method GlobalCritChanceFilter (line 10) | public GlobalCritChanceFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/GlobalCritMultiplierFilter.cs
  class GlobalCritMultiplierFilter (line 8) | public class GlobalCritMultiplierFilter : ExplicitModBase
    method GlobalCritMultiplierFilter (line 10) | public GlobalCritMultiplierFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/IncreasedDamageFilter.cs
  class IncreasedDamageFilter (line 3) | internal class IncreasedDamageFilter : StatFilter
    method IncreasedDamageFilter (line 5) | internal IncreasedDamageFilter(string keyword, string help, params str...
  class IncreasedDamageFilterCold (line 15) | internal class IncreasedDamageFilterCold : IncreasedDamageFilter
    method IncreasedDamageFilterCold (line 17) | public IncreasedDamageFilterCold()
  class IncreasedDamageFilterFire (line 22) | internal class IncreasedDamageFilterFire : IncreasedDamageFilter
    method IncreasedDamageFilterFire (line 24) | public IncreasedDamageFilterFire()
  class IncreasedDamageFilterLightning (line 29) | internal class IncreasedDamageFilterLightning : IncreasedDamageFilter
    method IncreasedDamageFilterLightning (line 31) | public IncreasedDamageFilterLightning()
  class IncreasedDamageFilterElemental (line 36) | internal class IncreasedDamageFilterElemental : IncreasedDamageFilter
    method IncreasedDamageFilterElemental (line 38) | public IncreasedDamageFilterElemental()
  class IncreasedDamageFilterElementalWithAttackSkills (line 43) | internal class IncreasedDamageFilterElementalWithAttackSkills : Increase...
    method IncreasedDamageFilterElementalWithAttackSkills (line 45) | public IncreasedDamageFilterElementalWithAttackSkills()

FILE: Procurement/ViewModel/Filters/ForumExport/IncreasedPhysicalDamageFilter.cs
  class IncreasedPhysicalDamageFilter (line 9) | public class IncreasedPhysicalDamageFilter : ExplicitModBase
    method IncreasedPhysicalDamageFilter (line 11) | public IncreasedPhysicalDamageFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/IncubatorFilter.cs
  class IncubatorFilter (line 5) | public class IncubatorFilter : IFilter
    method Applicable (line 11) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/IncursionVialsFilter.cs
  class IncursionVialsFilter (line 5) | public class IncursionVialsFilter : IFilter
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/ItemQuantityFilter.cs
  class ItemQuantityFilter (line 8) | public class ItemQuantityFilter : StatFilter
    method ItemQuantityFilter (line 15) | public ItemQuantityFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/ItemRarityFilter.cs
  class ItemRarityFilter (line 3) | internal class ItemRarityFilter : StatFilter
    method ItemRarityFilter (line 10) | public ItemRarityFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/LeagestoneFilter.cs
  class LeagestoneFilter (line 5) | public class LeagestoneFilter : IFilter
    method Applicable (line 15) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/LeveledGemFilter.cs
  class LeveledGemFilter (line 6) | internal class LeveledGemFilter : IFilter
    method LeveledGemFilter (line 10) | public LeveledGemFilter()
    method LeveledGemFilter (line 14) | public LeveledGemFilter(int level)
    method Applicable (line 39) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/LifeFilter.cs
  class LifeFilter (line 6) | public class LifeFilter : ExplicitModBase
    method LifeFilter (line 8) | public LifeFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/LifeLeech.cs
  class LifeLeech (line 4) | internal class LifeLeech : StatFilter
    method LifeLeech (line 11) | public LifeLeech()

FILE: Procurement/ViewModel/Filters/ForumExport/LifeRegenFilter.cs
  class LifeRegenFilter (line 3) | public class LifeRegenFilter : ExplicitModBase
    method LifeRegenFilter (line 5) | public LifeRegenFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/LightningResistance.cs
  class LightningResistance (line 3) | public class LightningResistance : OrStatFilter
    method LightningResistance (line 10) | public LightningResistance()

FILE: Procurement/ViewModel/Filters/ForumExport/Link.cs
  class Link (line 7) | internal class Link : IFilter
    method Link (line 16) | public Link(int links)
    method Applicable (line 24) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/MagicRarity.cs
  class MagicRarity (line 4) | internal class MagicRarity : RarityFilter
    method MagicRarity (line 6) | public MagicRarity()

FILE: Procurement/ViewModel/Filters/ForumExport/ManaFilter.cs
  class ManaFilter (line 3) | public class ManaFilter : ExplicitModBase
    method ManaFilter (line 5) | public ManaFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/ManaLeechFilter.cs
  class ManaLeech (line 3) | internal class ManaLeech : StatFilter
    method ManaLeech (line 10) | public ManaLeech()

FILE: Procurement/ViewModel/Filters/ForumExport/ManaRegenFilter.cs
  class ManaRegenFilter (line 3) | public class ManaRegenFilter : ExplicitModBase
    method ManaRegenFilter (line 5) | public ManaRegenFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/MapFilter.cs
  class MapFilter (line 9) | public class MapFilter : IFilter
    method Applicable (line 31) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/MapLevelFilter.cs
  class MapTierFilter (line 5) | public class MapTierFilter : IFilter
    method MapTierFilter (line 8) | public MapTierFilter(int tier)
    method Applicable (line 32) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/MirroredItemFilter.cs
  class MirroredItemFilter (line 5) | public class MirroredItemFilter : IFilter
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/MovementSpeed.cs
  class MovementSpeed (line 3) | internal class MovementSpeed : StatFilter
    method MovementSpeed (line 10) | public MovementSpeed()

FILE: Procurement/ViewModel/Filters/ForumExport/MultipleVeiledModsFilter.cs
  class MultipleVeiledModsFilter (line 5) | public class MultipleVeiledModsFilter : IFilter
    method Applicable (line 27) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/NormalRarity.cs
  class NormalRarity (line 4) | internal class NormalRarity : RarityFilter
    method NormalRarity (line 6) | public NormalRarity()

FILE: Procurement/ViewModel/Filters/ForumExport/OneHandedFilter.cs
  class OneHandedFilter (line 4) | public class OneHandedFilter : XHandFilter
    method OneHandedFilter (line 6) | public OneHandedFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/OrFilter.cs
  class OrFilter (line 8) | public class OrFilter : IFilter
    method OrFilter (line 17) | public OrFilter(params IFilter[] filters)
    method Applicable (line 37) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/OrStatFilter.cs
  class OrStatFilter (line 8) | public abstract class OrStatFilter : StatFilterBase, IFilter
    method OrStatFilter (line 12) | public OrStatFilter(string keyword, string help, params string[] stats)
    method Applicable (line 16) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/PercentEnergyShieldFilter.cs
  class PercentEnergyShieldFilter (line 8) | public class PercentEnergyShieldFilter : StatFilter
    method PercentEnergyShieldFilter (line 10) | public PercentEnergyShieldFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/PercentLifeFilter.cs
  class PercentLifeFilter (line 3) | public class PercentLifeFilter : StatFilter
    method PercentLifeFilter (line 5) | public PercentLifeFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/PhysicalDamageFilter.cs
  class PhysicalDamageFilter (line 9) | public class PhysicalDamageFilter : StatFilter
    method PhysicalDamageFilter (line 16) | public PhysicalDamageFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/PopularGemsFilter.cs
  class PopularGemsFilter (line 7) | internal class PopularGemsFilter : IFilter
    method PopularGemsFilter (line 15) | public PopularGemsFilter()
    method Applicable (line 35) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/ProphecyFilter.cs
  class AbyssJewelFilter (line 5) | public class AbyssJewelFilter : IFilter
    method Applicable (line 7) | public bool Applicable(Item item)
  class ProphecyFilter (line 46) | public class ProphecyFilter : IFilter
    method Applicable (line 80) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/ProphecyFragmentFilter.cs
  class ProphecyFragmentFilter (line 3) | public class ProphecyFragmentFilter : TypeLineFilter
    method ProphecyFragmentFilter (line 5) | public ProphecyFragmentFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/QualityGemFilter.cs
  class QualityGemFilter (line 6) | internal class QualityGemFilter : IFilter
    method QualityGemFilter (line 10) | public QualityGemFilter()
    method QualityGemFilter (line 15) | public QualityGemFilter(int quality)
    method Applicable (line 40) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/RareRarity.cs
  class RareRarity (line 4) | internal class RareRarity : RarityFilter
    method RareRarity (line 6) | public RareRarity()

FILE: Procurement/ViewModel/Filters/ForumExport/RarityFilter.cs
  class RarityFilter (line 7) | public class RarityFilter : IFilter
    method RarityFilter (line 15) | public RarityFilter(Rarity rarity)
    method Applicable (line 23) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/ResistanceBase.cs
  class ResistanceBase (line 5) | public class ResistanceBase
    method ResistanceBase (line 9) | public ResistanceBase()

FILE: Procurement/ViewModel/Filters/ForumExport/ResonatorFilter.cs
  class ResonatorFilter (line 5) | public class ResonatorFilter : IFilter
    method Applicable (line 11) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/ScarabFilter.cs
  class ScarabFilter (line 5) | public class ScarabFilter : IFilter
    method Applicable (line 11) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/ShaperItemFilter.cs
  class ShaperItemFilter (line 5) | public class ShaperItemFilter : IFilter
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/SixBlueSockets.cs
  class SixBlueSockets (line 7) | class SixBlueSockets : IFilter
    method Applicable (line 29) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/SixGreenSockets.cs
  class SixGreenSockets (line 7) | class SixGreenSockets : IFilter
    method Applicable (line 29) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/SixLink.cs
  class SixLink (line 3) | class SixLink : Link
    method SixLink (line 5) | public SixLink()

FILE: Procurement/ViewModel/Filters/ForumExport/SixRedSockets.cs
  class SixRedSockets (line 7) | class SixRedSockets : IFilter
    method Applicable (line 29) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/SixSocketFilter.cs
  class SixSocketFilter (line 7) | public class SixSocketFilter : IFilter
    method Applicable (line 29) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/SocketColourFilter.cs
  class SocketColourFilter (line 7) | public class SocketColourFilter : IFilter
    method SocketColourFilter (line 14) | public SocketColourFilter(string colour, int count, string keyword, st...
    method Applicable (line 42) | public bool Applicable(Item item)
  class OneRedSocket (line 53) | class OneRedSocket : SocketColourFilter
    method OneRedSocket (line 55) | public OneRedSocket()
  class OneGreenSocket (line 60) | class OneGreenSocket : SocketColourFilter
    method OneGreenSocket (line 62) | public OneGreenSocket()
  class OneBlueSocket (line 67) | class OneBlueSocket : SocketColourFilter
    method OneBlueSocket (line 69) | public OneBlueSocket()
  class TwoRedSockets (line 74) | class TwoRedSockets : SocketColourFilter
    method TwoRedSockets (line 76) | public TwoRedSockets()
  class TwoGreenSockets (line 81) | class TwoGreenSockets : SocketColourFilter
    method TwoGreenSockets (line 83) | public TwoGreenSockets()
  class TwoBlueSockets (line 88) | class TwoBlueSockets : SocketColourFilter
    method TwoBlueSockets (line 90) | public TwoBlueSockets()
  class ThreeRedSockets (line 95) | class ThreeRedSockets : SocketColourFilter
    method ThreeRedSockets (line 97) | public ThreeRedSockets()
  class ThreeGreenSockets (line 102) | class ThreeGreenSockets : SocketColourFilter
    method ThreeGreenSockets (line 104) | public ThreeGreenSockets()
  class ThreeBlueSockets (line 109) | class ThreeBlueSockets : SocketColourFilter
    method ThreeBlueSockets (line 111) | public ThreeBlueSockets()
  class FourRedSockets (line 116) | class FourRedSockets : SocketColourFilter
    method FourRedSockets (line 118) | public FourRedSockets()
  class FourGreenSockets (line 123) | class FourGreenSockets : SocketColourFilter
    method FourGreenSockets (line 125) | public FourGreenSockets()
  class FourBlueSockets (line 130) | class FourBlueSockets : SocketColourFilter
    method FourBlueSockets (line 132) | public FourBlueSockets()
  class FiveRedSockets (line 137) | class FiveRedSockets : SocketColourFilter
    method FiveRedSockets (line 139) | public FiveRedSockets()
  class FiveGreenSockets (line 144) | class FiveGreenSockets : SocketColourFilter
    method FiveGreenSockets (line 146) | public FiveGreenSockets()
  class FiveBlueSockets (line 151) | class FiveBlueSockets : SocketColourFilter
    method FiveBlueSockets (line 153) | public FiveBlueSockets()

FILE: Procurement/ViewModel/Filters/ForumExport/SpellDamageFilter.cs
  class SpellDamageFilter (line 8) | public class SpellDamageFilter : ExplicitModBase
    method SpellDamageFilter (line 10) | public SpellDamageFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/StatFilter.cs
  class StatFilter (line 8) | public abstract class StatFilter : StatFilterBase, IFilter
    method StatFilter (line 12) | public StatFilter(string keyword, string help, params string[] stats)
    method Applicable (line 16) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/StatFilterBase.cs
  class StatFilterBase (line 7) | public class StatFilterBase
    method StatFilterBase (line 13) | public StatFilterBase(string keyword, string help, params string[] stats)

FILE: Procurement/ViewModel/Filters/ForumExport/SupportGemsFilter.cs
  class SupportGemsFilter (line 5) | internal class SupportGemsFilter : IFilter
    method SupportGemsFilter (line 12) | public SupportGemsFilter()
    method Applicable (line 30) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/SynthesisedItemFilter.cs
  class SynthesisedItemFilter (line 5) | public class SynthesisedItemFilter : IFilter
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/TripleResistance.cs
  class TripleResistance (line 7) | public class TripleResistance : ResistanceBase, IFilter
    method Applicable (line 29) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/TwoHandedFilter.cs
  class TwoHandedFilter (line 8) | public class TwoHandedFilter : XHandFilter
    method TwoHandedFilter (line 10) | public TwoHandedFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/TypeLineFilter.cs
  class TypeLineFilter (line 5) | public abstract class TypeLineFilter : IFilter
    method TypeLineFilter (line 14) | public TypeLineFilter(params string[] keyword)
    method Applicable (line 19) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/UniqueRarity.cs
  class UniqueRarity (line 4) | internal class UniqueRarity : RarityFilter
    method UniqueRarity (line 6) | public UniqueRarity()

FILE: Procurement/ViewModel/Filters/ForumExport/UnknownItemFilter.cs
  class UnknownItemFilter (line 5) | public class UnknownItemFilter : IFilter
    method Applicable (line 39) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/VaalFragmentFilter.cs
  class VaalFragmentFilter (line 8) | public class VaalFragmentFilter : TypeLineFilter
    method VaalFragmentFilter (line 10) | public VaalFragmentFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/VaalUberFragmentFilter.cs
  class VaalUberFragmentFilter (line 3) | public class VaalUberFragmentFilter : TypeLineFilter
    method VaalUberFragmentFilter (line 5) | public VaalUberFragmentFilter()

FILE: Procurement/ViewModel/Filters/ForumExport/VeiledModFilter.cs
  class VeiledModFilter (line 5) | public class VeiledModFilter : IFilter
    method Applicable (line 27) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/VeiledPrefixFilter.cs
  class VeiledPrefixFilter (line 6) | public class VeiledPrefixFilter : IFilter
    method Applicable (line 28) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/VeiledSuffixFilter.cs
  class VeiledSuffixFilter (line 6) | public class VeiledSuffixFilter : IFilter
    method Applicable (line 28) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/ForumExport/XHandFilter.cs
  class XHandFilter (line 6) | public abstract class XHandFilter : IFilter
    method XHandFilter (line 10) | public XHandFilter(string handed)
    method Applicable (line 34) | public bool Applicable(Item item)

FILE: Procurement/ViewModel/Filters/IFilter.cs
  type IFilter (line 6) | public interface IFilter
    method Applicable (line 12) | bool Applicable(Item item);

FILE: Procurement/ViewModel/Filters/ItemFilter.cs
  class ItemFilter (line 9) | public class ItemFilter : IFilter
    method ItemFilter (line 32) | public ItemFilter(Item source)
    method Applicable (line 37) | public bool Applicable(POEApi.Model.Item item)

FILE: Procurement/ViewModel/Filters/UserSearchFilter.cs
  class UserSearchFilter (line 6) | public class UserSearchFilter : IFilter
    method UserSearchFilter (line 14) | public UserSearchFilter(string filter)
    method Applicable (line 33) | public bool Applicable(Item item)
    method containsMatchedCosmeticMod (line 49) | private bool containsMatchedCosmeticMod(Item item)
    method isMatchedGear (line 54) | private bool isMatchedGear(Item item)

FILE: Procurement/ViewModel/ForumExportViewModel.cs
  class ForumExportViewModel (line 21) | public class ForumExportViewModel : ObservableBase
    method ForumExportViewModel (line 73) | public ForumExportViewModel()
    method registerTabEvents (line 94) | private void registerTabEvents()
    method deregisterTabEvents (line 100) | private void deregisterTabEvents()
    method tabSelectionChanged (line 106) | private void tabSelectionChanged(object sender, PropertyChangedEventAr...
    method setSelectedTabs (line 111) | private void setSelectedTabs()
    method bumpThread (line 117) | private void bumpThread(object obj)
    method postToThread (line 152) | private void postToThread(object obj)
    method settingsValid (line 177) | private bool settingsValid(bool isUpdate)
    method copy (line 203) | private void copy(object parameter)
    method ApplicationState_LeagueChanged (line 209) | void ApplicationState_LeagueChanged(object sender, PropertyChangedEven...
    method updateForLeague (line 219) | private void updateForLeague()
    method update (line 226) | public void update(int key, bool isChecked, bool shouldUpdate)
    method updateText (line 237) | public void updateText()
    method getFinal (line 247) | private string getFinal(IEnumerable<Item> items)
    method doPostProcessing (line 259) | private string doPostProcessing(string template)
    method removeLines (line 272) | private string removeLines(string template, List<int> removeLines)
    method getLinesToRemove (line 283) | private List<int> getLinesToRemove(string template)
    method readAllLines (line 326) | public List<string> readAllLines(string template)
    method getVisitors (line 340) | private static List<IVisitor> getVisitors()
    method ToggleAll (line 349) | internal void ToggleAll(bool value)

FILE: Procurement/ViewModel/ForumExportVisitors/ExplicitModVisitor.cs
  class ExplicitModVisitor (line 11) | class ExplicitModVisitor : VisitorBase
    method ExplicitModVisitor (line 15) | public ExplicitModVisitor()
    method Visit (line 30) | public override string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumExportVisitors/GearVisitor.cs
  class GearVisitor (line 9) | internal class GearVisitor : VisitorBase
    method GearVisitor (line 12) | public GearVisitor()
    method GetGearTypes (line 27) | private static IEnumerable<string> GetGearTypes()
    method Visit (line 37) | public override string Visit(IEnumerable<Item> items, string current)
    method getEnum (line 53) | private T getEnum<T>(string name)

FILE: Procurement/ViewModel/ForumExportVisitors/GemVisitor.cs
  class GemVisitor (line 10) | internal class GemVisitor : VisitorBase
    method GemVisitor (line 13) | public GemVisitor()
    method Visit (line 24) | public override string Visit(IEnumerable<Item> items, string current)
    method getEnum (line 40) | private T getEnum<T>(string name)
  class ext (line 46) | public static class ext
    method AddRange (line 48) | public static void AddRange<TKey, TValue>(this Dictionary<TKey, TValue...

FILE: Procurement/ViewModel/ForumExportVisitors/IGNVistior.cs
  class IGNVistior (line 6) | internal class IGNVistior : IVisitor
    method Visit (line 10) | public string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumExportVisitors/IVisitor.cs
  type IVisitor (line 6) | internal interface IVisitor
    method Visit (line 8) | string Visit(IEnumerable<Item> items, string current);

FILE: Procurement/ViewModel/ForumExportVisitors/LastUpdatedVisitor.cs
  class LastUpdatedVisitor (line 7) | internal class LastUpdatedVisitor : IVisitor
    method Visit (line 11) | public string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumExportVisitors/LeveledGemVisitor.cs
  class LeveledGemVisitor (line 9) | internal class LeveledGemVisitor : VisitorBase
    method LeveledGemVisitor (line 13) | public LeveledGemVisitor()
    method Visit (line 40) | public override string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumExportVisitors/LinksVisitor.cs
  class LinksVisitor (line 9) | internal class LinksVisitor : VisitorBase
    method LinksVisitor (line 12) | public LinksVisitor()
    method Visit (line 19) | public override string Visit(IEnumerable<Item> items, string current)
    method getEnum (line 35) | private T getEnum<T>(string name)

FILE: Procurement/ViewModel/ForumExportVisitors/MagicFindVisitor.cs
  class MagicFindVisitor (line 8) | internal class MagicFindVisitor : VisitorBase
    method Visit (line 11) | public override string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumExportVisitors/MapVisitor.cs
  class MapVisitor (line 9) | internal class MapVisitor : VisitorBase
    method MapVisitor (line 12) | public MapVisitor()
    method Visit (line 16) | public override string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumExportVisitors/MultipleBuyoutVisitor.cs
  class MultipleBuyoutVisitor (line 9) | internal class MultipleBuyoutVisitor : VisitorBase
    method Visit (line 23) | public override string Visit(IEnumerable<Item> items, string current)
    method buildSpoilers (line 62) | private void buildSpoilers(StringBuilder builder, Dictionary<string, L...
    method buildBuyoutDictionary (line 72) | private Dictionary<string, List<Item>> buildBuyoutDictionary()
    method buildPriceDictionary (line 85) | private Dictionary<string, List<Item>> buildPriceDictionary()

FILE: Procurement/ViewModel/ForumExportVisitors/QualityGemVisitor.cs
  class QualityGemVisitor (line 8) | internal class QualityGemVisitor : VisitorBase
    method QualityGemVisitor (line 12) | public QualityGemVisitor()
    method Visit (line 21) | public override string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumExportVisitors/SimpleVisitor.cs
  class SimpleVisitor (line 7) | internal abstract class SimpleVisitor : VisitorBase
    method SimpleVisitor (line 12) | internal SimpleVisitor(string token, IFilter filter)
    method Visit (line 18) | public override string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumExportVisitors/SimpleVisitors.cs
  class ProphecyVisitor (line 6) | internal class ProphecyVisitor : SimpleVisitor
    method ProphecyVisitor (line 8) | public ProphecyVisitor() : base("{Prophecies}", new ProphecyFilter())
  class AbyssJewelVisitor (line 13) | internal class AbyssJewelVisitor : SimpleVisitor
    method AbyssJewelVisitor (line 15) | public AbyssJewelVisitor() : base("{AbyssJewels}", new AbyssJewelFilte...
  class FossilVisitor (line 20) | internal class FossilVisitor : SimpleVisitor
    method FossilVisitor (line 22) | public FossilVisitor() : base("{Fossil}", new FossilFilter())
  class ResonatorVisitor (line 27) | internal class ResonatorVisitor : SimpleVisitor
    method ResonatorVisitor (line 29) | public ResonatorVisitor() : base("{Resonator}", new ResonatorFilter())
  class ShaperItemVisitor (line 34) | internal class ShaperItemVisitor : SimpleVisitor
    method ShaperItemVisitor (line 36) | public ShaperItemVisitor() : base("{ShaperItems}", new ShaperItemFilte...
  class ElderItemVisitor (line 41) | internal class ElderItemVisitor : SimpleVisitor
    method ElderItemVisitor (line 43) | public ElderItemVisitor() : base("{ElderItems}", new ElderItemFilter())
  class CurrencyVisitor (line 48) | internal class CurrencyVisitor : SimpleVisitor
    method CurrencyVisitor (line 50) | public CurrencyVisitor() : base("{Currency}", new CurrencyFilter())
  class CorruptedGemVisitor (line 55) | internal class CorruptedGemVisitor : SimpleVisitor
    method CorruptedGemVisitor (line 57) | public CorruptedGemVisitor() : base("{CorruptedGems}", new CorruptedGe...
  class AllGemVisitor (line 62) | internal class AllGemVisitor : SimpleVisitor
    method AllGemVisitor (line 64) | public AllGemVisitor() : base("{AllGems", new AllGemsFilter())
  class DivineVesselVisitor (line 69) | internal class DivineVesselVisitor : SimpleVisitor
    method DivineVesselVisitor (line 71) | public DivineVesselVisitor() : base("{DivineVessel}", new DivineVessel...
  class DropOnlyGemVisitor (line 76) | internal class DropOnlyGemVisitor : SimpleVisitor
    method DropOnlyGemVisitor (line 78) | public DropOnlyGemVisitor() : base("{DropOnlyGems}", new DropOnlyGemFi...
  class DualResVisitor (line 83) | internal class DualResVisitor : SimpleVisitor
    method DualResVisitor (line 85) | public DualResVisitor() : base("{DualRes}", new DualResistances())
  class EssenceVisitor (line 90) | internal class EssenceVisitor : SimpleVisitor
    method EssenceVisitor (line 92) | public EssenceVisitor() : base("{Essence}", new EssenceFilter())
  class LeagueStoneVisitor (line 97) | internal class LeagueStoneVisitor : SimpleVisitor
    method LeagueStoneVisitor (line 99) | public LeagueStoneVisitor() : base("{Leaguestone}", new LeagestoneFilt...
  class FatedUniqueBaseTypeVisitor (line 104) | internal class FatedUniqueBaseTypeVisitor : SimpleVisitor
    method FatedUniqueBaseTypeVisitor (line 106) | public FatedUniqueBaseTypeVisitor() : base("{FatedUniqueBaseType}", ne...
  class FatedUniqueProphecyVisitor (line 111) | internal class FatedUniqueProphecyVisitor : SimpleVisitor
    method FatedUniqueProphecyVisitor (line 113) | public FatedUniqueProphecyVisitor() : base("{FatedUniqueProphecy}", ne...
  class FatedUniqueTargetVisitor (line 118) | internal class FatedUniqueTargetVisitor : SimpleVisitor
    method FatedUniqueTargetVisitor (line 120) | public FatedUniqueTargetVisitor() : base("{FatedUniqueTarget}", new Fa...
  class FatedUniqueVisitor (line 125) | internal class FatedUniqueVisitor : SimpleVisitor
    method FatedUniqueVisitor (line 127) | public FatedUniqueVisitor() : base("{FatedUnique}", new FatedUniquesFi...
  class FracturedItemVisitor (line 132) | internal class FracturedItemVisitor : SimpleVisitor
    method FracturedItemVisitor (line 134) | public FracturedItemVisitor() : base("{FracturedItems}", new Fractured...
  class FullBestiaryOrbVisitor (line 141) | internal class FullBestiaryOrbVisitor : SimpleVisitor
    method FullBestiaryOrbVisitor (line 143) | public FullBestiaryOrbVisitor() : base("{FullBestiaryOrbs}", new FullB...
  class IncursionVialVisitor (line 148) | internal class IncursionVialVisitor : SimpleVisitor
    method IncursionVialVisitor (line 150) | public IncursionVialVisitor() : base("{IncursionVial}", new IncursionV...
  class MirroredItemVisitor (line 155) | internal class MirroredItemVisitor : SimpleVisitor
    method MirroredItemVisitor (line 157) | public MirroredItemVisitor() : base("{Mirrored}", new MirroredItemFilt...
  class OfferingVisitor (line 162) | internal class OfferingVisitor : SimpleVisitor
    method OfferingVisitor (line 164) | public OfferingVisitor() : base("{Offering}", new OfferingFilter())
  class PopularGemsVisitor (line 169) | internal class PopularGemsVisitor : SimpleVisitor
    method PopularGemsVisitor (line 171) | public PopularGemsVisitor() : base("{PopularGems}", new PopularGemsFil...
  class ScarabVisitor (line 176) | internal class ScarabVisitor : SimpleVisitor
    method ScarabVisitor (line 178) | public ScarabVisitor() : base("{Scarab}", new ScarabFilter())
  class SixSocketVisitor (line 183) | internal class SixSocketVisitor : SimpleVisitor
    method SixSocketVisitor (line 185) | public SixSocketVisitor() : base("{6Socket}", new SixSocketFilter())
  class SynthesisedItemVisitor (line 190) | internal class SynthesisedItemVisitor : SimpleVisitor
    method SynthesisedItemVisitor (line 192) | public SynthesisedItemVisitor() : base("{SynthesisedItems}", new Synth...
  class TripResVisitor (line 197) | internal class TripResVisitor : SimpleVisitor
    method TripResVisitor (line 199) | public TripResVisitor() : base("{TripRes}", new TripleResistance())
  class UniquesVisitor (line 204) | internal class UniquesVisitor : SimpleVisitor
    method UniquesVisitor (line 206) | public UniquesVisitor() : base("{Uniques}", new UniqueRarity())
  class UnknownItemVisitor (line 211) | internal class UnknownItemVisitor : SimpleVisitor
    method UnknownItemVisitor (line 213) | public UnknownItemVisitor() : base("{UnknownItems}", new UnknownItemFi...
  class IncubatorVisitor (line 218) | internal class IncubatorVisitor : SimpleVisitor
    method IncubatorVisitor (line 220) | public IncubatorVisitor() : base("{Incubator}", new IncubatorFilter())

FILE: Procurement/ViewModel/ForumExportVisitors/SingleBuyoutVisitor.cs
  class SingleBuyoutVisitor (line 10) | internal class SingleBuyoutVisitor : VisitorBase
    method SingleBuyoutVisitor (line 13) | public SingleBuyoutVisitor()
    method Visit (line 18) | public override string Visit(IEnumerable<POEApi.Model.Item> items, str...

FILE: Procurement/ViewModel/ForumExportVisitors/StashVisitor.cs
  class StashVisitor (line 11) | internal class StashVisitor : VisitorBase
    method Visit (line 14) | public override string Visit(IEnumerable<Item> items, string current)
    method getToken (line 48) | private Tuple<string, string> getToken(int location, string current)
    method getItems (line 60) | private string getItems(IEnumerable<Item> items)
    method getTokenLocations (line 69) | private List<int> getTokenLocations(string current)

FILE: Procurement/ViewModel/ForumExportVisitors/TypeLineVisitor.cs
  class TypeLineVisitor (line 8) | internal class TypeLineVisitor : VisitorBase
    method TypeLineVisitor (line 12) | public TypeLineVisitor()
    method Visit (line 21) | public override string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumExportVisitors/VisitorBase.cs
  class VisitorBase (line 10) | internal abstract class VisitorBase : IVisitor
    method Visit (line 27) | public abstract string Visit(IEnumerable<Item> items, string current);
    method runFilter (line 29) | protected string runFilter(IFilter filter, IEnumerable<Item> items)
    method getLinkItem (line 40) | protected string getLinkItem<T>(T item) where T : Item
    method hasItemBuyout (line 54) | private static bool hasItemBuyout<T>(T item) where T : Item
    method getBuyoutString (line 64) | private string getBuyoutString<T>(T item, string tabName) where T : Item
    method getNonBuyoutString (line 72) | private static string getNonBuyoutString(Item item)
    method appendAdditionalInfo (line 80) | private string appendAdditionalInfo(Item item, string tabName)

FILE: Procurement/ViewModel/ForumExportVisitors/XHandedVisitor.cs
  class XHandedVisitor (line 9) | internal class XHandedVisitor : VisitorBase
    method XHandedVisitor (line 12) | public XHandedVisitor()
    method Visit (line 19) | public override string Visit(IEnumerable<Item> items, string current)

FILE: Procurement/ViewModel/ForumTemplateViewModel.cs
  class ForumTemplateViewModel (line 6) | internal class ForumTemplateViewModel : ObservableBase
    method ForumTemplateViewModel (line 8) | public ForumTemplateViewModel()
    method ForumExportTemplateReader_OnTemplateReloaded (line 14) | void ForumExportTemplateReader_OnTemplateReloaded(object sender, Prope...
    method Save (line 30) | internal void Save()

FILE: Procurement/ViewModel/InventoryViewModel.cs
  class InventoryViewModel (line 8) | public class InventoryViewModel : ObservableBase
    method InventoryViewModel (line 47) | public InventoryViewModel(InventoryView inventoryView)
    method ApplicationState_CharacterChanged (line 56) | void ApplicationState_CharacterChanged(object sender, PropertyChangedE...
    method ApplicationState_LeagueChanged (line 61) | void ApplicationState_LeagueChanged(object sender, PropertyChangedEven...

FILE: Procurement/ViewModel/ItemDisplayViewModel.cs
  class LinkPath (line 15) | public class LinkPath
  class ItemDisplayViewModel (line 23) | public class ItemDisplayViewModel : ObservableBase
    method ItemDisplayViewModel (line 75) | public ItemDisplayViewModel(Item item)
    method getImage (line 80) | public Image getImage()
    method GetSocket (line 109) | public UIElement GetSocket(bool isQuadStash)
    method getEveryOther (line 191) | private List<Tuple<int, int>> getEveryOther(List<Tuple<int, int>> myLi...
    method getLink (line 200) | private Image getLink(Tuple<int, int> currentSocket, Tuple<int, int> c...
    method isSocketed (line 243) | private bool isSocketed(Socket socket, int socketIndex, Gear item)
    method getSocketItemAt (line 251) | private SocketableItem getSocketItemAt(Socket socket, int socketIndex,...
    method GetSocket (line 256) | private Image GetSocket(Socket socket, string suffix)
    method CreateItemPopup (line 290) | private void CreateItemPopup(UIElement target, Item item)
    method getSocketTree (line 318) | public IEnumerable<Tuple<int, int>> getSocketTree(int W, int H)

FILE: Procurement/ViewModel/ItemFilterUpdater.cs
  class ItemFilterUpdater (line 12) | class ItemFilterUpdater
    method GetUsableCurrentLeagueItemsByTab (line 14) | protected static Dictionary<Tab, List<Item>> GetUsableCurrentLeagueIte...
    method GetRelaxedSameBaseTypeResults (line 28) | protected static Dictionary<string, List<RecipeResult>> GetRelaxedSame...
    method UpdateLootFilters (line 42) | public static void UpdateLootFilters()
    method UpdateLootFilter (line 51) | public static void UpdateLootFilter(POEApi.Model.Protobuf.FileConfig f...
    method ApplyFilterRule (line 81) | protected static string ApplyFilterRule(string itemFilterText,
    method AddMissingSameBaseTypeItemFilters (line 101) | protected static string AddMissingSameBaseTypeItemFilters(string itemF...
    method AddChancingBasesItemFilters (line 376) | protected static string AddChancingBasesItemFilters(string itemFilterT...

FILE: Procurement/ViewModel/ItemHoverViewModel.cs
  class ItemHoverViewModel (line 10) | public class ItemHoverViewModel
    method ItemHoverViewModel (line 81) | public ItemHoverViewModel(Item item)
    method setVeiledMods (line 152) | private void setVeiledMods(Item item)
    method setProphecyProperties (line 173) | private void setProphecyProperties(Item item)
    method setTypeSpecificProperties (line 184) | private void setTypeSpecificProperties(Item item)
    method setGearProperties (line 197) | private void setGearProperties(Item item, Gear gear)

FILE: Procurement/ViewModel/ItemHoverViewModelFactory.cs
  class ItemHoverViewModelFactory (line 9) | class ItemHoverViewModelFactory
    method Create (line 11) | internal static ItemHoverViewModel Create(Item item)
  class SextantItemHoverViewModel (line 78) | public class SextantItemHoverViewModel : ItemHoverViewModel
    method SextantItemHoverViewModel (line 80) | public SextantItemHoverViewModel(Item item) : base(item)
  class RelicGearItemHoverViewModel (line 84) | public class RelicGearItemHoverViewModel : ItemHoverViewModel
    method RelicGearItemHoverViewModel (line 86) | public RelicGearItemHoverViewModel(Item item)
  class UniqueGearItemHoverViewModel (line 92) | public class UniqueGearItemHoverViewModel : ItemHoverViewModel
    method UniqueGearItemHoverViewModel (line 94) | public UniqueGearItemHoverViewModel(Item item)
  class RareGearItemHoverViewModel (line 99) | public class RareGearItemHoverViewModel : ItemHoverViewModel
    method RareGearItemHoverViewModel (line 101) | public RareGearItemHoverViewModel(Item item)
  class MagicGearItemHoverViewModel (line 106) | public class MagicGearItemHoverViewModel : ItemHoverViewModel
    method MagicGearItemHoverViewModel (line 108) | public MagicGearItemHoverViewModel(Item item)
  class NormalGearItemHoverViewModel (line 113) | public class NormalGearItemHoverViewModel : ItemHoverViewModel
    method NormalGearItemHoverViewModel (line 115) | public NormalGearItemHoverViewModel(Item item)
  class GemItemHoverViewModel (line 120) | public class GemItemHoverViewModel : ItemHoverViewModel
    method GemItemHoverViewModel (line 122) | public GemItemHoverViewModel(Item item)
  class CurrencyItemHoverViewModel (line 127) | public class CurrencyItemHoverViewModel : ItemHoverViewModel
    method CurrencyItemHoverViewModel (line 129) | public CurrencyItemHoverViewModel(Item item)
  class ProphecyItemHoverViewModel (line 134) | public class ProphecyItemHoverViewModel : ItemHoverViewModel
    method ProphecyItemHoverViewModel (line 136) | public ProphecyItemHoverViewModel(Item item)
  class QuestItemHoverViewModel (line 141) | public class QuestItemHoverViewModel : ItemHoverViewModel
    method QuestItemHoverViewModel (line 143) | public QuestItemHoverViewModel(Item item)

FILE: Procurement/ViewModel/LoginWindowViewModel.cs
  class LoginWindowViewModel (line 20) | public class LoginWindowViewModel : ObservableBase
    method UpdateButtonLabels (line 63) | private void UpdateButtonLabels(bool useSession)
    method LoginWindowViewModel (line 72) | public LoginWindowViewModel(UserControl view)
    method TxtPassword_PasswordChanged (line 104) | void TxtPassword_PasswordChanged(object sender, System.Windows.RoutedE...
    method LoginWindow_PropertyChanged (line 110) | void LoginWindow_PropertyChanged(object sender, PropertyChangedEventAr...
    method Login (line 115) | public void Login(bool offline)
    method LoadItems (line 208) | private IEnumerable<Item> LoadItems(bool offline, IEnumerable<Characte...
    method UpdateCharactersByLeague (line 246) | private static void UpdateCharactersByLeague(List<Character> chars)
    method SaveSettings (line 262) | private void SaveSettings(SecureString password)
    method ToggleControls (line 275) | private void ToggleControls()
    method LoadStashItems (line 283) | private IEnumerable<Item> LoadStashItems(Character character)
    method LoadCharacterInventoryItems (line 295) | private IEnumerable<Item> LoadCharacterInventoryItems(Character charac...
    method UpdateStatus (line 320) | private void UpdateStatus(bool success, bool offline)
    method Model_StashLoading (line 331) | void Model_StashLoading(POEModel sender, StashLoadedEventArgs e)
    method Model_ImageLoading (line 336) | void Model_ImageLoading(POEModel sender, ImageLoadedEventArgs e)
    method Model_Authenticating (line 341) | void Model_Authenticating(POEModel sender, AuthenticateEventArgs e)
    method Model_Throttled (line 346) | void Model_Throttled(object sender, ThottledEventArgs e)
    method Update (line 352) | private void Update(string message, POEEventArgs e)
    method NavigateHowToSessionIDwiki (line 371) | public void NavigateHowToSessionIDwiki()

FILE: Procurement/ViewModel/MainPageViewModel.cs
  class MainPageViewModel (line 11) | public class MainPageViewModel : ObservableBase
    method MainPageViewModel (line 16) | public MainPageViewModel()
    method getTabs (line 23) | public void getTabs(object o)
    method getContextMenu (line 33) | private ContextMenu getContextMenu(Button target, TabControl tabControl)
    method CloseAndSelect (line 52) | public void CloseAndSelect(ContextMenu menu, MenuItem menuItem)

FILE: Procurement/ViewModel/ObservableBase.cs
  class ObservableBase (line 6) | public abstract class ObservableBase : INotifyPropertyChanged
    method OnPropertyChanged (line 10) | protected virtual void OnPropertyChanged([CallerMemberName] string pro...

FILE: Procurement/ViewModel/PricingInfo.cs
  class PricingInfo (line 8) | public class PricingInfo : ObservableBase
    method setDefaults (line 42) | private void setDefaults()
    method PricingInfo (line 54) | public PricingInfo()
    method updateValue (line 61) | private void updateValue(int difference)
    method getCurrentBuyout (line 72) | private double getCurrentBuyout()
    method Update (line 82) | public void Update(string info)
    method GetSaveText (line 94) | public string GetSaveText()

FILE: Procurement/ViewModel/RecipeResultViewModel.cs
  class RecipeResultViewModel (line 9) | public class RecipeResultViewModel : ObservableBase
    method RecipeResultViewModel (line 39) | public RecipeResultViewModel()
    method RadioButtonSelected (line 46) | public void RadioButtonSelected(Item item)
    method GetUsableCurrentLeagueItemsByTab (line 51) | Dictionary<Tab, List<Item>> GetUsableCurrentLeagueItemsByTab()
    method updateResults (line 65) | private void updateResults()
    method ApplicationState_LeagueChanged (line 75) | void ApplicationState_LeagueChanged(object sender, System.ComponentMod...

FILE: Procurement/ViewModel/Recipes/ArmourersScrapRecipe.cs
  class ArmourersScrapRecipe (line 9) | internal class ArmourersScrapRecipe : MinimumQualityRecipe<Gear>
    method getCandidateItems (line 16) | protected override IEnumerable<Gear> getCandidateItems(IEnumerable<Ite...
    method getMissingCombinationText (line 23) | protected override string getMissingCombinationText(decimal requiredQu...

FILE: Procurement/ViewModel/Recipes/BlacksmithsWhetstoneRecipe.cs
  class BlacksmithsWhetstoneRecipe (line 9) | internal class BlacksmithsWhetstoneRecipe : MinimumQualityRecipe<Gear>
    method getCandidateItems (line 16) | protected override IEnumerable<Gear> getCandidateItems(IEnumerable<Ite...
    method getMissingCombinationText (line 25) | protected override string getMissingCombinationText(decimal requiredQu...

FILE: Procurement/ViewModel/Recipes/CartographersChiselRecipe.cs
  class CartographersChiselRecipe (line 9) | internal class CartographersChiselRecipe : MinimumQualityRecipe<Map>
    method getCandidateItems (line 16) | protected override IEnumerable<Map> getCandidateItems(IEnumerable<Item...
    method getMissingCombinationText (line 21) | protected override string getMissingCombinationText(decimal requiredQu...

FILE: Procurement/ViewModel/Recipes/ChromaticRecipe.cs
  class Chromatic (line 9) | internal class Chromatic : Recipe
    method Chromatic (line 11) | public Chromatic()
    method Matches (line 20) | public override IEnumerable<RecipeResult> Matches(IEnumerable<Item> it...
    method isMatch (line 27) | private bool isMatch(Gear gear)
    method getResult (line 44) | private RecipeResult getResult(Gear item)

FILE: Procurement/ViewModel/Recipes/GCPRecipe.cs
  class GCPRecipe (line 9) | internal class GCPRecipe : MinimumQualityRecipe<Gem>
    method getCandidateItems (line 16) | protected override IEnumerable<Gem> getCandidateItems(IEnumerable<Item...
    method getMissingCombinationText (line 21) | protected override string getMissingCombinationText(decimal requiredQu...

FILE: Procurement/ViewModel/Recipes/GlassblowersBaubleRecipe.cs
  class GlassblowersBaubleRecipe (line 9) | internal class GlassblowersBaubleRecipe : MinimumQualityRecipe<Gear>
    method getCandidateItems (line 16) | protected override IEnumerable<Gear> getCandidateItems(IEnumerable<Ite...
    method getMissingCombinationText (line 21) | protected override string getMissingCombinationText(decimal requiredQu...

FILE: Procurement/ViewModel/Recipes/LoreweaveRecipe.cs
  class LoreweaveRecipe (line 7) | public class LoreweaveRecipe : Recipe
    method LoreweaveRecipe (line 12) | public LoreweaveRecipe(SetType setType = SetType.Normal) : base(10)
    method Matches (line 20) | public override IEnumerable<RecipeResult> Matches(IEnumerable<Item> it...

FILE: Procurement/ViewModel/Recipes/MatchedSet.cs
  class MatchedSet (line 9) | internal class MatchedSet
    method MatchedSet (line 23) | public MatchedSet()
    method Match (line 29) | public decimal Match()
    method GetAll (line 35) | public List<Gear> GetAll()
    method GetMissing (line 44) | public List<string> GetMissing()

FILE: Procurement/ViewModel/Recipes/MinimumQualityRecipe.cs
  class MinimumQualityRecipe (line 9) | public abstract class MinimumQualityRecipe<T> : Recipe
    class Combination (line 12) | protected class Combination
    method MinimumQualityRecipe (line 25) | public MinimumQualityRecipe()
    method MinimumQualityRecipe (line 29) | public MinimumQualityRecipe(decimal returnMatchesGreaterThan)
    method getCandidateItems (line 33) | protected abstract IEnumerable<T> getCandidateItems(IEnumerable<Item> ...
    method getMissingCombinationText (line 35) | protected virtual string getMissingCombinationText(decimal requiredQua...
    method Matches (line 40) | public override IEnumerable<RecipeResult> Matches(IEnumerable<POEApi.M...
    method getCombinations (line 88) | private void getCombinations(List<T> pool, int target, List<T> working...
    method getCombinations (line 122) | private void getCombinations(List<T> pool, int target)
    method getSingleItemCombinations (line 129) | private void getSingleItemCombinations(List<T> pool, int target)
    method getResult (line 137) | private RecipeResult getResult(Combination currentSet)

FILE: Procurement/ViewModel/Recipes/RareSetRecipe.cs
  type SetType (line 8) | public enum SetType
  class RareSetRecipe (line 15) | public class RareSetRecipe : Recipe
    method RareSetRecipe (line 41) | public RareSetRecipe(int minimumItemLevel, int maximumItemLevel, bool ...
    method Matches (line 53) | public override IEnumerable<RecipeResult> Matches(IEnumerable<Item> it...
    method getNextResult (line 94) | private RecipeResult getNextResult(Dictionary<string, List<Gear>> buck...
    method pullValue (line 136) | private Gear pullValue(Dictionary<string, List<Gear>> buckets, string ...
    method moveSelectedBucketsContents (line 152) | private void moveSelectedBucketsContents(Dictionary<string, List<Gear>...
    method resortSelectedBuckets (line 158) | private void resortSelectedBuckets(Dictionary<string, List<Gear>> buck...

FILE: Procurement/ViewModel/Recipes/Recipe.cs
  class Recipe (line 10) | public abstract class Recipe
    method Recipe (line 16) | public Recipe()
    method Recipe (line 20) | public Recipe(decimal returnMatchesGreaterThan)
    method GetResultName (line 26) | public virtual string GetResultName(RecipeResult result)
    method Matches (line 31) | public abstract IEnumerable<RecipeResult> Matches(IEnumerable<Item> it...
    method Matches (line 33) | public virtual IEnumerable<RecipeResult> Matches(IDictionary<Tab, List...
    method GetShouldUseShortRecipeDescriptions (line 43) | protected bool GetShouldUseShortRecipeDescriptions()

FILE: Procurement/ViewModel/Recipes/RecipeManager.cs
  class RecipeManager (line 7) | internal class RecipeManager
    method RecipeManager (line 10) | public RecipeManager()
    method Run (line 48) | public Dictionary<string, List<RecipeResult>> Run(IDictionary<Tab, Lis...

FILE: Procurement/ViewModel/Recipes/RecipeResult.cs
  class RecipeResult (line 9) | public class RecipeResult

FILE: Procurement/ViewModel/Recipes/SameBaseTypeRecipe.cs
  class SameBaseTypeRecipe (line 9) | public class SameBaseTypeRecipe : Recipe
    method SameBaseTypeRecipe (line 24) | public SameBaseTypeRecipe(decimal minimumMatchPercentage = 60, bool st...
    method GetResultName (line 35) | public override string GetResultName(RecipeResult result)
    method Matches (line 80) | public override IEnumerable<RecipeResult> Matches(IEnumerable<POEApi.M...
    method getNextResult (line 137) | private IEnumerable<RecipeResult> getNextResult(Dictionary<string, Lis...

FILE: Procurement/ViewModel/Recipes/SameNameRecipe.cs
  class SameNameRecipe (line 9) | public class SameNameRecipe : Recipe
    method SameNameRecipe (line 14) | public SameNameRecipe(string recipeName, int setCount)
    method Matches (line 26) | public override IEnumerable<RecipeResult> Matches(IEnumerable<POEApi.M...
    method findDuplicates (line 31) | private IEnumerable<RecipeResult> findDuplicates(IEnumerable<POEApi.Mo...

FILE: Procurement/ViewModel/Recipes/VaalOrbRecipe.cs
  class VaalOrbRecipe (line 8) | public class VaalOrbRecipe : Recipe
    method Matches (line 14) | public override IEnumerable<RecipeResult> Matches(IEnumerable<Item> it...

FILE: Procurement/ViewModel/ScreenController.cs
  class ScreenController (line 14) | public class ScreenController : ObservableBase
    method Create (line 42) | public static void Create()
    method ScreenController (line 47) | private ScreenController()
    method UpdateTrading (line 59) | public void UpdateTrading()
    method execute (line 70) | private void execute(object obj)
    method initScreens (line 84) | private void initScreens()
    method InvalidateRecipeScreen (line 98) | public void InvalidateRecipeScreen()
    method RefreshRecipeScreen (line 103) | public void RefreshRecipeScreen()
    method initLogin (line 115) | private void initLogin()
    method loginCompleted (line 123) | void loginCompleted()
    method LoadView (line 140) | public void LoadView(IView view)
    method LoadRefreshView (line 151) | public void LoadRefreshView()
    method LoadRefreshViewUsed (line 158) | public void LoadRefreshViewUsed()
    method ReloadStash (line 165) | public void ReloadStash()

FILE: Procurement/ViewModel/SetBuyoutViewModel.cs
  class SetBuyoutViewModel (line 10) | public class SetBuyoutViewModel : ObservableBase
    method SetBuyoutViewModel (line 66) | public SetBuyoutViewModel(Item item)
    method SetBuyoutInfo (line 76) | public void SetBuyoutInfo(ItemTradeInfo info)
    method GetPobData (line 96) | private void GetPobData(object o)
    method CanGetPobData (line 110) | private bool CanGetPobData(object o)

FILE: Procurement/ViewModel/SetTabBuyoutViewModel.cs
  class SetTabBuyoutViewModel (line 5) | public class SetTabBuyoutViewModel
    method SetTabBuyoutViewModel (line 37) | public SetTabBuyoutViewModel()

FILE: Procurement/ViewModel/SettingsViewModel.cs
  class SettingsViewModel (line 11) | public class SettingsViewModel : ObservableBase
    method SettingsViewModel (line 161) | public SettingsViewModel(SettingsView view)
    method getAllTabs (line 175) | private List<TabInfo> getAllTabs()
    method cullInvalidTabs (line 185) | private static void cullInvalidTabs(IEnumerable<string> tabs)
    method AddDownloadLeague (line 196) | public void AddDownloadLeague(string leagueName)
    method RemoveDownloadLeague (line 201) | public void RemoveDownloadLeague(string leagueName)
    method AddDownloadCharacter (line 206) | public void AddDownloadCharacter(string characterName)
    method RemoveDownloadCharacter (line 211) | public void RemoveDownloadCharacter(string characterName)
    method refreshCharacters (line 216) | private void refreshCharacters()
    method RecipeTabChecked (line 221) | internal void RecipeTabChecked(string tabName)
    method RecipeTabUnchecked (line 227) | internal void RecipeTabUnchecked(string tabName)
    method addToList (line 233) | private static void addToList(string list, string value)
    method removeFromList (line 242) | private static void removeFromList(string list, string value)

FILE: Procurement/ViewModel/StatusController.cs
  class StatusController (line 8) | internal class StatusController
    method StatusController (line 14) | public StatusController(RichTextBox statusBox)
    method StatusController (line 18) | public StatusController(RichTextBox statusBox, int padding)
    method Ok (line 25) | public void Ok()
    method NotOK (line 30) | public void NotOK()
    method DisplayMessage (line 35) | public void DisplayMessage(string message)
    method HandleError (line 49) | public void HandleError(string error, Action toggleControls)
    method displayResult (line 78) | private void displayResult(string message, Brush colour)
    method getPaddedString (line 100) | private string getPaddedString(string text)
    method CheckAccessAndInvoke (line 105) | private void CheckAccessAndInvoke(Action a)

FILE: Procurement/ViewModel/TabInfo.cs
  class TabInfo (line 5) | public class TabInfo : ObservableBase
    method FixName (line 24) | public void FixName()

FILE: Procurement/ViewModel/TabViewModel/CommonTabViewModel.cs
  class CommonTabViewModel (line 9) | public class CommonTabViewModel : ObservableBase
    method CommonTabViewModel (line 13) | protected CommonTabViewModel(Dictionary<Item, ItemDisplayViewModel> it...
    method GetItemAtPosition (line 18) | protected ItemDisplayViewModel GetItemAtPosition(int x, int y)
    method GetItemCalled (line 36) | protected ItemDisplayViewModel GetItemCalled(string name)
    method GetSextant (line 54) | protected ItemDisplayViewModel GetSextant(SextantType sextantType)
    method GetCurrencyItem (line 74) | protected ItemDisplayViewModel GetCurrencyItem(OrbType orbType)
    method GetEssenceItem (line 94) | protected ItemDisplayViewModel GetEssenceItem(EssenceType essenceType)
    method GetBreach (line 114) | protected ItemDisplayViewModel GetBreach<T>(BreachType breachType) whe...
    method GetScarab (line 134) | protected ItemDisplayViewModel GetScarab(ScarabRank rank, ScarabEffect...
    method GetOffering (line 154) | protected ItemDisplayViewModel GetOffering()

FILE: Procurement/ViewModel/TabViewModel/CurrencyStashViewModel.cs
  class CurrencyStashViewModel (line 6) | public class CurrencyStashViewModel : CommonTabViewModel
    method CurrencyStashViewModel (line 8) | public CurrencyStashViewModel(Dictionary<Item, ItemDisplayViewModel> s...

FILE: Procurement/ViewModel/TabViewModel/EssenceStashViewModel.cs
  class EssenceStashViewModel (line 7) | public class EssenceStashViewModel : CommonTabViewModel
    method EssenceStashViewModel (line 9) | public EssenceStashViewModel(Dictionary<Item, ItemDisplayViewModel> st...

FILE: Procurement/ViewModel/TabViewModel/FragmentStashViewModel.cs
  class FragmentStashViewModel (line 8) | public class FragmentStashViewModel : CommonTabViewModel
    method FragmentStashViewModel (line 10) | public FragmentStashViewModel(Dictionary<Item, ItemDisplayViewModel> s...

FILE: Procurement/ViewModel/TabViewModel/StashViewModel.cs
  class StashViewModel (line 22) | public class StashViewModel : ObservableBase
    method processFilter (line 45) | private void processFilter()
    method SetCategoryFilter (line 72) | public void SetCategoryFilter(string category, bool? isChecked)
    method OnClientLogFileChanged (line 139) | public void OnClientLogFileChanged(object sender, ClientLogFileEventAr...
    method StashViewModel (line 164) | public StashViewModel(StashView stashView)
    method getAvailableItems (line 197) | private void getAvailableItems()
    method getSearchTerms (line 220) | private IEnumerable<string> getSearchTerms(Item item)
    method tabControl_SelectionChanged (line 231) | void tabControl_SelectionChanged(object sender, SelectionChangedEventA...
    method unselectPreviousTab (line 244) | private void unselectPreviousTab(TabItem selectedTab)
    method ApplicationState_LeagueChanged (line 251) | void ApplicationState_LeagueChanged(object sender, PropertyChangedEven...
    method GetTabList (line 265) | public void GetTabList(object o)
    method GetContextMenu (line 277) | private ContextMenu GetContextMenu(Button target, TabControl tabControl)
    method ContrastColor (line 305) | private Color ContrastColor(Colour color)
    method closeAndSelect (line 316) | private void closeAndSelect(ContextMenu menu, MenuItem menuItem)
    method stashView_Loaded (line 324) | void stashView_Loaded(object sender, RoutedEventArgs e)
    method CraftTabAndContent (line 355) | private void CraftTabAndContent(TabItem item, AbstractStashTabControl ...
    method addContextMenu (line 364) | private void addContextMenu(TabItem item, IStashControl itemStash)
    method getMenuItem (line 376) | private MenuItem getMenuItem(IStashControl itemStash, string header, R...
    method getUserFilter (line 385) | private static List<IFilter> getUserFilter(string filter)
    method setTabBuyout_Click (line 394) | void setTabBuyout_Click(object sender, RoutedEventArgs e)
    method buyoutView_Update (line 419) | void buyoutView_Update(PricingInfo buyoutInfo, string tabName)
    method refresh_Click (line 429) | void refresh_Click(object sender, RoutedEventArgs e)
    method getStash (line 437) | private static IStashControl getStash(object sender)

FILE: Procurement/ViewModel/TabViewModel/TabContent.cs
  class TabContent (line 6) | internal class TabContent
    method TabContent (line 12) | public TabContent(int index, TabItem tabItem, IStashControl stash)

FILE: Procurement/ViewModel/TabViewModel/TabFactory.cs
  class TabFactory (line 8) | public static class TabFactory
    method GenerateTab (line 10) | public static AbstractStashTabControl GenerateTab(Tab tab, List<IFilte...

FILE: Procurement/ViewModel/TabViewModel/TabVisuals.cs
  class TabVisuals (line 5) | internal class TabVisuals

FILE: Procurement/ViewModel/TradeSettingsViewModel.cs
  class TradeSettingsViewModel (line 10) | public class TradeSettingsViewModel : ObservableBase
    method TradeSettingsViewModel (line 115) | public TradeSettingsViewModel()
    method saveRefreshSettings (line 130) | private void saveRefreshSettings(object obj)
    method saveShopSettings (line 140) | private void saveShopSettings(object obj)
    method getSetting (line 158) | private bool getSetting(string key)

FILE: Procurement/ViewModel/TradingViewModel.cs
  class TradingViewModel (line 3) | internal class TradingViewModel

FILE: Tests/POEApi.Model.Tests/Files.Designer.cs
  class Files (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Files (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Tests/POEApi.Model.Tests/GearTests.cs
  class GearTests (line 7) | [TestClass]
    method Item_WithNullSockets_ShouldBeProperlyConstructed (line 10) | [TestMethod]
    method Item_TypeLineSubstringOfOtherTypeLine_ShouldFindCorrectBaseType (line 24) | [TestMethod]
    method Item_IdentifiedItems_DescriptiveNameProducesCorrectDescription (line 47) | [TestMethod]
    method Item_UnidentifiedItems_DescriptiveNameProducesCorrectDescription (line 93) | [TestMethod]
    method Item_WithMissingExpectedComponents_DescriptiveNameProducesCorrectDescription (line 131) | [TestMethod]

FILE: Tests/POEApi.Model.Tests/IFilterTests.cs
  class IFilterTests (line 13) | [TestClass]
    method TestSetup (line 20) | [TestInitialize]
    method AreEssencesApplicable (line 27) | [TestMethod]
    method AreDivineVesselsApplicable (line 50) | [TestMethod]
    method AreOfferingsApplicable (line 72) | [TestMethod]
    method AreScarabsApplicable (line 94) | [TestMethod]
    method AreRareMapsApplicable (line 116) | [TestMethod]

FILE: Tests/POEApi.Model.Tests/ItemFactoryTests.cs
  class ItemFactoryTests (line 8) | [TestClass]
    method ItemFactory_GivenItemWithAbyssJewel_ShouldConstructItem (line 11) | [TestMethod]
    method ItemFactory_GivenBreakingItem_ShouldReturnUnknownItem (line 26) | [TestMethod]

FILE: Tests/POEApi.Model.Tests/PoeModelTests.cs
  class PoeModelTests (line 14) | [TestClass]
    method TestSetup (line 20) | [TestInitialize]
    method GetInventoryTest (line 27) | [TestMethod]
    method GetCharactersTest (line 42) | [TestMethod]
    method GetExpiredNameCharactersTest (line 59) | [TestMethod]
    method GetStashTest (line 76) | [TestMethod]
    method GetEssenceStashTest (line 94) | [TestMethod]
    method GetRelicStashTest (line 114) | [TestMethod]
    method GetLitheBladeStashTest (line 134) | [TestMethod]
    method GetSaintlyChainmailStashTest (line 154) | [TestMethod]
    method GetAccountNameTest (line 174) | [TestMethod]
    method GetShardCurrencyStashTest (line 189) | [TestMethod]
    method GetFragmentStashTest (line 211) | [TestMethod]
    method GetChargeTest (line 247) | [TestMethod]
    method GetPantheonSoulInventoryTest (line 269) | [TestMethod]
    method GetNetsStashTest (line 295) | [TestMethod]
    method GetMirroredItemsStashTest (line 333) | [TestMethod]
    method GetSynthesisedItemsStashTest (line 362) | [TestMethod]
    method IsScarabDetected (line 407) | [TestMethod]
    method GetInventoryWithQuestItemsTest (line 429) | [TestMethod]

FILE: Tests/POEApi.Model.Tests/UnitTestHelper.cs
  class UnitTestHelper (line 5) | public static class UnitTestHelper
    method GenerateStreamFromString (line 7) | public static Stream GenerateStreamFromString(string s)

FILE: Tests/POEApi.Model.Tests/UnknownItemTests.cs
  class UnknownItemTests (line 7) | [TestClass]
    method UnknownItem_EmptyConstructor (line 10) | [TestMethod]
    method UnknownItem_IdentifiedItems_DescriptiveNameProducesCorrectDescription (line 22) | [TestMethod]

FILE: Tests/POEApi.TestHelpers/Builders/Build.cs
  class Build (line 3) | public static class Build
    class A (line 5) | public static class A

FILE: Tests/POEApi.TestHelpers/Builders/JSONProxyItemBuilder.cs
  class JSONProxyItemBuilder (line 8) | public class JSONProxyItemBuilder
    method ThatIsAnAbyssJewel (line 22) | public JSONProxyItemBuilder ThatIsAnAbyssJewel(bool isAbyssJewel)
    method ThatIsARelic (line 29) | public JSONProxyItemBuilder ThatIsARelic(bool isRelic)
    method ThatIsIdentified (line 36) | public JSONProxyItemBuilder ThatIsIdentified(bool isIdentified)
    method ThatIsCorrupted (line 43) | public JSONProxyItemBuilder ThatIsCorrupted(bool isCorrupted)
    method WithoutSockets (line 50) | public JSONProxyItemBuilder WithoutSockets()
    method WithDescrText (line 58) | public JSONProxyItemBuilder WithDescrText(string descrText)
    method WithSocketedItem (line 65) | public JSONProxyItemBuilder WithSocketedItem(Model.JSONProxy.Item item)
    method WithTypeLine (line 75) | public JSONProxyItemBuilder WithTypeLine(string typeLine)
    method WithName (line 82) | public JSONProxyItemBuilder WithName(string name)
    method WithId (line 89) | public JSONProxyItemBuilder WithId(string id)
    method WithItemLevel (line 96) | public JSONProxyItemBuilder WithItemLevel(int itemLevel)
    method WithFrameType (line 103) | public JSONProxyItemBuilder WithFrameType(int frameType)
    method WithProperty (line 110) | public JSONProxyItemBuilder WithProperty(string name, string firstValu...
    method WithQuality (line 121) | public JSONProxyItemBuilder WithQuality(int qualityAmount)

FILE: Tests/Procurement.Tests/ViewModel/Recipes/RareSetRecipeTests.cs
  class RareSetRecipeTests (line 14) | [TestClass]
    method RareSetRecipeTests_BasicFullSet_CompleteMatch (line 17) | [TestMethod]
    method RareSetRecipeTests_FullSetDuplicateBaseTypes_CompleteMatch (line 75) | [TestMethod]
    method RareSetRecipeTests_PartialSet_IncompleteMatch (line 118) | [TestMethod]
    method RareSetRecipeTests_ItemsIncludeQuiver_QuiverIsNotUsed (line 181) | [TestMethod]
    method RareSetRecipeTests_ItemsIncludeBowAndShield_ShieldIsNotUsed (line 226) | [TestMethod]
    method RareSetRecipeTests_ItemsIncludeTwoShields_UseBothForMatch (line 271) | [TestMethod]
    method RareSetRecipeTests_VariousItemLevels_UseItemsInRange (line 314) | [TestMethod]
    method RareSetRecipeTests_SingleValueRange_UseItemsInRange (line 362) | [TestMethod]
    method RareSetRecipeTests_VariousItemLevels_LowestItemLevelsUsed (line 414) | [TestMethod]
    method RareSetRecipeTests_ItemsIncludesOtherTypes_UseOnlyGear (line 631) | [TestMethod]
    method RareSetRecipeTests_ItemsIncludesOtherRarities_UseOnlyRareItems (line 686) | [TestMethod]
    method RareSetRecipeTests_SomeItemsIdentified_UseCorrectIdentifiedState (line 745) | [TestMethod]

FILE: Tests/Procurement.Tests/ViewModel/Recipes/SameBaseTypeRecipeTests.cs
  class SameBaseTypeRecipeTests (line 13) | [TestClass]
    method SetUp (line 18) | [TestInitialize]
    method SameBaseTypeRecipeTests_EmptyInput_NoMatches (line 28) | [TestMethod]
    method SameBaseTypeRecipeTests_OneItem_NoMatches (line 44) | [TestMethod]
    method SameBaseTypeRecipeTests_TwoItems_PartialMatch (line 68) | [TestMethod]
    method SameBaseTypeRecipeTests_ThreeItems_FullMatch (line 122) | [TestMethod]
    method SameBaseTypeRecipeTests_ThreeItemsDifferentBaseType_PartialMatch (line 178) | [TestMethod]
    method SameBaseTypeRecipeTests_MultipleItemsSameRarity_OnlyOneOfEachRarity (line 238) | [TestMethod]
    method SameBaseTypeRecipeTests_ThreeItemsSomeFullQuality_FindBestMatch (line 297) | [TestMethod]
    method SameBaseTypeRecipeTests_ThreeItemsSomeIdentified_FindBestMatch (line 355) | [TestMethod]
    method SameBaseTypeRecipeTests_InvalidGearType_DoNotUse (line 406) | [TestMethod]

FILE: Tests/Procurement.Tests/ViewModel/Recipes/SameNameRecipeTests.cs
  class SameNameRecipeTests (line 14) | [TestClass]
    method IsCloseToValue (line 17) | public bool IsCloseToValue(decimal expectedValue, decimal epsilon, dec...
    method CheckTwoItemRecipe (line 23) | public void CheckTwoItemRecipe(List<POEApi.Model.Item> potentialItems,...
    method CheckThreeItemRecipe (line 143) | public void CheckThreeItemRecipe(List<POEApi.Model.Item> potentialItem...
    method SameNameRecipeTests_Gear (line 291) | [TestMethod]
    method SameNameRecipeTests_AbyssJewel (line 319) | [TestMethod]
    method SameNameRecipeTests_MixedTypes (line 347) | [TestMethod]
    method SameNameRecipeTests_MultipleResults (line 375) | [TestMethod]

FILE: Tests/Procurement.Tests/ViewModel/Recipes/VaalOrbRecipeTests.cs
  class VaalOrbRecipeTests (line 10) | [TestClass]
    method VaalOrbRecipeTests_UncorruptedNonVaalGems_NoMatch (line 13) | [TestMethod]
    method VaalOrbRecipeTests_CorruptedNonVaalGems_NoMatch (line 34) | [TestMethod]
    method VaalOrbRecipeTests_VaalGems_FindMatch (line 55) | [TestMethod]
    method VaalOrbRecipeTests_NonGems_NoMatch (line 92) | [TestMethod]
    method VaalOrbRecipeTests_OnlyWithSacrificeFrament_NoMatch (line 114) | [TestMethod]
    method VaalOrbRecipeTests_FullSet_CompleteMatch (line 132) | [TestMethod]
    method VaalOrbRecipeTests_OtherFragmentType_NotIncluded (line 170) | [TestMethod]

FILE: Tools/EssenceGenerator.cs
  class EssenceGenerator (line 6) | internal class EssenceGenerator
    method Generate (line 16) | internal static List<string> Generate()

FILE: Tools/Program.cs
  class Program (line 5) | class Program
    method Main (line 7) | static void Main(string[] args)
Condensed preview — 451 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,211K chars).
[
  {
    "path": ".gitignore",
    "chars": 432,
    "preview": "POEApi.Infrastructure/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache\nPOEApi.Model/obj/Debug/DesignTimeResolveA"
  },
  {
    "path": "LICENSE",
    "chars": 8894,
    "preview": "  The Artistic License 2.0\n\n\t    Copyright (c) 2000-2006, The Perl Foundation.\n\n     Everyone is permitted to copy and d"
  },
  {
    "path": "POEApi.Infrastructure/CacheService.cs",
    "chars": 1763,
    "preview": "using System.IO;\r\nusing System.Linq;\r\nusing System.Reflection;\r\n\r\nnamespace POEApi.Infrastructure\r\n{\r\n    public class "
  },
  {
    "path": "POEApi.Infrastructure/CurrencyAbbreviationMap.cs",
    "chars": 2405,
    "preview": "using System.Collections.Generic;\nusing System;\n\nnamespace POEApi.Infrastructure\n{\n    //WTB Bi-directional Dictionary "
  },
  {
    "path": "POEApi.Infrastructure/DPAPI.cs",
    "chars": 3271,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Security;\nusing Syst"
  },
  {
    "path": "POEApi.Infrastructure/Events/ThottledEventArgs.cs",
    "chars": 278,
    "preview": "using System;\n\nnamespace POEApi.Infrastructure.Events\n{\n    public class ThottledEventArgs : EventArgs\n    {\n        pu"
  },
  {
    "path": "POEApi.Infrastructure/Events/ThrottledEventHandler.cs",
    "chars": 127,
    "preview": "namespace POEApi.Infrastructure.Events\n{\n    public delegate void ThottledEventHandler(object sender, ThottledEventArgs"
  },
  {
    "path": "POEApi.Infrastructure/ExcessiveRequestException.cs",
    "chars": 228,
    "preview": "using System;\n\nnamespace POEApi.Infrastructure\n{\n    public class ExcessiveRequestException: Exception\n    {\n        pu"
  },
  {
    "path": "POEApi.Infrastructure/Extensions.cs",
    "chars": 1824,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Security.Cryptography;"
  },
  {
    "path": "POEApi.Infrastructure/ForumThreadException.cs",
    "chars": 262,
    "preview": "using System;\n\nnamespace POEApi.Infrastructure\n{\n    public class ForumThreadException : Exception\n    {\n        public"
  },
  {
    "path": "POEApi.Infrastructure/Logger.cs",
    "chars": 472,
    "preview": "using System;\nusing System.IO;\n\nnamespace POEApi.Infrastructure\n{\n    public static class Logger\n    {\n        private "
  },
  {
    "path": "POEApi.Infrastructure/LogonFailedException.cs",
    "chars": 363,
    "preview": "\nusing System;\n\nnamespace POEApi.Infrastructure\n{\n    public class LogonFailedException : Exception\n    {\n        publi"
  },
  {
    "path": "POEApi.Infrastructure/POEApi.Infrastructure.csproj",
    "chars": 2950,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "POEApi.Infrastructure/Properties/AssemblyInfo.cs",
    "chars": 1423,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "POEApi.Model/AbyssJewel.cs",
    "chars": 957,
    "preview": "using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class AbyssJewel : SocketableItem\n    {\n        p"
  },
  {
    "path": "POEApi.Model/BreachSplinter.cs",
    "chars": 376,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model.Interfaces;\n\nnamespace POEApi.Mod"
  },
  {
    "path": "POEApi.Model/BreachStone.cs",
    "chars": 303,
    "preview": "using POEApi.Model.Interfaces;\n\nnamespace POEApi.Model\n{\n    public class Breachstone : Item, IBreachCurrency\n    {\n   "
  },
  {
    "path": "POEApi.Model/BreachType.cs",
    "chars": 158,
    "preview": "namespace POEApi.Model\n{\n    public enum BreachType\n    {\n        Chayula,\n        Xoph,\n        Esh,\n        Tul,\n    "
  },
  {
    "path": "POEApi.Model/Buyouts.xml",
    "chars": 304,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Buyouts>\n  <ItemBuyouts> \n    <!-- Buyouts you set on items in Procurement are"
  },
  {
    "path": "POEApi.Model/Character.cs",
    "chars": 539,
    "preview": "using Newtonsoft.Json;\n\nnamespace POEApi.Model\n{\n    public class Character\n    {\n        [JsonProperty(\"name\")]\n      "
  },
  {
    "path": "POEApi.Model/CharacterStashBuilder.cs",
    "chars": 2732,
    "preview": "using POEApi.Infrastructure;\nusing System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class CharacterStas"
  },
  {
    "path": "POEApi.Model/ChargeInfo.cs",
    "chars": 418,
    "preview": "namespace POEApi.Model\n{\n    public class ChargeInfo\n    {\n        public int Charges { get; set; }\n        public int "
  },
  {
    "path": "POEApi.Model/Colour.cs",
    "chars": 275,
    "preview": "using System.Windows.Media;\n\nnamespace POEApi.Model\n{\n    public class Colour\n    {\n        public int r { get; set; }\n"
  },
  {
    "path": "POEApi.Model/Currency.cs",
    "chars": 515,
    "preview": "using System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    [DebuggerDisplay(\"Type: {Type} Stack: {StackInfo.Amount}/{Stack"
  },
  {
    "path": "POEApi.Model/CurrencyHandler.cs",
    "chars": 2515,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace POEApi.Model\n{\n    internal class Currenc"
  },
  {
    "path": "POEApi.Model/CurrencyRatio.cs",
    "chars": 420,
    "preview": "namespace POEApi.Model\n{\n    public class CurrencyRatio\n    {\n        public OrbType OrbType { get; set; }\n        publ"
  },
  {
    "path": "POEApi.Model/Data.xml",
    "chars": 67954,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Data xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchem"
  },
  {
    "path": "POEApi.Model/Data.xsd",
    "chars": 1622,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema id=\"Data\"\n    elementFormDefault=\"qualified\"\n    xmlns:xs=\"http://www"
  },
  {
    "path": "POEApi.Model/Decoration.cs",
    "chars": 255,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace POEApi.Model\n{\n    pub"
  },
  {
    "path": "POEApi.Model/DivineVessel.cs",
    "chars": 171,
    "preview": "namespace POEApi.Model\n{\n    public class DivineVessel : Item\n    {\n        public DivineVessel(JSONProxy.Item item) : "
  },
  {
    "path": "POEApi.Model/EquipedItems.cs",
    "chars": 2547,
    "preview": "using POEApi.Infrastructure;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection"
  },
  {
    "path": "POEApi.Model/Essence.cs",
    "chars": 306,
    "preview": "using System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    [DebuggerDisplay(\"{TypeLine}\")]\n    public class Essence : Item"
  },
  {
    "path": "POEApi.Model/EssenceType.cs",
    "chars": 2618,
    "preview": "namespace POEApi.Model\n{\n    public enum EssenceType\n    {\n        WhisperingGreed,\n        WhisperingContempt,\n       "
  },
  {
    "path": "POEApi.Model/Events/AuthenticateEventArgs.cs",
    "chars": 387,
    "preview": "namespace POEApi.Model.Events\n{\n    public class AuthenticateEventArgs : POEEventArgs\n    {\n        public string Email"
  },
  {
    "path": "POEApi.Model/Events/ImageLoadedEventArgs.cs",
    "chars": 301,
    "preview": "using System;\n\nnamespace POEApi.Model.Events\n{\n    public class ImageLoadedEventArgs : POEEventArgs\n    {\n        publi"
  },
  {
    "path": "POEApi.Model/Events/POEEventArgs.cs",
    "chars": 257,
    "preview": "using System;\n\nnamespace POEApi.Model.Events\n{\n    public class POEEventArgs : EventArgs\n    {\n        public POEEventS"
  },
  {
    "path": "POEApi.Model/Events/POEEventState.cs",
    "chars": 117,
    "preview": "namespace POEApi.Model.Events\n{\n    public enum POEEventState\n    {\n        BeforeEvent,\n        AfterEvent\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Events/StashLoadedEventArgs.cs",
    "chars": 386,
    "preview": "namespace POEApi.Model.Events\n{\n    public class StashLoadedEventArgs : POEEventArgs\n    {\n        public int StashID {"
  },
  {
    "path": "POEApi.Model/FatedUniqueInfo.cs",
    "chars": 810,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace POEApi.Model\n{\n    pub"
  },
  {
    "path": "POEApi.Model/Fossil.cs",
    "chars": 147,
    "preview": "namespace POEApi.Model\n{\n    public class Fossil : Item\n    {\n        public Fossil(JSONProxy.Item item) : base(item)\n "
  },
  {
    "path": "POEApi.Model/FullBestiaryOrb.cs",
    "chars": 1412,
    "preview": "namespace POEApi.Model\n{\n    public class FullBestiaryOrb : Item\n    {\n        public FullBestiaryOrb(JSONProxy.Item it"
  },
  {
    "path": "POEApi.Model/Gear.cs",
    "chars": 6161,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Infrastructure;\n\nnam"
  },
  {
    "path": "POEApi.Model/GearType/GearType.cs",
    "chars": 536,
    "preview": "namespace POEApi.Model\n{\n    public enum GearType\n    {\n        Unknown,\n        Ring,\n        Amulet,\n        Helmet,\n"
  },
  {
    "path": "POEApi.Model/GearType/GearTypeFactory.cs",
    "chars": 2127,
    "preview": "using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    internal class GearTypeFactory\n    {\n        private st"
  },
  {
    "path": "POEApi.Model/GearType/GearTypeRunner.cs",
    "chars": 10727,
    "preview": "using System.Collections.Generic;\r\nusing System.Linq;\r\n\r\nnamespace POEApi.Model\r\n{\r\n    public abstract class GearTypeR"
  },
  {
    "path": "POEApi.Model/GearType.cs",
    "chars": 201,
    "preview": "namespace POEApi.Model\n{\n    public enum GearType\n    {\n        Ring,\n        Amulet,\n        Helmet,\n        Chest,\n  "
  },
  {
    "path": "POEApi.Model/Gem.cs",
    "chars": 2622,
    "preview": "using System.Linq;\nusing System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    public class Gem : SocketableItem\n    {\n    "
  },
  {
    "path": "POEApi.Model/GemCategory.cs",
    "chars": 408,
    "preview": "namespace POEApi.Model\n{\n    public enum GemCategory\n    {\n        AoE,\n        Attack,\n        Aura,\n        Bow,\n    "
  },
  {
    "path": "POEApi.Model/GemHandler.cs",
    "chars": 597,
    "preview": "using System.Collections.Generic;\r\n\r\nnamespace POEApi.Model\r\n{\r\n    internal class GemHandler\r\n    {\r\n        public st"
  },
  {
    "path": "POEApi.Model/ImageComparer.cs",
    "chars": 433,
    "preview": "using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class ImageComparer : IEqualityComparer<Item>\n  "
  },
  {
    "path": "POEApi.Model/Incubator.cs",
    "chars": 165,
    "preview": "namespace POEApi.Model\n{\n    public class Incubator : Item\n    {\n        public Incubator(JSONProxy.Item item) : base(i"
  },
  {
    "path": "POEApi.Model/Interfaces/IBreachCurrency.cs",
    "chars": 125,
    "preview": "namespace POEApi.Model.Interfaces\n{\n    public interface IBreachCurrency\n    {\n        BreachType Type { get; set; }\n  "
  },
  {
    "path": "POEApi.Model/Interfaces/ILegion.cs",
    "chars": 123,
    "preview": "namespace POEApi.Model.Interfaces\n{\n    public interface ILegion\n    {\n        LegionFaction Faction { get; set; }\n    "
  },
  {
    "path": "POEApi.Model/Item.cs",
    "chars": 7822,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing POEApi.Model.JSONPro"
  },
  {
    "path": "POEApi.Model/ItemBackgroundUrlBuilder.cs",
    "chars": 1023,
    "preview": "using POEApi.Infrastructure;\nusing System;\nusing System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    internal sta"
  },
  {
    "path": "POEApi.Model/ItemFactory.cs",
    "chars": 4722,
    "preview": "using System;\nusing System.Linq;\nusing POEApi.Infrastructure;\n\nnamespace POEApi.Model\n{\n    internal class ItemFactory\n"
  },
  {
    "path": "POEApi.Model/ItemFilterConfig.json",
    "chars": 2626,
    "preview": "{\n  \"fileConfig\": [\n    {\n      \"disabled\": true,\n      \"inputLocation\": \"<ITEM FILTER DIRECTORY>\\\\NeverSink's filter -"
  },
  {
    "path": "POEApi.Model/ItemFilterConfig.proto",
    "chars": 1901,
    "preview": "syntax = \"proto3\";\n\nimport \"google/protobuf/any.proto\";\n\npackage POEApi.Model.Protobuf;\n\nmessage SemanticVersion {\n  in"
  },
  {
    "path": "POEApi.Model/ItemTradeInfo.cs",
    "chars": 734,
    "preview": "namespace POEApi.Model\n{\n    public class ItemTradeInfo\n    {\n        public string Buyout { get; set; }\n        public"
  },
  {
    "path": "POEApi.Model/JSONProxy/Account.cs",
    "chars": 421,
    "preview": "namespace POEApi.Model.JSONProxy\r\n{\r\n    // Represents a pathofexile.com account; should match what is defined at\r\n    "
  },
  {
    "path": "POEApi.Model/JSONProxy/Stash.cs",
    "chars": 4107,
    "preview": "using System.Collections.Generic;\nusing Newtonsoft.Json;\n\nnamespace POEApi.Model.JSONProxy\n{\n    public class Property\n"
  },
  {
    "path": "POEApi.Model/Leaguestone.cs",
    "chars": 356,
    "preview": "using System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    [DebuggerDisplay(\"{TypeLine} Charges: {Charges.ToString()}\")]\n "
  },
  {
    "path": "POEApi.Model/LegionEmblem.cs",
    "chars": 309,
    "preview": "using POEApi.Model.Interfaces;\n\nnamespace POEApi.Model\n{\n    public class LegionEmblem : Item, ILegion\n    {\n        pu"
  },
  {
    "path": "POEApi.Model/LegionFaction.cs",
    "chars": 173,
    "preview": "namespace POEApi.Model\n{\n    public enum LegionFaction\n    {\n        Unknown,\n\n        EternalEmpire,\n        Karui,\n  "
  },
  {
    "path": "POEApi.Model/LegionSplinter.cs",
    "chars": 313,
    "preview": "using POEApi.Model.Interfaces;\n\nnamespace POEApi.Model\n{\n    public class LegionSplinter : Item, ILegion\n    {\n        "
  },
  {
    "path": "POEApi.Model/Map.cs",
    "chars": 485,
    "preview": "using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class Map : Item\n    {\n        public int MapTie"
  },
  {
    "path": "POEApi.Model/Net.cs",
    "chars": 351,
    "preview": "namespace POEApi.Model\n{\n    public class Net : Currency\n    {\n        public Net(JSONProxy.Item item) : base(item)\n   "
  },
  {
    "path": "POEApi.Model/Offering.cs",
    "chars": 163,
    "preview": "namespace POEApi.Model\n{\n    public class Offering : Item\n    {\n        public Offering(JSONProxy.Item item) : base(ite"
  },
  {
    "path": "POEApi.Model/OrbType.cs",
    "chars": 1491,
    "preview": "namespace POEApi.Model\n{\n    public enum OrbType\n    {\n        Eternal,\n        Imprint,\n        Exalted,\n        Divin"
  },
  {
    "path": "POEApi.Model/POEApi.Model.csproj",
    "chars": 9660,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "POEApi.Model/POEModel.cs",
    "chars": 13990,
    "preview": "using System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing POEApi.Infrastructure;\r\nusing POEApi.Mod"
  },
  {
    "path": "POEApi.Model/Properties/AssemblyInfo.cs",
    "chars": 1458,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "POEApi.Model/Property.cs",
    "chars": 936,
    "preview": "using System;\nusing System.Collections.Generic;\nusing Newtonsoft.Json.Linq;\n\nnamespace POEApi.Model\n{\n    public class "
  },
  {
    "path": "POEApi.Model/Prophecy.cs",
    "chars": 402,
    "preview": "using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class Prophecy : Item\n    {\n        public strin"
  },
  {
    "path": "POEApi.Model/ProxyMapper.cs",
    "chars": 19253,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing Newtonso"
  },
  {
    "path": "POEApi.Model/QuestItem.cs",
    "chars": 180,
    "preview": "using System;\n\nnamespace POEApi.Model\n{\n    public class QuestItem : Item\n    {\n        public QuestItem(JSONProxy.Item"
  },
  {
    "path": "POEApi.Model/Requirement.cs",
    "chars": 444,
    "preview": "using Newtonsoft.Json.Linq;\n\nnamespace POEApi.Model\n{\n    public class Requirement\n    {\n        public string Name { g"
  },
  {
    "path": "POEApi.Model/Resonator.cs",
    "chars": 153,
    "preview": "namespace POEApi.Model\n{\n    public class Resonator : Item\n    {\n        public Resonator(JSONProxy.Item item) : base(i"
  },
  {
    "path": "POEApi.Model/Scarab.cs",
    "chars": 1162,
    "preview": "using System;\n\nnamespace POEApi.Model\n{\n    public class Scarab : Item\n    {\n        public Scarab(JSONProxy.Item item)"
  },
  {
    "path": "POEApi.Model/Settings.cs",
    "chars": 14281,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing System.Xml.Linq;\nus"
  },
  {
    "path": "POEApi.Model/Settings.xml",
    "chars": 4787,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Settings xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceS"
  },
  {
    "path": "POEApi.Model/Settings.xsd",
    "chars": 9219,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema id=\"Settings\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:elem"
  },
  {
    "path": "POEApi.Model/Sextant.cs",
    "chars": 569,
    "preview": "namespace POEApi.Model\n{\n    public class Sextant : Item\n    {\n        public SextantType Type { get; }\n\n        public "
  },
  {
    "path": "POEApi.Model/SextantType.cs",
    "chars": 139,
    "preview": "namespace POEApi.Model\n{\n    public enum SextantType\n    {\n        Apprentice,\n        Journeyman,\n        Master,\n    "
  },
  {
    "path": "POEApi.Model/ShopSetting.cs",
    "chars": 162,
    "preview": "namespace POEApi.Model\n{\n    public class ShopSetting\n    {\n        public string ThreadId { get; set; }\n        public"
  },
  {
    "path": "POEApi.Model/Socket.cs",
    "chars": 1073,
    "preview": "namespace POEApi.Model\n{\n    public class Socket\n    {\n        public string Attribute { get; set; }\n        public int"
  },
  {
    "path": "POEApi.Model/SocketableItem.cs",
    "chars": 495,
    "preview": "using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public abstract class SocketableItem : Item\n    {\n     "
  },
  {
    "path": "POEApi.Model/StackInfo.cs",
    "chars": 1069,
    "preview": "using System;\nusing System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    //Todo: Stackable items now have it in the base o"
  },
  {
    "path": "POEApi.Model/Stash.cs",
    "chars": 9015,
    "preview": "using POEApi.Infrastructure;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing"
  },
  {
    "path": "POEApi.Model/Tab.cs",
    "chars": 1519,
    "preview": "using System;\nusing System.Diagnostics;\nnamespace POEApi.Model\n{\n    public enum TabType\n    {\n        Normal,\n        "
  },
  {
    "path": "POEApi.Model/UnknownItem.cs",
    "chars": 777,
    "preview": "namespace POEApi.Model\n{\n    public class UnknownItem : Item\n    {\n        private static JSONProxy.Item getDefaultItem"
  },
  {
    "path": "POEApi.Model/app.config",
    "chars": 2119,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-co"
  },
  {
    "path": "POEApi.Model/packages.config",
    "chars": 621,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n  <package id=\"Google.Protobuf\" version=\"3.8.0\" targetFramework=\"ne"
  },
  {
    "path": "POEApi.Transport/CachedTransport.cs",
    "chars": 4274,
    "preview": "using System.IO;\nusing POEApi.Infrastructure;\nusing System.Security;\nusing POEApi.Infrastructure.Events;\nusing System.N"
  },
  {
    "path": "POEApi.Transport/HttpTransport.cs",
    "chars": 14302,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Net;\r\nusing System.Net.Http;\r\nusing Sy"
  },
  {
    "path": "POEApi.Transport/ITransport.cs",
    "chars": 822,
    "preview": "using System.IO;\nusing System.Security;\nusing POEApi.Infrastructure.Events;\n\nnamespace POEApi.Transport\n{\n    public in"
  },
  {
    "path": "POEApi.Transport/POEApi.Transport.csproj",
    "chars": 10896,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "POEApi.Transport/Properties/AssemblyInfo.cs",
    "chars": 1414,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "POEApi.Transport/TaskThrottle.cs",
    "chars": 2922,
    "preview": "using POEApi.Infrastructure.Events;\nusing System;\nusing System.Collections.Generic;\n\nnamespace POEApi.Transport\n{\n    p"
  },
  {
    "path": "POEApi.Transport/app.config",
    "chars": 2119,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-co"
  },
  {
    "path": "POEApi.Transport/packages.config",
    "chars": 4160,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"CloudflareSolverReNgosang\" version=\"1.0.7.3\" targetFra"
  },
  {
    "path": "Procurement/App.xaml",
    "chars": 2462,
    "preview": "<Application x:Class=\"Procurement.App\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n "
  },
  {
    "path": "Procurement/App.xaml.cs",
    "chars": 1758,
    "preview": "using System.Windows;\nusing System.Text;\nusing System;\nusing POEApi.Infrastructure;\n\nnamespace Procurement\n{\n    public"
  },
  {
    "path": "Procurement/ApplicationState.cs",
    "chars": 3955,
    "preview": "using System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing POEApi.Model;\nusing System.Runt"
  },
  {
    "path": "Procurement/Controls/AbstractStashTabControl.cs",
    "chars": 5761,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;"
  },
  {
    "path": "Procurement/Controls/Category.cs",
    "chars": 875,
    "preview": "using System.Collections.ObjectModel;\nusing Procurement.ViewModel;\nusing Procurement.ViewModel.Filters;\n\nnamespace Proc"
  },
  {
    "path": "Procurement/Controls/CharacterSelector.xaml",
    "chars": 3193,
    "preview": "<UserControl x:Class=\"Procurement.Controls.CharacterSelector\"\n             xmlns=\"http://schemas.microsoft.com/winfx/20"
  },
  {
    "path": "Procurement/Controls/CharacterSelector.xaml.cs",
    "chars": 914,
    "preview": "using System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Controls;\nusing POEApi.Model;\n\nnamespace P"
  },
  {
    "path": "Procurement/Controls/CurrencyStashTab.xaml",
    "chars": 21999,
    "preview": "<local:AbstractStashTabControl x:Class=\"Procurement.Controls.CurrencyStashTab\"\n             xmlns=\"http://schemas.micro"
  },
  {
    "path": "Procurement/Controls/CurrencyStashTab.xaml.cs",
    "chars": 907,
    "preview": "using System.Collections.Generic;\nusing System.Windows.Controls;\nusing Procurement.ViewModel;\nusing Procurement.ViewMod"
  },
  {
    "path": "Procurement/Controls/Equipped.xaml",
    "chars": 816,
    "preview": "<UserControl x:Class=\"Procurement.Controls.Equipped\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/p"
  },
  {
    "path": "Procurement/Controls/Equipped.xaml.cs",
    "chars": 5302,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;"
  },
  {
    "path": "Procurement/Controls/EssenceStashTab.xaml",
    "chars": 20937,
    "preview": "<local:AbstractStashTabControl x:Class=\"Procurement.Controls.EssenceStashTab\"\n             xmlns=\"http://schemas.micros"
  },
  {
    "path": "Procurement/Controls/EssenceStashTab.xaml.cs",
    "chars": 901,
    "preview": "using System.Collections.Generic;\nusing System.Windows.Controls;\nusing Procurement.ViewModel;\nusing Procurement.ViewMod"
  },
  {
    "path": "Procurement/Controls/ExpressionDark.xaml",
    "chars": 228309,
    "preview": "<!--\n// (c) Copyright Microsoft Corporation.\n// This source is subject to Microsoft Public License (Ms-PL).\n// Please s"
  },
  {
    "path": "Procurement/Controls/ExpressionDarkGrid.xaml",
    "chars": 39566,
    "preview": "<!--\n// Copyright (c) Trevor Webster\n// This source is subject to the Microsoft Public License (Ms-PL).\n// Please see h"
  },
  {
    "path": "Procurement/Controls/ExpressionDarkGrid_brushes.xaml",
    "chars": 6934,
    "preview": "<!--\n// Copyright (c) Trevor Webster\n// This source is subject to the Microsoft Public License (Ms-PL).\n// Please see h"
  },
  {
    "path": "Procurement/Controls/ForumExport.xaml",
    "chars": 4147,
    "preview": "<UserControl x:Class=\"Procurement.Controls.ForumExport\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xam"
  },
  {
    "path": "Procurement/Controls/ForumExport.xaml.cs",
    "chars": 1010,
    "preview": "using System.Windows;\nusing System.Windows.Controls;\nusing Procurement.ViewModel;\n\nnamespace Procurement.Controls\n{\n   "
  },
  {
    "path": "Procurement/Controls/ForumExportTemplateReader.cs",
    "chars": 2548,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Reflection;\nusing Sy"
  },
  {
    "path": "Procurement/Controls/ForumTemplate.xaml",
    "chars": 1325,
    "preview": "<UserControl x:Class=\"Procurement.Controls.ForumTemplate\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/x"
  },
  {
    "path": "Procurement/Controls/ForumTemplate.xaml.cs",
    "chars": 973,
    "preview": "using System.Windows.Controls;\nusing Procurement.ViewModel;\nusing System.Windows;\n\nnamespace Procurement.Controls\n{\n   "
  },
  {
    "path": "Procurement/Controls/FragmentStashTab.xaml",
    "chars": 18624,
    "preview": "<local:AbstractStashTabControl x:Class=\"Procurement.Controls.FragmentStashTab\"\n             xmlns=\"http://schemas.micro"
  },
  {
    "path": "Procurement/Controls/FragmentStashTab.xaml.cs",
    "chars": 883,
    "preview": "using System.Collections.Generic;\nusing System.Windows.Controls;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procur"
  },
  {
    "path": "Procurement/Controls/Inventory.xaml",
    "chars": 951,
    "preview": "<UserControl x:Class=\"Procurement.Controls.Inventory\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/"
  },
  {
    "path": "Procurement/Controls/Inventory.xaml.cs",
    "chars": 5025,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;"
  },
  {
    "path": "Procurement/Controls/ItemDisplay.xaml",
    "chars": 1546,
    "preview": "<UserControl x:Class=\"Procurement.Controls.ItemDisplay\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xam"
  },
  {
    "path": "Procurement/Controls/ItemDisplay.xaml.cs",
    "chars": 8974,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\n"
  },
  {
    "path": "Procurement/Controls/ItemHover.xaml",
    "chars": 31036,
    "preview": "<UserControl x:Class=\"Procurement.Controls.ItemHover\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/"
  },
  {
    "path": "Procurement/Controls/ItemHover.xaml.cs",
    "chars": 211,
    "preview": "using System.Windows.Controls;\n\nnamespace Procurement.Controls\n{\n    public partial class ItemHover : UserControl\n    {"
  },
  {
    "path": "Procurement/Controls/ItemHoverHeader.xaml",
    "chars": 20527,
    "preview": "<UserControl x:Class=\"Procurement.Controls.ItemHoverHeader\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006"
  },
  {
    "path": "Procurement/Controls/ItemHoverHeader.xaml.cs",
    "chars": 632,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing Syste"
  },
  {
    "path": "Procurement/Controls/ItemHoverImage.xaml",
    "chars": 14063,
    "preview": "<UserControl x:Class=\"Procurement.Controls.ItemHoverImage\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/"
  },
  {
    "path": "Procurement/Controls/ItemHoverImage.xaml.cs",
    "chars": 221,
    "preview": "using System.Windows.Controls;\n\nnamespace Procurement.Controls\n{\n    public partial class ItemHoverImage : UserControl\n"
  },
  {
    "path": "Procurement/Controls/LeagueSelection.xaml",
    "chars": 1385,
    "preview": "<UserControl x:Class=\"Procurement.Controls.LeagueSelection\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006"
  },
  {
    "path": "Procurement/Controls/LeagueSelection.xaml.cs",
    "chars": 686,
    "preview": "using Procurement.ViewModel;\nusing System.Linq;\nusing System.Windows.Controls;\n\nnamespace Procurement.Controls\n{\n    pu"
  },
  {
    "path": "Procurement/Controls/RecipeResults.xaml",
    "chars": 6658,
    "preview": "<UserControl x:Class=\"Procurement.Controls.RecipeResults\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/x"
  },
  {
    "path": "Procurement/Controls/RecipeResults.xaml.cs",
    "chars": 995,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing Syste"
  },
  {
    "path": "Procurement/Controls/SetBuyoutView.xaml",
    "chars": 5697,
    "preview": "<UserControl x:Class=\"Procurement.Controls.SetBuyoutView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/x"
  },
  {
    "path": "Procurement/Controls/SetBuyoutView.xaml.cs",
    "chars": 1685,
    "preview": "using POEApi.Model;\nusing Procurement.ViewModel;\nusing System;\nusing System.Windows.Controls;\nusing System.Windows.Inpu"
  },
  {
    "path": "Procurement/Controls/SetTabBuyoutView.xaml",
    "chars": 2460,
    "preview": "<Window x:Class=\"Procurement.Controls.SetTabBuyoutView\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pre"
  },
  {
    "path": "Procurement/Controls/SetTabBuyoutView.xaml.cs",
    "chars": 1224,
    "preview": "using Procurement.ViewModel;\nusing System.Windows;\nusing System.Windows.Input;\n\nnamespace Procurement.Controls\n{\n    pu"
  },
  {
    "path": "Procurement/Controls/StashTabControl.xaml",
    "chars": 984,
    "preview": "<controls:AbstractStashTabControl x:Class=\"Procurement.Controls.StashTabControl\"\n             xmlns=\"http://schemas.mic"
  },
  {
    "path": "Procurement/Controls/StashTabControl.xaml.cs",
    "chars": 4216,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Controls;\nusing System.Windows."
  },
  {
    "path": "Procurement/Controls/TabControlStyle.xaml",
    "chars": 8771,
    "preview": "<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http"
  },
  {
    "path": "Procurement/Controls/TradeSettings.xaml",
    "chars": 4654,
    "preview": "<UserControl x:Class=\"Procurement.Controls.BuyoutSettings\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/"
  },
  {
    "path": "Procurement/Controls/TradeSettings.xaml.cs",
    "chars": 538,
    "preview": "using Procurement.ViewModel;\nusing System.Windows.Controls;\nusing System.Diagnostics;\n\nnamespace Procurement.Controls\n{"
  },
  {
    "path": "Procurement/ForumExportTemplate.txt",
    "chars": 5047,
    "preview": "Welcome to my shop! (Last Updated {LastUpdated}),\n\nPlease message me here or ingame if something catches your eye. My I"
  },
  {
    "path": "Procurement/Interfaces/IStashControl.cs",
    "chars": 361,
    "preview": "using System.Collections.Generic;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.Interfaces\n{\n    public in"
  },
  {
    "path": "Procurement/MainWindow.xaml",
    "chars": 10536,
    "preview": "<Window x:Class=\"Procurement.MainWindow\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    "
  },
  {
    "path": "Procurement/MainWindow.xaml.cs",
    "chars": 2301,
    "preview": "using POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.ViewModel;\nusing System.Windows;\nusing System.Windows"
  },
  {
    "path": "Procurement/Procurement.csproj",
    "chars": 40155,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "Procurement/Properties/AssemblyInfo.cs",
    "chars": 2233,
    "preview": "using System.Reflection;\nusing System.Resources;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropSer"
  },
  {
    "path": "Procurement/Properties/Resources.Designer.cs",
    "chars": 3867,
    "preview": "//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code"
  },
  {
    "path": "Procurement/Properties/Resources.resx",
    "chars": 6422,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Procurement/Properties/Settings.Designer.cs",
    "chars": 1092,
    "preview": "//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code"
  },
  {
    "path": "Procurement/Properties/Settings.settings",
    "chars": 193,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"uri:settings\" CurrentProfile=\"(Default)\">\n  <Profiles>\n    "
  },
  {
    "path": "Procurement/RelayCommand.cs",
    "chars": 1249,
    "preview": "using System;\nusing System.Diagnostics;\nusing System.Windows.Input;\n\nnamespace Procurement.View.ViewModel\n{\n    public c"
  },
  {
    "path": "Procurement/Utility/AlphaHittestedImage.cs",
    "chars": 1092,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing Syste"
  },
  {
    "path": "Procurement/Utility/CharacterTabInjector.cs",
    "chars": 2925,
    "preview": "using System.Linq;\nusing POEApi.Infrastructure;\nusing POEApi.Model;\nusing System.Collections.Generic;\nusing System;\n\nna"
  },
  {
    "path": "Procurement/Utility/ClientLogFileEventArgs.cs",
    "chars": 554,
    "preview": "using System;\n\nnamespace Procurement.Utility\n{\n    public class ClientLogFileEventArgs : EventArgs\n    {\n        public"
  },
  {
    "path": "Procurement/Utility/ClientLogFileWatcher.cs",
    "chars": 6690,
    "preview": "using POEApi.Infrastructure;\nusing POEApi.Model;\nusing System;\nusing System.IO;\nusing System.Linq;\nusing System.Text.Re"
  },
  {
    "path": "Procurement/Utility/ExportPreferenceManager.cs",
    "chars": 3826,
    "preview": "using POEApi.Infrastructure;\nusing Procurement.ViewModel;\nusing System;\nusing System.Collections.Generic;\nusing System."
  },
  {
    "path": "Procurement/Utility/ItemHoverRenderer.cs",
    "chars": 3144,
    "preview": "using Microsoft.Win32;\nusing POEApi.Infrastructure;\nusing POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.V"
  },
  {
    "path": "Procurement/Utility/PoeTradeOnlineHelper.cs",
    "chars": 4349,
    "preview": "using POEApi.Infrastructure;\nusing POEApi.Model;\nusing System;\nusing System.Collections.Specialized;\nusing System.Diagn"
  },
  {
    "path": "Procurement/Utility/StashHelper.cs",
    "chars": 6287,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Windows;\nusing System.Windows.Controls;\nu"
  },
  {
    "path": "Procurement/Utility/VersionChecker.cs",
    "chars": 2448,
    "preview": "using POEApi.Infrastructure;\nusing POEApi.Model;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnosti"
  },
  {
    "path": "Procurement/View/AboutView.xaml",
    "chars": 4882,
    "preview": "<UserControl x:Class=\"Procurement.View.AboutView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pres"
  },
  {
    "path": "Procurement/View/AboutView.xaml.cs",
    "chars": 590,
    "preview": "using System.Windows.Controls;\n\nnamespace Procurement.View\n{\n    public partial class AboutView : UserControl, IView\n  "
  },
  {
    "path": "Procurement/View/BindableRichTextBox.cs",
    "chars": 973,
    "preview": "using System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Documents;\n\nnamespace Procurement.View\n{\n    "
  },
  {
    "path": "Procurement/View/Block.xaml",
    "chars": 617,
    "preview": "<UserControl x:Class=\"Procurement.View.Block\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n   "
  },
  {
    "path": "Procurement/View/Block.xaml.cs",
    "chars": 598,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing Syste"
  },
  {
    "path": "Procurement/View/Converters/CharacterToImageConverter.cs",
    "chars": 902,
    "preview": "using System;\nusing System.Windows.Data;\nusing System.Windows.Media.Imaging;\nusing POEApi.Model;\n\nnamespace Procurement"
  },
  {
    "path": "Procurement/View/Converters/CharacterToLevelConverter.cs",
    "chars": 690,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/Converters/CurrencyCraftingSlotScalingConverter.cs",
    "chars": 1001,
    "preview": "using POEApi.Model;\nusing System;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace Procurement.View\n{\n"
  },
  {
    "path": "Procurement/View/Converters/FilterListToNameConverter.cs",
    "chars": 732,
    "preview": "using System.Windows.Data;\nusing System.Collections.Generic;\nusing Procurement.ViewModel.Filters;\nusing System.Linq;\n\nn"
  },
  {
    "path": "Procurement/View/Converters/ItemDisplayConverter.cs",
    "chars": 753,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/Converters/ItemExplicitModsToFormattedRunConverter.cs",
    "chars": 942,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/Converters/ItemPropertyToFormattedRunConverter.cs",
    "chars": 805,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/Converters/ItemRequirementToFormattedRunConverter.cs",
    "chars": 1792,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/Converters/ItemToColorBrushConverter.cs",
    "chars": 2593,
    "preview": "using System;\nusing System.Globalization;\nusing System.Windows.Data;\nusing System.Windows.Media;\n\nusing POEApi.Model;\n\n"
  },
  {
    "path": "Procurement/View/Converters/ItemToItemHoverSymbolPath.cs",
    "chars": 1379,
    "preview": "using System;\nusing System.Globalization;\nusing System.Windows.Data;\nusing System.Windows.Media;\nusing POEApi.Model;\n\nn"
  },
  {
    "path": "Procurement/View/Converters/ItemToItemHoverSymbolVisibility.cs",
    "chars": 910,
    "preview": "using System;\nusing System.Globalization;\nusing System.Windows;\nusing System.Windows.Data;\nusing System.Windows.Media;\n"
  },
  {
    "path": "Procurement/View/Converters/ObjectInListMultiConverter.cs",
    "chars": 712,
    "preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq"
  },
  {
    "path": "Procurement/View/Converters/RecipeDescriptionConverter.cs",
    "chars": 873,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Data;\nusing Procurement.ViewMod"
  },
  {
    "path": "Procurement/View/Converters/ResultMatchConverter.cs",
    "chars": 2774,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/Converters/TabIDToStashControlConverter.cs",
    "chars": 3045,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windo"
  },
  {
    "path": "Procurement/View/IViewModel.cs",
    "chars": 132,
    "preview": "using System.Windows.Controls;\n\nnamespace Procurement.View\n{\n    public interface IView\n    {\n        Grid Content { ge"
  },
  {
    "path": "Procurement/View/InventoryView.xaml",
    "chars": 3852,
    "preview": "<UserControl x:Class=\"Procurement.View.InventoryView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/"
  },
  {
    "path": "Procurement/View/InventoryView.xaml.cs",
    "chars": 397,
    "preview": "using System.Windows.Controls;\nusing Procurement.ViewModel;\n\nnamespace Procurement.View\n{\n    public partial class Inve"
  },
  {
    "path": "Procurement/View/ItemExplicitModsToFormattedRunConverter.cs",
    "chars": 921,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/ItemPropertyToFormattedRunConverter.cs",
    "chars": 805,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/ItemRequirementToFormattedRunConverter.cs",
    "chars": 1424,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/ItemToColorBrushConverter.cs",
    "chars": 2083,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing "
  },
  {
    "path": "Procurement/View/LoadingAnimation.xaml",
    "chars": 41556,
    "preview": "<UserControl x:Class=\"Procurement.View.LoadingAnimation\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presen"
  },
  {
    "path": "Procurement/View/LoadingAnimation.xaml.cs",
    "chars": 631,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing Syste"
  },
  {
    "path": "Procurement/View/LoginView.xaml",
    "chars": 7598,
    "preview": "<UserControl x:Class=\"Procurement.View.LoginView\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentat"
  },
  {
    "path": "Procurement/View/LoginView.xaml.cs",
    "chars": 1486,
    "preview": "using System.Windows;\nusing System.Windows.Controls;\nusing Procurement.ViewModel;\nusing System.Windows.Media;\nusing Sys"
  },
  {
    "path": "Procurement/View/RecipeView.xaml",
    "chars": 592,
    "preview": "<UserControl x:Class=\"Procurement.View.RecipeView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pre"
  },
  {
    "path": "Procurement/View/RecipeView.xaml.cs",
    "chars": 807,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing Syste"
  }
]

// ... and 251 more files (download for full content)

About this extraction

This page contains the full source code of the Stickymaddness/Procurement GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 451 files (2.8 MB), approximately 752.0k tokens, and a symbol index with 1593 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!