[
  {
    "path": ".circleci/config.yml",
    "content": "version: 2.1\nexecutors:\n  unity:\n    # https://hub.docker.com/r/gableroux/unity3d/tags\n    parameters:\n      version: {type: string}\n    docker:\n      - image: gableroux/unity3d:<< parameters.version >>\ncommands:\n  unity_activate:\n    parameters:\n      unity_version: {type: string}\n      unity_license: {type: string}\n    steps:\n      # get activation file, if fail to activate unity, use this key and activate from https://license.unity3d.com/manual\n      - run: apt update && apt install libunwind8 -y\n      - run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -logFile -createManualActivationFile || exit 0\n      - run: cat Unity_v<< parameters.unity_version >>.alf\n      # get from UNITY_LICENSE envvar(base64 encoded(cat foo.ulf | base64 )), this file is generated from above manual activation\n      - run: echo << parameters.unity_license >> | base64 -di  >> .circleci/Unity.ulf\n      - run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -manualLicenseFile .circleci/Unity.ulf || exit 0\njobs:\n  build-and-test:\n    parameters:\n      unity_version: {type: string}\n      unity_license: {type: string}\n    executor:\n      name: unity\n      version: << parameters.unity_version >>\n    steps:\n      - checkout\n      - unity_activate:\n          unity_version: << parameters.unity_version >>\n          unity_license: << parameters.unity_license >>\n      - run:\n          name: Build Linux(Mono)\n          command: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -projectPath . -executeMethod UnitTestBuilder.BuildUnitTest /headless /ScriptBackend Mono2x /BuildTarget StandaloneLinux64\n          working_directory: .\n      - run: ./bin/UnitTest/StandaloneLinux64_Mono2x/test\n  build-and-create-package:\n    parameters:\n      unity_version: {type: string}\n      unity_license: {type: string}\n    executor:\n      name: unity\n      version: << parameters.unity_version >>\n    steps:\n      - checkout\n      - unity_activate:\n          unity_version: << parameters.unity_version >>\n          unity_license: << parameters.unity_license >>\n      - run:\n          name: Export unitypackage\n          command: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -projectPath . -executeMethod PackageExporter.Export\n          working_directory: .\n      - store_artifacts:\n          path: ./UniRx.unitypackage\n          destination: /UniRx.unitypackage\nworkflows:\n  version: 2\n  build-unity:\n    jobs:\n      - build-and-test:\n          unity_version: 2019.1.2f1\n          unity_license: ${UNITY_LICENSE_2019_1}\n      - build-and-create-package:\n          unity_version: 2019.1.2f1\n          unity_license: ${UNITY_LICENSE_2019_1}"
  },
  {
    "path": ".gitignore",
    "content": "# Unity\n\n*.pidb\n*.suo\n*.userprefs\n*.vsmdi\n*.testsettings\n*/bin\n*/obj\n*/publish\n$tf\nTestResults\n!*.sln\n!*.csproj\n!*/*.csproj\n[Ll]ibrary/\n[Tt]emp/\n[Oo]bj/\n\n# VS2013\n\n# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)\n[Bb]in/\n[Oo]bj/\n\n# mstest test results\nTestResults\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User-specific files\n*.suo\n*.user\n*.sln.docstates\n\n# Build results\n[Dd]ebug/\n[Rr]elease/\nx64/\n*_i.c\n*_p.c\n*.ilk\n# *.meta # already ignored in Unity section\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.log\n*.vspscc\n*.vssscc\n.builds\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opensdf\n*.sdf\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*\n\n# NCrunch\n*.ncrunch*\n.*crunch*.local.xml\n\n# Installshield output folder \n[Ee]xpress\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish\n\n# Publish Web Output\n*.Publish.xml\n\n# NuGet Packages Directory\npackages\n\n# Windows Azure Build Output\ncsx\n*.build.csdef\n\n# Windows Store app package directory\nAppPackages/\n\n# Others\n[Bb]in\n[Oo]bj\nsql\nTestResults\n[Tt]est[Rr]esult*\n*.Cache\nClientBin\n[Ss]tyle[Cc]op.*\n~$*\n*.dbmdl\nGenerated_Code #added for RIA/Silverlight projects\n\n# Backup & report files from converting an old project file to a newer\n# Visual Studio version. Backup files are not needed, because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nAssets/WSATestCertificate.pfx\n.vs/\n\nPackages"
  },
  {
    "path": ".nuget/NuGet.Config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <solution>\n    <add key=\"disableSourceControlIntegration\" value=\"true\" />\n  </solution>\n</configuration>"
  },
  {
    "path": ".nuget/NuGet.targets",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n    <PropertyGroup>\n        <SolutionDir Condition=\"$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'\">$(MSBuildProjectDirectory)\\..\\</SolutionDir>\n\n        <!-- Enable the restore command to run before builds -->\n        <RestorePackages Condition=\"  '$(RestorePackages)' == '' \">false</RestorePackages>\n\n        <!-- Property that enables building a package from a project -->\n        <BuildPackage Condition=\" '$(BuildPackage)' == '' \">false</BuildPackage>\n\n        <!-- Determines if package restore consent is required to restore packages -->\n        <RequireRestoreConsent Condition=\" '$(RequireRestoreConsent)' != 'false' \">true</RequireRestoreConsent>\n\n        <!-- Download NuGet.exe if it does not already exist -->\n        <DownloadNuGetExe Condition=\" '$(DownloadNuGetExe)' == '' \">false</DownloadNuGetExe>\n    </PropertyGroup>\n\n    <ItemGroup Condition=\" '$(PackageSources)' == '' \">\n        <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\\NuGet\\NuGet.Config will be used -->\n        <!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->\n        <!--\n            <PackageSource Include=\"https://www.nuget.org/api/v2/\" />\n            <PackageSource Include=\"https://my-nuget-source/nuget/\" />\n        -->\n    </ItemGroup>\n\n    <PropertyGroup Condition=\" '$(OS)' == 'Windows_NT'\">\n        <!-- Windows specific commands -->\n        <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), \".nuget\"))</NuGetToolsPath>\n    </PropertyGroup>\n\n    <PropertyGroup Condition=\" '$(OS)' != 'Windows_NT'\">\n        <!-- We need to launch nuget.exe with the mono command if we're not on windows -->\n        <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>\n    </PropertyGroup>\n\n    <PropertyGroup>\n        <PackagesProjectConfig Condition=\" '$(OS)' == 'Windows_NT'\">$(MSBuildProjectDirectory)\\packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>\n        <PackagesProjectConfig Condition=\" '$(OS)' != 'Windows_NT'\">$(MSBuildProjectDirectory)\\packages.$(MSBuildProjectName).config</PackagesProjectConfig>\n    </PropertyGroup>\n\n    <PropertyGroup>\n      <PackagesConfig Condition=\"Exists('$(MSBuildProjectDirectory)\\packages.config')\">$(MSBuildProjectDirectory)\\packages.config</PackagesConfig>\n      <PackagesConfig Condition=\"Exists('$(PackagesProjectConfig)')\">$(PackagesProjectConfig)</PackagesConfig>\n    </PropertyGroup>\n    \n    <PropertyGroup>\n        <!-- NuGet command -->\n        <NuGetExePath Condition=\" '$(NuGetExePath)' == '' \">$(NuGetToolsPath)\\NuGet.exe</NuGetExePath>\n        <PackageSources Condition=\" $(PackageSources) == '' \">@(PackageSource)</PackageSources>\n\n        <NuGetCommand Condition=\" '$(OS)' == 'Windows_NT'\">\"$(NuGetExePath)\"</NuGetCommand>\n        <NuGetCommand Condition=\" '$(OS)' != 'Windows_NT' \">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>\n\n        <PackageOutputDir Condition=\"$(PackageOutputDir) == ''\">$(TargetDir.Trim('\\\\'))</PackageOutputDir>\n\n        <RequireConsentSwitch Condition=\" $(RequireRestoreConsent) == 'true' \">-RequireConsent</RequireConsentSwitch>\n        <NonInteractiveSwitch Condition=\" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' \">-NonInteractive</NonInteractiveSwitch>\n\n        <PaddedSolutionDir Condition=\" '$(OS)' == 'Windows_NT'\">\"$(SolutionDir) \"</PaddedSolutionDir>\n        <PaddedSolutionDir Condition=\" '$(OS)' != 'Windows_NT' \">\"$(SolutionDir)\"</PaddedSolutionDir>\n\n        <!-- Commands -->\n        <RestoreCommand>$(NuGetCommand) install \"$(PackagesConfig)\" -source \"$(PackageSources)\"  $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>\n        <BuildCommand>$(NuGetCommand) pack \"$(ProjectPath)\" -Properties \"Configuration=$(Configuration);Platform=$(Platform)\" $(NonInteractiveSwitch) -OutputDirectory \"$(PackageOutputDir)\" -symbols</BuildCommand>\n\n        <!-- We need to ensure packages are restored prior to assembly resolve -->\n        <BuildDependsOn Condition=\"$(RestorePackages) == 'true'\">\n            RestorePackages;\n            $(BuildDependsOn);\n        </BuildDependsOn>\n\n        <!-- Make the build depend on restore packages -->\n        <BuildDependsOn Condition=\"$(BuildPackage) == 'true'\">\n            $(BuildDependsOn);\n            BuildPackage;\n        </BuildDependsOn>\n    </PropertyGroup>\n\n    <Target Name=\"CheckPrerequisites\">\n        <!-- Raise an error if we're unable to locate nuget.exe  -->\n        <Error Condition=\"'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')\" Text=\"Unable to locate '$(NuGetExePath)'\" />\n        <!--\n        Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.\n        This effectively acts as a lock that makes sure that the download operation will only happen once and all\n        parallel builds will have to wait for it to complete.\n        -->\n        <MsBuild Targets=\"_DownloadNuGet\" Projects=\"$(MSBuildThisFileFullPath)\" Properties=\"Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)\" />\n    </Target>\n\n    <Target Name=\"_DownloadNuGet\">\n        <DownloadNuGet OutputFilename=\"$(NuGetExePath)\" Condition=\" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')\" />\n    </Target>\n\n    <Target Name=\"RestorePackages\" DependsOnTargets=\"CheckPrerequisites\">        \n        <Exec Command=\"$(RestoreCommand)\"\n              Condition=\"'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')\" />\n\n        <Exec Command=\"$(RestoreCommand)\"\n              LogStandardErrorAsError=\"true\"\n              Condition=\"'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')\" />\n    </Target>\n\n    <Target Name=\"BuildPackage\" DependsOnTargets=\"CheckPrerequisites\">\n        <Exec Command=\"$(BuildCommand)\"\n              Condition=\" '$(OS)' != 'Windows_NT' \" />\n\n        <Exec Command=\"$(BuildCommand)\"\n              LogStandardErrorAsError=\"true\"\n              Condition=\" '$(OS)' == 'Windows_NT' \" />\n    </Target>\n\n    <UsingTask TaskName=\"DownloadNuGet\" TaskFactory=\"CodeTaskFactory\" AssemblyFile=\"$(MSBuildToolsPath)\\Microsoft.Build.Tasks.v4.0.dll\">\n        <ParameterGroup>\n            <OutputFilename ParameterType=\"System.String\" Required=\"true\" />\n        </ParameterGroup>\n        <Task>\n            <Reference Include=\"System.Core\" />\n            <Using Namespace=\"System\" />\n            <Using Namespace=\"System.IO\" />\n            <Using Namespace=\"System.Net\" />\n            <Using Namespace=\"Microsoft.Build.Framework\" />\n            <Using Namespace=\"Microsoft.Build.Utilities\" />\n            <Code Type=\"Fragment\" Language=\"cs\">\n                <![CDATA[\n                try {\n                    OutputFilename = Path.GetFullPath(OutputFilename);\n\n                    Log.LogMessage(\"Downloading latest version of NuGet.exe...\");\n                    WebClient webClient = new WebClient();\n                    webClient.DownloadFile(\"https://www.nuget.org/nuget.exe\", OutputFilename);\n\n                    return true;\n                }\n                catch (Exception ex) {\n                    Log.LogErrorFromException(ex);\n                    return false;\n                }\n            ]]>\n            </Code>\n        </Task>\n    </UsingTask>\n</Project>\n"
  },
  {
    "path": ".nuget/UniRx.nuspec",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<package xmlns=\"http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd\">\n    <metadata>\n        <id>UniRx</id>\n        <version>5.4.1.0</version>\n        <title>UniRx</title>\n        <authors>neuecc</authors>\n        <owners>neuecc</owners>\n        <requireLicenseAcceptance>false</requireLicenseAcceptance>\n        <description>Reactive Extensions for Unity. This is .NET 3.5 subset of UniRx.</description>\n        <releaseNotes>\n            <![CDATA[\nImprovement: Where().Select(), Select().Where() peformance was optimized that combine funcs at internal\nImprovement: Observable.Return performance was optimized that reduced memory cost\nImprovement: Observable.Return(bool) was optimzied perofmrance that allocate zero memory\nImprovement: Observable.ReturnUnit was optimzied perofmrance that allocate zero memory\nImprovement: Observable.Empty was optimzied perofmrance that allocate zero memory\nImprovement: Observable.Never was optimzied perofmrance that allocate zero memory\nImprovement: ReactiveCollection, ReactiveDictionary implements dispose pattern\nFix: Remove indexer.set of IReadOnlyReactiveDictionary\n            ]]>\n        </releaseNotes>\n        <language>en-US</language>\n        <licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>\n        <projectUrl>https://github.com/neuecc/UniRx</projectUrl>\n        <tags>Rx Unity LINQ</tags>\n    </metadata>\n    <files>\n        <file src=\"..\\Dlls\\UniRx.Library\\bin\\Release\\UniRx.dll\" target=\"lib\" />\n        <file src=\"..\\Dlls\\UniRx.Library\\bin\\Release\\UniRx.xml\" target=\"lib\" />\n    </files>\n</package>"
  },
  {
    "path": ".nuget/pack.bat",
    "content": "nuget pack UniRx.nuspec"
  },
  {
    "path": ".nuget/push.bat",
    "content": "nuget push UniRx.5.4.1.0.nupkg"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer/Diagnostic.nuspec",
    "content": "﻿<?xml version=\"1.0\"?>\n<package xmlns=\"http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd\">\n    <metadata>\n        <id>UniRxAnalyzer</id>\n        <version>1.0.4.1</version>\n        <title>UniRxAnalyzer</title>\n        <authors>neuecc</authors>\n        <projectUrl>https://github.com/neuecc/UniRx</projectUrl>\n        <requireLicenseAcceptance>false</requireLicenseAcceptance>\n        <description>Various Analyzers for UniRx</description>\n        <releaseNotes>Fix show invalid warning when IObservable in Constructor.</releaseNotes>\n        <tags>UniRx, analyzers</tags>\n    </metadata>\n    <files>\n        <file src=\"*.dll\" target=\"analyzers\\dotnet\\cs\" exclude=\"**\\Microsoft.CodeAnalysis.*;**\\System.Collections.Immutable.*;**\\System.Reflection.Metadata.*;**\\System.Composition.*\" />\n        <file src=\"tools\\*.ps1\" target=\"tools\\\" />\n    </files>\n</package>"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer/HandleObservableAnalyzer.cs",
    "content": "using System.Collections.Immutable;\nusing System.Linq;\nusing Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.CSharp;\nusing Microsoft.CodeAnalysis.CSharp.Syntax;\nusing Microsoft.CodeAnalysis.Diagnostics;\n\nnamespace UniRxAnalyzer\n{\n    [DiagnosticAnalyzer(LanguageNames.CSharp)]\n    public class HandleObservableAnalyzer : DiagnosticAnalyzer\n    {\n        public const string DiagnosticId = \"HandleObservable\";\n\n        internal const string Title = \"IObservable<T> does not handled.\";\n        internal const string MessageFormat = \"This call does not handle IObservable<T>.\";\n        internal const string Description = \"IObservable<T> should be handled(assign, subscribe, chain operator).\";\n        internal const string Category = \"Usage\";\n\n        internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: Description);\n\n        public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get { return ImmutableArray.Create(Rule); } }\n\n        public override void Initialize(AnalysisContext context)\n        {\n            context.RegisterSyntaxNodeAction(AnalyzeMethodDeclaration, SyntaxKind.MethodDeclaration);\n        }\n\n        private static void AnalyzeMethodDeclaration(SyntaxNodeAnalysisContext context)\n        {\n            var invocationExpressions = context.Node\n                .DescendantNodes()\n                .OfType<InvocationExpressionSyntax>();\n\n            foreach (var expr in invocationExpressions)\n            {\n                var type = context.SemanticModel.GetTypeInfo(expr).Type;\n                // UniRx.IObservable? System.IObservable?\n                if (new[] { type }.Concat(type.AllInterfaces).Any(x => x.Name == \"IObservable\"))\n                {\n                    if (ValidateInvocation(expr)) continue;\n\n                    // Report Warning\n                    var diagnostic = Diagnostic.Create(Rule, expr.GetLocation());\n                    context.ReportDiagnostic(diagnostic);\n                }\n            }\n        }\n\n        static bool ValidateInvocation(InvocationExpressionSyntax expr)\n        {\n            bool allAncestorsIsParenthes = true;\n            foreach (var x in expr.Ancestors())\n            {\n                // scope is in lambda, method\n                if (x.IsKind(SyntaxKind.SimpleLambdaExpression) || x.IsKind(SyntaxKind.ParenthesizedLambdaExpression) || x.IsKind(SyntaxKind.ArrowExpressionClause))\n                {\n                    // () => M()\n                    if (allAncestorsIsParenthes) return true;\n                    break;\n                }\n                if (x.IsKind(SyntaxKind.MethodDeclaration)) break;\n                if (x.IsKind(SyntaxKind.PropertyDeclaration)) break;\n                if (x.IsKind(SyntaxKind.ConstructorDeclaration)) break;\n\n                // x = M()\n                if (x.IsKind(SyntaxKind.SimpleAssignmentExpression)) return true;\n                // var x = M()\n                if (x.IsKind(SyntaxKind.VariableDeclarator)) return true;\n                // return M()\n                if (x.IsKind(SyntaxKind.ReturnStatement)) return true;\n                // from x in M()\n                if (x.IsKind(SyntaxKind.FromClause)) return true;\n                // (bool) ? M() : M()\n                if (x.IsKind(SyntaxKind.ConditionalExpression)) return true;\n                // M(M())\n                if (x.IsKind(SyntaxKind.InvocationExpression)) return true;\n                // new C(M())\n                if (x.IsKind(SyntaxKind.ObjectCreationExpression)) return true;\n\n                // (((((M()))))\n                if (!x.IsKind(SyntaxKind.ParenthesizedExpression))\n                {\n                    allAncestorsIsParenthes = false;\n                }\n            }\n\n            // Okay => M().M()\n            if (expr.DescendantNodes().OfType<InvocationExpressionSyntax>().Any()) return true;\n\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"UniRxAnalyzer\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UniRxAnalyzer\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n[assembly: AssemblyVersion(\"1.0.4.1\")]\n[assembly: AssemblyFileVersion(\"1.0.4.1\")]"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer/UniRxAnalyzer.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{08E3D837-5096-4CB4-84B2-149000DC691D}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UniRxAnalyzer</RootNamespace>\n    <AssemblyName>UniRxAnalyzer</AssemblyName>\n    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <TargetFrameworkProfile>Profile7</TargetFrameworkProfile>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"HandleObservableAnalyzer.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"Diagnostic.nuspec\">\n      <SubType>Designer</SubType>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </None>\n    <None Include=\"packages.config\" />\n    <None Include=\"tools\\install.ps1\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </None>\n    <None Include=\"tools\\uninstall.ps1\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <Analyzer Include=\"..\\..\\..\\packages\\Microsoft.CodeAnalysis.Analyzers.1.1.0\\analyzers\\dotnet\\cs\\Microsoft.CodeAnalysis.Analyzers.dll\" />\n    <Analyzer Include=\"..\\..\\..\\packages\\Microsoft.CodeAnalysis.Analyzers.1.1.0\\analyzers\\dotnet\\cs\\Microsoft.CodeAnalysis.CSharp.Analyzers.dll\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.CodeAnalysis, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.Common.1.2.1\\lib\\portable-net45+win8\\Microsoft.CodeAnalysis.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.CSharp, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.CSharp.1.2.1\\lib\\portable-net45+win8\\Microsoft.CodeAnalysis.CSharp.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.CSharp.Workspaces, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.CSharp.Workspaces.1.2.1\\lib\\portable-net45+win8\\Microsoft.CodeAnalysis.CSharp.Workspaces.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.Workspaces, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.Workspaces.Common.1.2.1\\lib\\portable-net45+win8\\Microsoft.CodeAnalysis.Workspaces.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Collections.Immutable, Version=1.1.37.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\System.Collections.Immutable.1.1.37\\lib\\portable-net45+win8+wp8+wpa81\\System.Collections.Immutable.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.AttributedModel, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.AttributedModel.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.Convention, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.Convention.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.Hosting, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.Hosting.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.Runtime, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.Runtime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.TypedParts, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.TypedParts.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Reflection.Metadata, Version=1.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\System.Reflection.Metadata.1.2.0\\lib\\portable-net45+win8\\System.Reflection.Metadata.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\Portable\\v4.6\\Microsoft.Portable.CSharp.targets\" />\n  <Target Name=\"AfterBuild\">\n    <GetAssemblyIdentity AssemblyFiles=\"$(OutDir)\\$(AssemblyName).dll\">\n      <Output TaskParameter=\"Assemblies\" ItemName=\"UniRxAnalyzerInfo\" />\n    </GetAssemblyIdentity>\n    <Exec Command=\"&quot;$(SolutionDir)packages\\NuGet.CommandLine.3.3.0\\tools\\NuGet.exe&quot; pack Diagnostic.nuspec -NoPackageAnalysis -Version %(UniRxAnalyzerInfo.Version) -OutputDirectory .\" WorkingDirectory=\"$(OutDir)\" LogStandardErrorAsError=\"true\" ConsoleToMSBuild=\"true\">\n      <Output TaskParameter=\"ConsoleOutput\" PropertyName=\"OutputOfExec\" />\n    </Exec>\n  </Target>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.AttributedModel\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.Runtime\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.TypedParts\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.Hosting\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.CodeAnalysis.Analyzers\" version=\"1.1.0\" targetFramework=\"portable45-net45+win8\" />\n  <package id=\"Microsoft.CodeAnalysis.Common\" version=\"1.2.1\" targetFramework=\"portable45-net45+win8\" />\n  <package id=\"Microsoft.CodeAnalysis.CSharp\" version=\"1.2.1\" targetFramework=\"portable45-net45+win8\" />\n  <package id=\"Microsoft.CodeAnalysis.CSharp.Workspaces\" version=\"1.2.1\" targetFramework=\"portable45-net45+win8\" />\n  <package id=\"Microsoft.CodeAnalysis.Workspaces.Common\" version=\"1.2.1\" targetFramework=\"portable45-net45+win8\" />\n  <package id=\"Microsoft.Composition\" version=\"1.0.30\" targetFramework=\"portable45-net45+win8\" />\n  <package id=\"NuGet.CommandLine\" version=\"3.3.0\" targetFramework=\"portable45-net45+win8\" />\n  <package id=\"System.Collections.Immutable\" version=\"1.1.37\" targetFramework=\"portable45-net45+win8\" />\n  <package id=\"System.Reflection.Metadata\" version=\"1.2.0\" targetFramework=\"portable45-net45+win8\" />\n</packages>"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer/tools/install.ps1",
    "content": "﻿param($installPath, $toolsPath, $package, $project)\n\n$analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) \"analyzers\" ) * -Resolve\n\nforeach($analyzersPath in $analyzersPaths)\n{\n    # Install the language agnostic analyzers.\n    if (Test-Path $analyzersPath)\n    {\n        foreach ($analyzerFilePath in Get-ChildItem $analyzersPath -Filter *.dll)\n        {\n            if($project.Object.AnalyzerReferences)\n            {\n                $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName)\n            }\n        }\n    }\n}\n\n# $project.Type gives the language name like (C# or VB.NET)\n$languageFolder = \"\"\nif($project.Type -eq \"C#\")\n{\n    $languageFolder = \"cs\"\n}\nif($project.Type -eq \"VB.NET\")\n{\n    $languageFolder = \"vb\"\n}\nif($languageFolder -eq \"\")\n{\n    return\n}\n\nforeach($analyzersPath in $analyzersPaths)\n{\n    # Install language specific analyzers.\n    $languageAnalyzersPath = join-path $analyzersPath $languageFolder\n    if (Test-Path $languageAnalyzersPath)\n    {\n        foreach ($analyzerFilePath in Get-ChildItem $languageAnalyzersPath -Filter *.dll)\n        {\n            if($project.Object.AnalyzerReferences)\n            {\n                $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName)\n            }\n        }\n    }\n}"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer/tools/uninstall.ps1",
    "content": "﻿param($installPath, $toolsPath, $package, $project)\n\n$analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) \"analyzers\" ) * -Resolve\n\nforeach($analyzersPath in $analyzersPaths)\n{\n    # Uninstall the language agnostic analyzers.\n    if (Test-Path $analyzersPath)\n    {\n        foreach ($analyzerFilePath in Get-ChildItem $analyzersPath -Filter *.dll)\n        {\n            if($project.Object.AnalyzerReferences)\n            {\n                $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName)\n            }\n        }\n    }\n}\n\n# $project.Type gives the language name like (C# or VB.NET)\n$languageFolder = \"\"\nif($project.Type -eq \"C#\")\n{\n    $languageFolder = \"cs\"\n}\nif($project.Type -eq \"VB.NET\")\n{\n    $languageFolder = \"vb\"\n}\nif($languageFolder -eq \"\")\n{\n    return\n}\n\nforeach($analyzersPath in $analyzersPaths)\n{\n    # Uninstall language specific analyzers.\n    $languageAnalyzersPath = join-path $analyzersPath $languageFolder\n    if (Test-Path $languageAnalyzersPath)\n    {\n        foreach ($analyzerFilePath in Get-ChildItem $languageAnalyzersPath -Filter *.dll)\n        {\n            if($project.Object.AnalyzerReferences)\n            {\n                try\n                {\n                    $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName)\n                }\n                catch\n                {\n\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/HandleObservableAnalyzerTest.cs",
    "content": "﻿using Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.CodeFixes;\nusing Microsoft.CodeAnalysis.Diagnostics;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System;\nusing TestHelper;\nusing UniRxAnalyzer;\n\nnamespace UniRxAnalyzer.Test\n{\n    [TestClass]\n    public class HandleObservableAnalyzerTest : DiagnosticVerifier\n    {\n        protected override DiagnosticAnalyzer GetCSharpDiagnosticAnalyzer()\n        {\n            return new UniRxAnalyzer.HandleObservableAnalyzer();\n        }\n\n        [TestMethod]\n        public void UnHandle()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Hoge()\n    {\n        GetObservable();\n    }\n}\";\n            var expected = new DiagnosticResult\n            {\n                Id = UniRxAnalyzer.HandleObservableAnalyzer.DiagnosticId,\n                Message = \"This call does not handle IObservable<T>.\",\n                Severity = DiagnosticSeverity.Warning,\n                Locations = new[]\n                {\n                    new DiagnosticResultLocation(\"Test0.cs\", 10, 9)\n                }\n            };\n\n            this.VerifyCSharpDiagnostic(source, expected);\n        }\n\n        [TestMethod]\n        public void HandleConditional()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Hoge()\n    {\n        var x = (true) ? GetObservable() : GetObservable();\n    }\n}\";\n            \n            this.VerifyCSharpDiagnostic(source);\n        }\n\n        [TestMethod]\n        public void OkayReturn()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    IObservable<int> Hoge()\n    {\n        return GetObservable();\n    }\n}\";\n            this.VerifyCSharpDiagnostic(source);\n        }\n\n        [TestMethod]\n        public void OkayAssignLocal()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Hoge()\n    {\n        var x = GetObservable();\n    }\n}\";\n            this.VerifyCSharpDiagnostic(source);\n        }\n\n        [TestMethod]\n        public void OkayAssignField()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    IObservable<int> x;\n\n    void Hoge()\n    {\n        x = GetObservable();\n    }\n}\";\n            this.VerifyCSharpDiagnostic(source);\n        }\n\n        [TestMethod]\n        public void OkayMethodChain()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Huga(IObservable<int> x) { }\n\n    void Hoge()\n    {\n        Huga(GetObservable());\n    }\n}\";\n            this.VerifyCSharpDiagnostic(source);\n        }\n\n        [TestMethod]\n        public void OkayLINQ()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Hoge()\n    {\n        var q = from x in GetObservable()\n                select x;\n    }\n}\";\n            this.VerifyCSharpDiagnostic(source);\n        }\n\n        [TestMethod]\n        public void NgAfterLINQ()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Hoge()\n    {\n        var q = from x in GetObservable()\n                select x;\n\n        GetObservable();\n    }\n}\";\n\n            var expected = new DiagnosticResult\n            {\n                Id = UniRxAnalyzer.HandleObservableAnalyzer.DiagnosticId,\n                Message = \"This call does not handle IObservable<T>.\",\n                Severity = DiagnosticSeverity.Warning,\n                Locations = new[]\n            {\n                    new DiagnosticResultLocation(\"Test0.cs\", 13, 9)\n                }\n            };\n\n            this.VerifyCSharpDiagnostic(source, expected);\n        }\n\n        [TestMethod]\n        public void CallMethod()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Huga(IObservable<int> source)\n    {\n    }\n\n    void Hoge()\n    {\n        Huga(GetObservable());\n    }\n}\";\n\n            this.VerifyCSharpDiagnostic(source);\n        }\n\n        [TestMethod]\n        public void Constructor()\n        {\n            var source = @\"\nusing System;\n\nclass Test2\n{\n    readonly IObservable<int> source;\n\n    public Test2(IObservable<int> source)\n    {\n        this.source = source;\n    }\n}\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Hoge()\n    {\n        var _ = new Test2(GetObservable());\n    }\n}\";\n\n            this.VerifyCSharpDiagnostic(source);\n        }\n\n\n        [TestMethod]\n        public void LambdaReturn()\n        {\n            var source = @\"\nusing System;\n\nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Hoge()\n    {\n        Func<IObservable<int>> _ = () => GetObservable();\n    }\n}\";\n\n            this.VerifyCSharpDiagnostic(source);\n        }\n\n        [TestMethod]\n        public void NgInlambda()\n        {\n            var source = @\"\nusing System;\n   \nclass Test\n{\n    IObservable<int> GetObservable() => null;\n\n    void Hoge()\n    {\n        var lambda = new Func<int, int>(x =>\n        {\n            GetObservable();\n            return 0;\n        });\n    }\n}\";\n            var expected = new DiagnosticResult\n            {\n                Id = UniRxAnalyzer.HandleObservableAnalyzer.DiagnosticId,\n                Message = \"This call does not handle IObservable<T>.\",\n                Severity = DiagnosticSeverity.Warning,\n                Locations = new[]\n                {\n                    new DiagnosticResultLocation(\"Test0.cs\", 12, 13)\n                }\n            };\n\n            this.VerifyCSharpDiagnostic(source, expected);\n        }\n\n        int Hoge() => 3;\n    }\n}"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/Helpers/CodeFixVerifier.Helper.cs",
    "content": "﻿using Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.CodeActions;\nusing Microsoft.CodeAnalysis.Formatting;\nusing Microsoft.CodeAnalysis.Simplification;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\n\nnamespace TestHelper\n{\n    /// <summary>\n    /// Diagnostic Producer class with extra methods dealing with applying codefixes\n    /// All methods are static\n    /// </summary>\n    public abstract partial class CodeFixVerifier : DiagnosticVerifier\n    {\n        /// <summary>\n        /// Apply the inputted CodeAction to the inputted document.\n        /// Meant to be used to apply codefixes.\n        /// </summary>\n        /// <param name=\"document\">The Document to apply the fix on</param>\n        /// <param name=\"codeAction\">A CodeAction that will be applied to the Document.</param>\n        /// <returns>A Document with the changes from the CodeAction</returns>\n        private static Document ApplyFix(Document document, CodeAction codeAction)\n        {\n            var operations = codeAction.GetOperationsAsync(CancellationToken.None).Result;\n            var solution = operations.OfType<ApplyChangesOperation>().Single().ChangedSolution;\n            return solution.GetDocument(document.Id);\n        }\n\n        /// <summary>\n        /// Compare two collections of Diagnostics,and return a list of any new diagnostics that appear only in the second collection.\n        /// Note: Considers Diagnostics to be the same if they have the same Ids.  In the case of multiple diagnostics with the same Id in a row,\n        /// this method may not necessarily return the new one.\n        /// </summary>\n        /// <param name=\"diagnostics\">The Diagnostics that existed in the code before the CodeFix was applied</param>\n        /// <param name=\"newDiagnostics\">The Diagnostics that exist in the code after the CodeFix was applied</param>\n        /// <returns>A list of Diagnostics that only surfaced in the code after the CodeFix was applied</returns>\n        private static IEnumerable<Diagnostic> GetNewDiagnostics(IEnumerable<Diagnostic> diagnostics, IEnumerable<Diagnostic> newDiagnostics)\n        {\n            var oldArray = diagnostics.OrderBy(d => d.Location.SourceSpan.Start).ToArray();\n            var newArray = newDiagnostics.OrderBy(d => d.Location.SourceSpan.Start).ToArray();\n\n            int oldIndex = 0;\n            int newIndex = 0;\n\n            while (newIndex < newArray.Length)\n            {\n                if (oldIndex < oldArray.Length && oldArray[oldIndex].Id == newArray[newIndex].Id)\n                {\n                    ++oldIndex;\n                    ++newIndex;\n                }\n                else\n                {\n                    yield return newArray[newIndex++];\n                }\n            }\n        }\n\n        /// <summary>\n        /// Get the existing compiler diagnostics on the inputted document.\n        /// </summary>\n        /// <param name=\"document\">The Document to run the compiler diagnostic analyzers on</param>\n        /// <returns>The compiler diagnostics that were found in the code</returns>\n        private static IEnumerable<Diagnostic> GetCompilerDiagnostics(Document document)\n        {\n            return document.GetSemanticModelAsync().Result.GetDiagnostics();\n        }\n\n        /// <summary>\n        /// Given a document, turn it into a string based on the syntax root\n        /// </summary>\n        /// <param name=\"document\">The Document to be converted to a string</param>\n        /// <returns>A string containing the syntax of the Document after formatting</returns>\n        private static string GetStringFromDocument(Document document)\n        {\n            var simplifiedDoc = Simplifier.ReduceAsync(document, Simplifier.Annotation).Result;\n            var root = simplifiedDoc.GetSyntaxRootAsync().Result;\n            root = Formatter.Format(root, Formatter.Annotation, simplifiedDoc.Project.Solution.Workspace);\n            return root.GetText().ToString();\n        }\n    }\n}\n\n"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/Helpers/DiagnosticResult.cs",
    "content": "﻿using Microsoft.CodeAnalysis;\nusing System;\n\nnamespace TestHelper\n{\n    /// <summary>\n    /// Location where the diagnostic appears, as determined by path, line number, and column number.\n    /// </summary>\n    public struct DiagnosticResultLocation\n    {\n        public DiagnosticResultLocation(string path, int line, int column)\n        {\n            if (line < -1)\n            {\n                throw new ArgumentOutOfRangeException(nameof(line), \"line must be >= -1\");\n            }\n\n            if (column < -1)\n            {\n                throw new ArgumentOutOfRangeException(nameof(line), \"column must be >= -1\");\n            }\n\n            this.Path = path;\n            this.Line = line;\n            this.Column = column;\n        }\n\n        public string Path { get; }\n        public int Line { get; }\n        public int Column { get; }\n    }\n\n    /// <summary>\n    /// Struct that stores information about a Diagnostic appearing in a source\n    /// </summary>\n    public struct DiagnosticResult\n    {\n        private DiagnosticResultLocation[] locations;\n\n        public DiagnosticResultLocation[] Locations\n        {\n            get\n            {\n                if (this.locations == null)\n                {\n                    this.locations = new DiagnosticResultLocation[] { };\n                }\n                return this.locations;\n            }\n\n            set\n            {\n                this.locations = value;\n            }\n        }\n\n        public DiagnosticSeverity Severity { get; set; }\n\n        public string Id { get; set; }\n\n        public string Message { get; set; }\n\n        public string Path\n        {\n            get\n            {\n                return this.Locations.Length > 0 ? this.Locations[0].Path : \"\";\n            }\n        }\n\n        public int Line\n        {\n            get\n            {\n                return this.Locations.Length > 0 ? this.Locations[0].Line : -1;\n            }\n        }\n\n        public int Column\n        {\n            get\n            {\n                return this.Locations.Length > 0 ? this.Locations[0].Column : -1;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/Helpers/DiagnosticVerifier.Helper.cs",
    "content": "﻿using Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.CSharp;\nusing Microsoft.CodeAnalysis.Diagnostics;\nusing Microsoft.CodeAnalysis.Text;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Linq;\n\nnamespace TestHelper\n{\n    /// <summary>\n    /// Class for turning strings into documents and getting the diagnostics on them\n    /// All methods are static\n    /// </summary>\n    public abstract partial class DiagnosticVerifier\n    {\n        private static readonly MetadataReference CorlibReference = MetadataReference.CreateFromFile(typeof(object).Assembly.Location);\n        private static readonly MetadataReference SystemCoreReference = MetadataReference.CreateFromFile(typeof(Enumerable).Assembly.Location);\n        private static readonly MetadataReference CSharpSymbolsReference = MetadataReference.CreateFromFile(typeof(CSharpCompilation).Assembly.Location);\n        private static readonly MetadataReference CodeAnalysisReference = MetadataReference.CreateFromFile(typeof(Compilation).Assembly.Location);\n\n        internal static string DefaultFilePathPrefix = \"Test\";\n        internal static string CSharpDefaultFileExt = \"cs\";\n        internal static string VisualBasicDefaultExt = \"vb\";\n        internal static string TestProjectName = \"TestProject\";\n\n        #region  Get Diagnostics\n\n        /// <summary>\n        /// Given classes in the form of strings, their language, and an IDiagnosticAnlayzer to apply to it, return the diagnostics found in the string after converting it to a document.\n        /// </summary>\n        /// <param name=\"sources\">Classes in the form of strings</param>\n        /// <param name=\"language\">The language the source classes are in</param>\n        /// <param name=\"analyzer\">The analyzer to be run on the sources</param>\n        /// <returns>An IEnumerable of Diagnostics that surfaced in the source code, sorted by Location</returns>\n        private static Diagnostic[] GetSortedDiagnostics(string[] sources, string language, DiagnosticAnalyzer analyzer)\n        {\n            return GetSortedDiagnosticsFromDocuments(analyzer, GetDocuments(sources, language));\n        }\n\n        /// <summary>\n        /// Given an analyzer and a document to apply it to, run the analyzer and gather an array of diagnostics found in it.\n        /// The returned diagnostics are then ordered by location in the source document.\n        /// </summary>\n        /// <param name=\"analyzer\">The analyzer to run on the documents</param>\n        /// <param name=\"documents\">The Documents that the analyzer will be run on</param>\n        /// <returns>An IEnumerable of Diagnostics that surfaced in the source code, sorted by Location</returns>\n        protected static Diagnostic[] GetSortedDiagnosticsFromDocuments(DiagnosticAnalyzer analyzer, Document[] documents)\n        {\n            var projects = new HashSet<Project>();\n            foreach (var document in documents)\n            {\n                projects.Add(document.Project);\n            }\n\n            var diagnostics = new List<Diagnostic>();\n            foreach (var project in projects)\n            {\n                var compilationWithAnalyzers = project.GetCompilationAsync().Result.WithAnalyzers(ImmutableArray.Create(analyzer));\n                var diags = compilationWithAnalyzers.GetAnalyzerDiagnosticsAsync().Result;\n                foreach (var diag in diags)\n                {\n                    if (diag.Location == Location.None || diag.Location.IsInMetadata)\n                    {\n                        diagnostics.Add(diag);\n                    }\n                    else\n                    {\n                        for (int i = 0; i < documents.Length; i++)\n                        {\n                            var document = documents[i];\n                            var tree = document.GetSyntaxTreeAsync().Result;\n                            if (tree == diag.Location.SourceTree)\n                            {\n                                diagnostics.Add(diag);\n                            }\n                        }\n                    }\n                }\n            }\n\n            var results = SortDiagnostics(diagnostics);\n            diagnostics.Clear();\n            return results;\n        }\n\n        /// <summary>\n        /// Sort diagnostics by location in source document\n        /// </summary>\n        /// <param name=\"diagnostics\">The list of Diagnostics to be sorted</param>\n        /// <returns>An IEnumerable containing the Diagnostics in order of Location</returns>\n        private static Diagnostic[] SortDiagnostics(IEnumerable<Diagnostic> diagnostics)\n        {\n            return diagnostics.OrderBy(d => d.Location.SourceSpan.Start).ToArray();\n        }\n\n        #endregion\n\n        #region Set up compilation and documents\n        /// <summary>\n        /// Given an array of strings as sources and a language, turn them into a project and return the documents and spans of it.\n        /// </summary>\n        /// <param name=\"sources\">Classes in the form of strings</param>\n        /// <param name=\"language\">The language the source code is in</param>\n        /// <returns>A Tuple containing the Documents produced from the sources and their TextSpans if relevant</returns>\n        private static Document[] GetDocuments(string[] sources, string language)\n        {\n            if (language != LanguageNames.CSharp && language != LanguageNames.VisualBasic)\n            {\n                throw new ArgumentException(\"Unsupported Language\");\n            }\n\n            var project = CreateProject(sources, language);\n            var documents = project.Documents.ToArray();\n\n            if (sources.Length != documents.Length)\n            {\n                throw new SystemException(\"Amount of sources did not match amount of Documents created\");\n            }\n\n            return documents;\n        }\n\n        /// <summary>\n        /// Create a Document from a string through creating a project that contains it.\n        /// </summary>\n        /// <param name=\"source\">Classes in the form of a string</param>\n        /// <param name=\"language\">The language the source code is in</param>\n        /// <returns>A Document created from the source string</returns>\n        protected static Document CreateDocument(string source, string language = LanguageNames.CSharp)\n        {\n            return CreateProject(new[] { source }, language).Documents.First();\n        }\n\n        /// <summary>\n        /// Create a project using the inputted strings as sources.\n        /// </summary>\n        /// <param name=\"sources\">Classes in the form of strings</param>\n        /// <param name=\"language\">The language the source code is in</param>\n        /// <returns>A Project created out of the Documents created from the source strings</returns>\n        private static Project CreateProject(string[] sources, string language = LanguageNames.CSharp)\n        {\n            string fileNamePrefix = DefaultFilePathPrefix;\n            string fileExt = language == LanguageNames.CSharp ? CSharpDefaultFileExt : VisualBasicDefaultExt;\n\n            var projectId = ProjectId.CreateNewId(debugName: TestProjectName);\n\n            var solution = new AdhocWorkspace()\n                .CurrentSolution\n                .AddProject(projectId, TestProjectName, TestProjectName, language)\n                .AddMetadataReference(projectId, CorlibReference)\n                .AddMetadataReference(projectId, SystemCoreReference)\n                .AddMetadataReference(projectId, CSharpSymbolsReference)\n                .AddMetadataReference(projectId, CodeAnalysisReference);\n\n            int count = 0;\n            foreach (var source in sources)\n            {\n                var newFileName = fileNamePrefix + count + \".\" + fileExt;\n                var documentId = DocumentId.CreateNewId(projectId, debugName: newFileName);\n                solution = solution.AddDocument(documentId, newFileName, SourceText.From(source));\n                count++;\n            }\n            return solution.GetProject(projectId);\n        }\n        #endregion\n    }\n}\n\n"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"UniRxAnalyzer.Test\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UniRxAnalyzer.Test\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/UniRxAnalyzer.Test.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{7CB72B4B-5866-45E6-AA99-1323D26A293F}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UniRxAnalyzer.Test</RootNamespace>\n    <AssemblyName>UniRxAnalyzer.Test</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <Prefer32Bit>false</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <Prefer32Bit>false</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.CodeAnalysis, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.Common.1.2.1\\lib\\net45\\Microsoft.CodeAnalysis.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.CSharp, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.CSharp.1.2.1\\lib\\net45\\Microsoft.CodeAnalysis.CSharp.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.CSharp.Workspaces, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.CSharp.Workspaces.1.2.1\\lib\\net45\\Microsoft.CodeAnalysis.CSharp.Workspaces.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.VisualBasic, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.VisualBasic.1.2.1\\lib\\net45\\Microsoft.CodeAnalysis.VisualBasic.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.VisualBasic.Workspaces, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.VisualBasic.Workspaces.1.2.1\\lib\\net45\\Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.Workspaces, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.Workspaces.Common.1.2.1\\lib\\net45\\Microsoft.CodeAnalysis.Workspaces.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.Workspaces.Desktop, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.CodeAnalysis.Workspaces.Common.1.2.1\\lib\\net45\\Microsoft.CodeAnalysis.Workspaces.Desktop.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Collections.Immutable, Version=1.1.37.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\System.Collections.Immutable.1.1.37\\lib\\dotnet\\System.Collections.Immutable.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.AttributedModel, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.AttributedModel.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.Convention, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.Convention.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.Hosting, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.Hosting.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.Runtime, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.Runtime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Composition.TypedParts, Version=1.0.30.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\Microsoft.Composition.1.0.30\\lib\\portable-net45+win8+wp8+wpa81\\System.Composition.TypedParts.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Reflection.Metadata, Version=1.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\..\\packages\\System.Reflection.Metadata.1.2.0\\lib\\portable-net45+win8\\System.Reflection.Metadata.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"Microsoft.VisualStudio.QualityTools.UnitTestFramework\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Verifiers\\CodeFixVerifier.cs\" />\n    <Compile Include=\"Verifiers\\DiagnosticVerifier.cs\" />\n    <Compile Include=\"Helpers\\CodeFixVerifier.Helper.cs\" />\n    <Compile Include=\"Helpers\\DiagnosticResult.cs\" />\n    <Compile Include=\"Helpers\\DiagnosticVerifier.Helper.cs\" />\n    <Compile Include=\"HandleObservableAnalyzerTest.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\UniRxAnalyzer\\UniRxAnalyzer.csproj\">\n      <Project>{08E3D837-5096-4CB4-84B2-149000DC691D}</Project>\n      <Name>UniRxAnalyzer</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Service Include=\"{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Analyzer Include=\"..\\..\\..\\packages\\Microsoft.CodeAnalysis.Analyzers.1.1.0\\analyzers\\dotnet\\cs\\Microsoft.CodeAnalysis.Analyzers.dll\" />\n    <Analyzer Include=\"..\\..\\..\\packages\\Microsoft.CodeAnalysis.Analyzers.1.1.0\\analyzers\\dotnet\\cs\\Microsoft.CodeAnalysis.CSharp.Analyzers.dll\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/Verifiers/CodeFixVerifier.cs",
    "content": "﻿using Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.CodeActions;\nusing Microsoft.CodeAnalysis.CodeFixes;\nusing Microsoft.CodeAnalysis.Diagnostics;\nusing Microsoft.CodeAnalysis.Formatting;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\n\nnamespace TestHelper\n{\n    /// <summary>\n    /// Superclass of all Unit tests made for diagnostics with codefixes.\n    /// Contains methods used to verify correctness of codefixes\n    /// </summary>\n    public abstract partial class CodeFixVerifier : DiagnosticVerifier\n    {\n        /// <summary>\n        /// Returns the codefix being tested (C#) - to be implemented in non-abstract class\n        /// </summary>\n        /// <returns>The CodeFixProvider to be used for CSharp code</returns>\n        protected virtual CodeFixProvider GetCSharpCodeFixProvider()\n        {\n            return null;\n        }\n\n        /// <summary>\n        /// Returns the codefix being tested (VB) - to be implemented in non-abstract class\n        /// </summary>\n        /// <returns>The CodeFixProvider to be used for VisualBasic code</returns>\n        protected virtual CodeFixProvider GetBasicCodeFixProvider()\n        {\n            return null;\n        }\n\n        /// <summary>\n        /// Called to test a C# codefix when applied on the inputted string as a source\n        /// </summary>\n        /// <param name=\"oldSource\">A class in the form of a string before the CodeFix was applied to it</param>\n        /// <param name=\"newSource\">A class in the form of a string after the CodeFix was applied to it</param>\n        /// <param name=\"codeFixIndex\">Index determining which codefix to apply if there are multiple</param>\n        /// <param name=\"allowNewCompilerDiagnostics\">A bool controlling whether or not the test will fail if the CodeFix introduces other warnings after being applied</param>\n        protected void VerifyCSharpFix(string oldSource, string newSource, int? codeFixIndex = null, bool allowNewCompilerDiagnostics = false)\n        {\n            VerifyFix(LanguageNames.CSharp, GetCSharpDiagnosticAnalyzer(), GetCSharpCodeFixProvider(), oldSource, newSource, codeFixIndex, allowNewCompilerDiagnostics);\n        }\n\n        /// <summary>\n        /// Called to test a VB codefix when applied on the inputted string as a source\n        /// </summary>\n        /// <param name=\"oldSource\">A class in the form of a string before the CodeFix was applied to it</param>\n        /// <param name=\"newSource\">A class in the form of a string after the CodeFix was applied to it</param>\n        /// <param name=\"codeFixIndex\">Index determining which codefix to apply if there are multiple</param>\n        /// <param name=\"allowNewCompilerDiagnostics\">A bool controlling whether or not the test will fail if the CodeFix introduces other warnings after being applied</param>\n        protected void VerifyBasicFix(string oldSource, string newSource, int? codeFixIndex = null, bool allowNewCompilerDiagnostics = false)\n        {\n            VerifyFix(LanguageNames.VisualBasic, GetBasicDiagnosticAnalyzer(), GetBasicCodeFixProvider(), oldSource, newSource, codeFixIndex, allowNewCompilerDiagnostics);\n        }\n\n        /// <summary>\n        /// General verifier for codefixes.\n        /// Creates a Document from the source string, then gets diagnostics on it and applies the relevant codefixes.\n        /// Then gets the string after the codefix is applied and compares it with the expected result.\n        /// Note: If any codefix causes new diagnostics to show up, the test fails unless allowNewCompilerDiagnostics is set to true.\n        /// </summary>\n        /// <param name=\"language\">The language the source code is in</param>\n        /// <param name=\"analyzer\">The analyzer to be applied to the source code</param>\n        /// <param name=\"codeFixProvider\">The codefix to be applied to the code wherever the relevant Diagnostic is found</param>\n        /// <param name=\"oldSource\">A class in the form of a string before the CodeFix was applied to it</param>\n        /// <param name=\"newSource\">A class in the form of a string after the CodeFix was applied to it</param>\n        /// <param name=\"codeFixIndex\">Index determining which codefix to apply if there are multiple</param>\n        /// <param name=\"allowNewCompilerDiagnostics\">A bool controlling whether or not the test will fail if the CodeFix introduces other warnings after being applied</param>\n        private void VerifyFix(string language, DiagnosticAnalyzer analyzer, CodeFixProvider codeFixProvider, string oldSource, string newSource, int? codeFixIndex, bool allowNewCompilerDiagnostics)\n        {\n            var document = CreateDocument(oldSource, language);\n            var analyzerDiagnostics = GetSortedDiagnosticsFromDocuments(analyzer, new[] { document });\n            var compilerDiagnostics = GetCompilerDiagnostics(document);\n            var attempts = analyzerDiagnostics.Length;\n\n            for (int i = 0; i < attempts; ++i)\n            {\n                var actions = new List<CodeAction>();\n                var context = new CodeFixContext(document, analyzerDiagnostics[0], (a, d) => actions.Add(a), CancellationToken.None);\n                codeFixProvider.RegisterCodeFixesAsync(context).Wait();\n\n                if (!actions.Any())\n                {\n                    break;\n                }\n\n                if (codeFixIndex != null)\n                {\n                    document = ApplyFix(document, actions.ElementAt((int)codeFixIndex));\n                    break;\n                }\n\n                document = ApplyFix(document, actions.ElementAt(0));\n                analyzerDiagnostics = GetSortedDiagnosticsFromDocuments(analyzer, new[] { document });\n\n                var newCompilerDiagnostics = GetNewDiagnostics(compilerDiagnostics, GetCompilerDiagnostics(document));\n\n                //check if applying the code fix introduced any new compiler diagnostics\n                if (!allowNewCompilerDiagnostics && newCompilerDiagnostics.Any())\n                {\n                    // Format and get the compiler diagnostics again so that the locations make sense in the output\n                    document = document.WithSyntaxRoot(Formatter.Format(document.GetSyntaxRootAsync().Result, Formatter.Annotation, document.Project.Solution.Workspace));\n                    newCompilerDiagnostics = GetNewDiagnostics(compilerDiagnostics, GetCompilerDiagnostics(document));\n\n                    Assert.IsTrue(false,\n                        string.Format(\"Fix introduced new compiler diagnostics:\\r\\n{0}\\r\\n\\r\\nNew document:\\r\\n{1}\\r\\n\",\n                            string.Join(\"\\r\\n\", newCompilerDiagnostics.Select(d => d.ToString())),\n                            document.GetSyntaxRootAsync().Result.ToFullString()));\n                }\n\n                //check if there are analyzer diagnostics left after the code fix\n                if (!analyzerDiagnostics.Any())\n                {\n                    break;\n                }\n            }\n\n            //after applying all of the code fixes, compare the resulting string to the inputted one\n            var actual = GetStringFromDocument(document);\n            Assert.AreEqual(newSource, actual);\n        }\n    }\n}"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/Verifiers/DiagnosticVerifier.cs",
    "content": "﻿using Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.CSharp;\nusing Microsoft.CodeAnalysis.Diagnostics;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace TestHelper\n{\n    /// <summary>\n    /// Superclass of all Unit Tests for DiagnosticAnalyzers\n    /// </summary>\n    public abstract partial class DiagnosticVerifier\n    {\n        #region To be implemented by Test classes\n        /// <summary>\n        /// Get the CSharp analyzer being tested - to be implemented in non-abstract class\n        /// </summary>\n        protected virtual DiagnosticAnalyzer GetCSharpDiagnosticAnalyzer()\n        {\n            return null;\n        }\n\n        /// <summary>\n        /// Get the Visual Basic analyzer being tested (C#) - to be implemented in non-abstract class\n        /// </summary>\n        protected virtual DiagnosticAnalyzer GetBasicDiagnosticAnalyzer()\n        {\n            return null;\n        }\n        #endregion\n\n        #region Verifier wrappers\n\n        /// <summary>\n        /// Called to test a C# DiagnosticAnalyzer when applied on the single inputted string as a source\n        /// Note: input a DiagnosticResult for each Diagnostic expected\n        /// </summary>\n        /// <param name=\"source\">A class in the form of a string to run the analyzer on</param>\n        /// <param name=\"expected\"> DiagnosticResults that should appear after the analyzer is run on the source</param>\n        protected void VerifyCSharpDiagnostic(string source, params DiagnosticResult[] expected)\n        {\n            VerifyDiagnostics(new[] { source }, LanguageNames.CSharp, GetCSharpDiagnosticAnalyzer(), expected);\n        }\n\n        /// <summary>\n        /// Called to test a VB DiagnosticAnalyzer when applied on the single inputted string as a source\n        /// Note: input a DiagnosticResult for each Diagnostic expected\n        /// </summary>\n        /// <param name=\"source\">A class in the form of a string to run the analyzer on</param>\n        /// <param name=\"expected\">DiagnosticResults that should appear after the analyzer is run on the source</param>\n        protected void VerifyBasicDiagnostic(string source, params DiagnosticResult[] expected)\n        {\n            VerifyDiagnostics(new[] { source }, LanguageNames.VisualBasic, GetBasicDiagnosticAnalyzer(), expected);\n        }\n\n        /// <summary>\n        /// Called to test a C# DiagnosticAnalyzer when applied on the inputted strings as a source\n        /// Note: input a DiagnosticResult for each Diagnostic expected\n        /// </summary>\n        /// <param name=\"sources\">An array of strings to create source documents from to run the analyzers on</param>\n        /// <param name=\"expected\">DiagnosticResults that should appear after the analyzer is run on the sources</param>\n        protected void VerifyCSharpDiagnostic(string[] sources, params DiagnosticResult[] expected)\n        {\n            VerifyDiagnostics(sources, LanguageNames.CSharp, GetCSharpDiagnosticAnalyzer(), expected);\n        }\n\n        /// <summary>\n        /// Called to test a VB DiagnosticAnalyzer when applied on the inputted strings as a source\n        /// Note: input a DiagnosticResult for each Diagnostic expected\n        /// </summary>\n        /// <param name=\"sources\">An array of strings to create source documents from to run the analyzers on</param>\n        /// <param name=\"expected\">DiagnosticResults that should appear after the analyzer is run on the sources</param>\n        protected void VerifyBasicDiagnostic(string[] sources, params DiagnosticResult[] expected)\n        {\n            VerifyDiagnostics(sources, LanguageNames.VisualBasic, GetBasicDiagnosticAnalyzer(), expected);\n        }\n\n        /// <summary>\n        /// General method that gets a collection of actual diagnostics found in the source after the analyzer is run, \n        /// then verifies each of them.\n        /// </summary>\n        /// <param name=\"sources\">An array of strings to create source documents from to run the analyzers on</param>\n        /// <param name=\"language\">The language of the classes represented by the source strings</param>\n        /// <param name=\"analyzer\">The analyzer to be run on the source code</param>\n        /// <param name=\"expected\">DiagnosticResults that should appear after the analyzer is run on the sources</param>\n        private void VerifyDiagnostics(string[] sources, string language, DiagnosticAnalyzer analyzer, params DiagnosticResult[] expected)\n        {\n            var diagnostics = GetSortedDiagnostics(sources, language, analyzer);\n            VerifyDiagnosticResults(diagnostics, analyzer, expected);\n        }\n\n        #endregion\n\n        #region Actual comparisons and verifications\n        /// <summary>\n        /// Checks each of the actual Diagnostics found and compares them with the corresponding DiagnosticResult in the array of expected results.\n        /// Diagnostics are considered equal only if the DiagnosticResultLocation, Id, Severity, and Message of the DiagnosticResult match the actual diagnostic.\n        /// </summary>\n        /// <param name=\"actualResults\">The Diagnostics found by the compiler after running the analyzer on the source code</param>\n        /// <param name=\"analyzer\">The analyzer that was being run on the sources</param>\n        /// <param name=\"expectedResults\">Diagnostic Results that should have appeared in the code</param>\n        private static void VerifyDiagnosticResults(IEnumerable<Diagnostic> actualResults, DiagnosticAnalyzer analyzer, params DiagnosticResult[] expectedResults)\n        {\n            int expectedCount = expectedResults.Count();\n            int actualCount = actualResults.Count();\n\n            if (expectedCount != actualCount)\n            {\n                string diagnosticsOutput = actualResults.Any() ? FormatDiagnostics(analyzer, actualResults.ToArray()) : \"    NONE.\";\n\n                Assert.IsTrue(false,\n                    string.Format(\"Mismatch between number of diagnostics returned, expected \\\"{0}\\\" actual \\\"{1}\\\"\\r\\n\\r\\nDiagnostics:\\r\\n{2}\\r\\n\", expectedCount, actualCount, diagnosticsOutput));\n            }\n\n            for (int i = 0; i < expectedResults.Length; i++)\n            {\n                var actual = actualResults.ElementAt(i);\n                var expected = expectedResults[i];\n\n                if (expected.Line == -1 && expected.Column == -1)\n                {\n                    if (actual.Location != Location.None)\n                    {\n                        Assert.IsTrue(false,\n                            string.Format(\"Expected:\\nA project diagnostic with No location\\nActual:\\n{0}\",\n                            FormatDiagnostics(analyzer, actual)));\n                    }\n                }\n                else\n                {\n                    VerifyDiagnosticLocation(analyzer, actual, actual.Location, expected.Locations.First());\n                    var additionalLocations = actual.AdditionalLocations.ToArray();\n\n                    if (additionalLocations.Length != expected.Locations.Length - 1)\n                    {\n                        Assert.IsTrue(false,\n                            string.Format(\"Expected {0} additional locations but got {1} for Diagnostic:\\r\\n    {2}\\r\\n\",\n                                expected.Locations.Length - 1, additionalLocations.Length,\n                                FormatDiagnostics(analyzer, actual)));\n                    }\n\n                    for (int j = 0; j < additionalLocations.Length; ++j)\n                    {\n                        VerifyDiagnosticLocation(analyzer, actual, additionalLocations[j], expected.Locations[j + 1]);\n                    }\n                }\n\n                if (actual.Id != expected.Id)\n                {\n                    Assert.IsTrue(false,\n                        string.Format(\"Expected diagnostic id to be \\\"{0}\\\" was \\\"{1}\\\"\\r\\n\\r\\nDiagnostic:\\r\\n    {2}\\r\\n\",\n                            expected.Id, actual.Id, FormatDiagnostics(analyzer, actual)));\n                }\n\n                if (actual.Severity != expected.Severity)\n                {\n                    Assert.IsTrue(false,\n                        string.Format(\"Expected diagnostic severity to be \\\"{0}\\\" was \\\"{1}\\\"\\r\\n\\r\\nDiagnostic:\\r\\n    {2}\\r\\n\",\n                            expected.Severity, actual.Severity, FormatDiagnostics(analyzer, actual)));\n                }\n\n                if (actual.GetMessage() != expected.Message)\n                {\n                    Assert.IsTrue(false,\n                        string.Format(\"Expected diagnostic message to be \\\"{0}\\\" was \\\"{1}\\\"\\r\\n\\r\\nDiagnostic:\\r\\n    {2}\\r\\n\",\n                            expected.Message, actual.GetMessage(), FormatDiagnostics(analyzer, actual)));\n                }\n            }\n        }\n\n        /// <summary>\n        /// Helper method to VerifyDiagnosticResult that checks the location of a diagnostic and compares it with the location in the expected DiagnosticResult.\n        /// </summary>\n        /// <param name=\"analyzer\">The analyzer that was being run on the sources</param>\n        /// <param name=\"diagnostic\">The diagnostic that was found in the code</param>\n        /// <param name=\"actual\">The Location of the Diagnostic found in the code</param>\n        /// <param name=\"expected\">The DiagnosticResultLocation that should have been found</param>\n        private static void VerifyDiagnosticLocation(DiagnosticAnalyzer analyzer, Diagnostic diagnostic, Location actual, DiagnosticResultLocation expected)\n        {\n            var actualSpan = actual.GetLineSpan();\n\n            Assert.IsTrue(actualSpan.Path == expected.Path || (actualSpan.Path != null && actualSpan.Path.Contains(\"Test0.\") && expected.Path.Contains(\"Test.\")),\n                string.Format(\"Expected diagnostic to be in file \\\"{0}\\\" was actually in file \\\"{1}\\\"\\r\\n\\r\\nDiagnostic:\\r\\n    {2}\\r\\n\",\n                    expected.Path, actualSpan.Path, FormatDiagnostics(analyzer, diagnostic)));\n\n            var actualLinePosition = actualSpan.StartLinePosition;\n\n            // Only check line position if there is an actual line in the real diagnostic\n            if (actualLinePosition.Line > 0)\n            {\n                if (actualLinePosition.Line + 1 != expected.Line)\n                {\n                    Assert.IsTrue(false,\n                        string.Format(\"Expected diagnostic to be on line \\\"{0}\\\" was actually on line \\\"{1}\\\"\\r\\n\\r\\nDiagnostic:\\r\\n    {2}\\r\\n\",\n                            expected.Line, actualLinePosition.Line + 1, FormatDiagnostics(analyzer, diagnostic)));\n                }\n            }\n\n            // Only check column position if there is an actual column position in the real diagnostic\n            if (actualLinePosition.Character > 0)\n            {\n                if (actualLinePosition.Character + 1 != expected.Column)\n                {\n                    Assert.IsTrue(false,\n                        string.Format(\"Expected diagnostic to start at column \\\"{0}\\\" was actually at column \\\"{1}\\\"\\r\\n\\r\\nDiagnostic:\\r\\n    {2}\\r\\n\",\n                            expected.Column, actualLinePosition.Character + 1, FormatDiagnostics(analyzer, diagnostic)));\n                }\n            }\n        }\n        #endregion\n\n        #region Formatting Diagnostics\n        /// <summary>\n        /// Helper method to format a Diagnostic into an easily readable string\n        /// </summary>\n        /// <param name=\"analyzer\">The analyzer that this verifier tests</param>\n        /// <param name=\"diagnostics\">The Diagnostics to be formatted</param>\n        /// <returns>The Diagnostics formatted as a string</returns>\n        private static string FormatDiagnostics(DiagnosticAnalyzer analyzer, params Diagnostic[] diagnostics)\n        {\n            var builder = new StringBuilder();\n            for (int i = 0; i < diagnostics.Length; ++i)\n            {\n                builder.AppendLine(\"// \" + diagnostics[i].ToString());\n\n                var analyzerType = analyzer.GetType();\n                var rules = analyzer.SupportedDiagnostics;\n\n                foreach (var rule in rules)\n                {\n                    if (rule != null && rule.Id == diagnostics[i].Id)\n                    {\n                        var location = diagnostics[i].Location;\n                        if (location == Location.None)\n                        {\n                            builder.AppendFormat(\"GetGlobalResult({0}.{1})\", analyzerType.Name, rule.Id);\n                        }\n                        else\n                        {\n                            Assert.IsTrue(location.IsInSource,\n                                string.Format(\"Test base does not currently handle diagnostics in metadata locations. Diagnostic in metadata:\\r\\n\", diagnostics[i]));\n\n                            string resultMethodName = diagnostics[i].Location.SourceTree.FilePath.EndsWith(\".cs\") ? \"GetCSharpResultAt\" : \"GetBasicResultAt\";\n                            var linePosition = diagnostics[i].Location.GetLineSpan().StartLinePosition;\n\n                            builder.AppendFormat(\"{0}({1}, {2}, {3}.{4})\",\n                                resultMethodName,\n                                linePosition.Line + 1,\n                                linePosition.Character + 1,\n                                analyzerType.Name,\n                                rule.Id);\n                        }\n\n                        if (i != diagnostics.Length - 1)\n                        {\n                            builder.Append(',');\n                        }\n\n                        builder.AppendLine();\n                        break;\n                    }\n                }\n            }\n            return builder.ToString();\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.AttributedModel\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.Runtime\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.TypedParts\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.Hosting\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Test/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.CodeAnalysis.Analyzers\" version=\"1.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.CodeAnalysis.Common\" version=\"1.2.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.CodeAnalysis.CSharp\" version=\"1.2.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.CodeAnalysis.CSharp.Workspaces\" version=\"1.2.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.CodeAnalysis.VisualBasic\" version=\"1.2.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.CodeAnalysis.VisualBasic.Workspaces\" version=\"1.2.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.CodeAnalysis.Workspaces.Common\" version=\"1.2.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Composition\" version=\"1.0.30\" targetFramework=\"net45\" />\n  <package id=\"System.Collections\" version=\"4.0.0\" targetFramework=\"net45\" />\n  <package id=\"System.Collections.Immutable\" version=\"1.1.37\" targetFramework=\"net45\" />\n  <package id=\"System.Diagnostics.Debug\" version=\"4.0.0\" targetFramework=\"net45\" />\n  <package id=\"System.Globalization\" version=\"4.0.0\" targetFramework=\"net45\" />\n  <package id=\"System.Linq\" version=\"4.0.0\" targetFramework=\"net45\" />\n  <package id=\"System.Reflection.Metadata\" version=\"1.2.0\" targetFramework=\"net45\" />\n  <package id=\"System.Resources.ResourceManager\" version=\"4.0.0\" targetFramework=\"net45\" />\n  <package id=\"System.Runtime\" version=\"4.0.0\" targetFramework=\"net45\" />\n  <package id=\"System.Runtime.Extensions\" version=\"4.0.0\" targetFramework=\"net45\" />\n  <package id=\"System.Threading\" version=\"4.0.0\" targetFramework=\"net45\" />\n</packages>"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Vsix/UniRxAnalyzer.Vsix.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <MinimumVisualStudioVersion>15.0</MinimumVisualStudioVersion>\n    <VSToolsPath Condition=\"'$(VSToolsPath)' == ''\">$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)</VSToolsPath>\n    <FileUpgradeFlags>\n    </FileUpgradeFlags>\n    <UpgradeBackupLocation>\n    </UpgradeBackupLocation>\n    <OldToolsVersion>14.0</OldToolsVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectTypeGuids>{82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <ProjectGuid>{65D45FBA-A76A-4645-BF10-75D3A3D756C9}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UniRxAnalyzer</RootNamespace>\n    <AssemblyName>UniRxAnalyzer</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <GeneratePkgDefFile>false</GeneratePkgDefFile>\n    <IncludeAssemblyInVSIXContainer>false</IncludeAssemblyInVSIXContainer>\n    <IncludeDebugSymbolsInVSIXContainer>false</IncludeDebugSymbolsInVSIXContainer>\n    <IncludeDebugSymbolsInLocalVSIXDeployment>false</IncludeDebugSymbolsInLocalVSIXDeployment>\n    <CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>\n    <CopyOutputSymbolsToOutputDirectory>false</CopyOutputSymbolsToOutputDirectory>\n    <VSSDKTargetPlatformRegRootSuffix>Roslyn</VSSDKTargetPlatformRegRootSuffix>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup>\n    <StartAction>Program</StartAction>\n    <StartProgram>$(DevEnvDir)devenv.exe</StartProgram>\n    <StartArguments>/rootsuffix Roslyn</StartArguments>\n  </PropertyGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"source.extension.vsixmanifest\">\n      <SubType>Designer</SubType>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\UniRxAnalyzer\\UniRxAnalyzer.csproj\">\n      <Project>{08E3D837-5096-4CB4-84B2-149000DC691D}</Project>\n      <Name>UniRxAnalyzer</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <Import Project=\"$(VSToolsPath)\\VSSDK\\Microsoft.VsSDK.targets\" Condition=\"'$(VSToolsPath)' != ''\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Vsix/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.AttributedModel\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.Runtime\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.TypedParts\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Composition.Hosting\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.0.30.0\" newVersion=\"1.0.30.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Analyzer/UniRxAnalyzer/UniRxAnalyzer.Vsix/source.extension.vsixmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<PackageManifest Version=\"2.0.0\" xmlns=\"http://schemas.microsoft.com/developer/vsx-schema/2011\" xmlns:d=\"http://schemas.microsoft.com/developer/vsx-schema-design/2011\">\n    <Metadata>\n        <Identity Id=\"UniRxAnalyzer.Vsix..02b8386a-d79f-4967-b480-fc2cafa5057e\" Version=\"1.0\" Language=\"en-US\" Publisher=\"neuecc\"/>\n        <DisplayName>UniRxAnalyzer.Vsix</DisplayName>\n        <Description xml:space=\"preserve\">UniRx analyzers.</Description>\n    </Metadata>\n    <Installation>\n        <InstallationTarget Version=\"[14.0,]\" Id=\"Microsoft.VisualStudio.Pro\" />\n        <InstallationTarget Version=\"[14.0,]\" Id=\"Microsoft.VisualStudio.VSWinDesktopExpress\" />\n        <InstallationTarget Version=\"[14.0,]\" Id=\"Microsoft.VisualStudio.VWDExpress\" />\n        <InstallationTarget Version=\"[14.0,]\" Id=\"Microsoft.VisualStudio.VSWinExpress\" />\n    </Installation>\n    <Dependencies>\n        <Dependency Id=\"Microsoft.Framework.NDP\" DisplayName=\"Microsoft .NET Framework\" d:Source=\"Manual\" Version=\"[4.5,)\" />\n    </Dependencies>\n    <Assets>\n        <Asset Type=\"Microsoft.VisualStudio.MefComponent\" d:Source=\"Project\" d:ProjectName=\"UniRxAnalyzer\" Path=\"|UniRxAnalyzer|\"/>\n        <Asset Type=\"Microsoft.VisualStudio.Analyzer\" d:Source=\"Project\" d:ProjectName=\"UniRxAnalyzer\" Path=\"|UniRxAnalyzer|\"/>\n    </Assets>\n</PackageManifest>\n"
  },
  {
    "path": "Assembly-CSharp-Editor.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n    <CscToolPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Tools\\RoslynScripts</CscToolPath>\n    <CscToolExe>unity_csc.bat</CscToolExe>\n  </PropertyGroup>\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>10.0.20506</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <RootNamespace></RootNamespace>\n    <ProjectGuid>{5664E897-B20D-857B-ABA2-FE9F9A4DABFB}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <AssemblyName>Assembly-CSharp-Editor</AssemblyName>\n    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <BaseDirectory>.</BaseDirectory>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>Temp\\bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;UNITY_2019_1_0;UNITY_2019_1;UNITY_2019;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2019_1_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_SCRIPTING_GC_WBARRIERS;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>Temp\\bin\\Release\\</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup>\n    <NoConfig>true</NoConfig>\n    <NoStdLib>true</NoStdLib>\n    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\n    <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>\n    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <UnityProjectGenerator>Unity/VSTU</UnityProjectGenerator>\n    <UnityProjectType>Editor:5</UnityProjectType>\n    <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>\n    <UnityVersion>2019.1.0f2</UnityVersion>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"UnityEngine\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEngine/UnityEngine.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEditor.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Assets\\Editor\\PackageExporter.cs\" />\n    <Reference Include=\"Unity.Timeline.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.Timeline.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.TextMeshPro.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.PackageManagerUI.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Timeline\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.Timeline.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.CollabProxy.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.TextMeshPro\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.TextMeshPro.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.DataPrivacy\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ARModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AccessibilityModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AnimationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClothModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterInputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterRendererModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CrashReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.DirectorModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.FileSystemHttpModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GameCenterModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GridModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.HotReloadModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.IMGUIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ImageConversionModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.InputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.JSONSerializeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.LocalizationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ParticleSystemModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PerformanceReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Physics2DModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ProfilerModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ScreenCaptureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SharedInternalsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteMaskModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteShapeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StreamingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StyleSheetsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SubstanceModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TLSModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainPhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextCoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextRenderingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TilemapModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIElementsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UNETModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UmbraModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityAnalyticsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityConnectModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityTestProtocolModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestTextureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestWWWModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VFXModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VehiclesModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VideoModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.WindModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.XRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Locator\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"nunit.framework\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.VR\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Graphs\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.WindowsStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.OSXStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Android.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.iOS.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SyntaxTree.VisualStudio.Unity.Bridge\">\n      <HintPath>C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreTools\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreTools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreToolsExtra\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreToolsExtra.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Advertisements\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.StandardEvents\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Tracker\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Purchasing\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.iOS.Extensions.Xcode\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.iOS.Extensions.Common\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"mscorlib\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Core\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.CSharp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Win32.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"netstandard\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.AppContext\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Concurrent\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.NonGeneric\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Specialized\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Annotations\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.EventBasedAsync\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.TypeConverter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Console\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data.Common\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Contracts\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Debug\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.FileVersionInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Process\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.StackTrace\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TextWriterTraceListener\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Tools\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TraceSource\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Drawing.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Dynamic.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Calendars\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Compression.ZipFile\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.DriveInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Watcher\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.IsolatedStorage\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.MemoryMappedFiles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Pipes\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.UnmanagedMemoryStream\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Expressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Queryable\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Rtc\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NameResolution\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NetworkInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Ping\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Requests\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Sockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebHeaderCollection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets.Client\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ObjectModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.ILGeneration\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.Lightweight\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Reader\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.ResourceManager\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Writer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.CompilerServices.VisualC\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Handles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.RuntimeInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.WindowsRuntime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Formatters\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Json\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Claims\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Algorithms\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Csp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.X509Certificates\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Principal\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.SecureString\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Duplex\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.NetTcp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.RegularExpressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Overlapped\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Thread\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.ThreadPool\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Timer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ValueTuple\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.ReaderWriter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlSerializer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Boo.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"Assembly-CSharp.csproj\">\n      <Project>{C46B99A5-0F0F-2FEE-50C8-DAE79AA3F247}</Project>\n      <Name>Assembly-CSharp</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"UniRx.csproj\">\n      <Project>{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}</Project>\n      <Name>UniRx</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <Target Name=\"GenerateTargetFrameworkMonikerAttribute\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Assembly-CSharp.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n    <CscToolPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Tools\\RoslynScripts</CscToolPath>\n    <CscToolExe>unity_csc.bat</CscToolExe>\n  </PropertyGroup>\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>10.0.20506</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <RootNamespace></RootNamespace>\n    <ProjectGuid>{C46B99A5-0F0F-2FEE-50C8-DAE79AA3F247}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <AssemblyName>Assembly-CSharp</AssemblyName>\n    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <BaseDirectory>.</BaseDirectory>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>Temp\\bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;UNITY_2019_1_0;UNITY_2019_1;UNITY_2019;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2019_1_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_SCRIPTING_GC_WBARRIERS;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>Temp\\bin\\Release\\</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup>\n    <NoConfig>true</NoConfig>\n    <NoStdLib>true</NoStdLib>\n    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\n    <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>\n    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <UnityProjectGenerator>Unity/VSTU</UnityProjectGenerator>\n    <UnityProjectType>Game:1</UnityProjectType>\n    <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>\n    <UnityVersion>2019.1.0f2</UnityVersion>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"UnityEngine\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEngine/UnityEngine.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEditor.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Assets\\Scripts\\Sandbox\\SandboxScene.cs\" />\n    <None Include=\"Assets\\Resources\\te.txt\" />\n    <Reference Include=\"Unity.Timeline.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.Timeline.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.TextMeshPro.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.PackageManagerUI.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Timeline\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.Timeline.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.CollabProxy.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.TextMeshPro\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.TextMeshPro.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.DataPrivacy\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ARModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AccessibilityModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AnimationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClothModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterInputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterRendererModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CrashReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.DirectorModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.FileSystemHttpModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GameCenterModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GridModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.HotReloadModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.IMGUIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ImageConversionModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.InputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.JSONSerializeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.LocalizationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ParticleSystemModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PerformanceReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Physics2DModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ProfilerModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ScreenCaptureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SharedInternalsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteMaskModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteShapeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StreamingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StyleSheetsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SubstanceModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TLSModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainPhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextCoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextRenderingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TilemapModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIElementsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UNETModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UmbraModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityAnalyticsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityConnectModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityTestProtocolModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestTextureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestWWWModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VFXModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VehiclesModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VideoModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.WindModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.XRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Locator\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"nunit.framework\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.StandardEvents\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Tracker\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll</HintPath>\n    </Reference>\n    <Reference Include=\"mscorlib\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Core\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.CSharp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Win32.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"netstandard\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.AppContext\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Concurrent\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.NonGeneric\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Specialized\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Annotations\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.EventBasedAsync\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.TypeConverter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Console\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data.Common\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Contracts\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Debug\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.FileVersionInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Process\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.StackTrace\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TextWriterTraceListener\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Tools\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TraceSource\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Drawing.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Dynamic.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Calendars\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Compression.ZipFile\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.DriveInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Watcher\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.IsolatedStorage\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.MemoryMappedFiles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Pipes\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.UnmanagedMemoryStream\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Expressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Queryable\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Rtc\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NameResolution\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NetworkInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Ping\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Requests\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Sockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebHeaderCollection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets.Client\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ObjectModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.ILGeneration\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.Lightweight\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Reader\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.ResourceManager\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Writer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.CompilerServices.VisualC\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Handles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.RuntimeInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.WindowsRuntime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Formatters\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Json\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Claims\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Algorithms\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Csp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.X509Certificates\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Principal\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.SecureString\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Duplex\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.NetTcp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.RegularExpressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Overlapped\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Thread\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.ThreadPool\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Timer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ValueTuple\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.ReaderWriter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlSerializer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Boo.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"UniRx.csproj\">\n      <Project>{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}</Project>\n      <Name>UniRx</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <Target Name=\"GenerateTargetFrameworkMonikerAttribute\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Assets/AssetStoreTools/Editor/AssetStoreTools.dll.meta",
    "content": "fileFormatVersion: 2\nguid: f02b3fe0a866fca419671914a860554a\nPluginImporter:\n  serializedVersion: 2\n  iconMap: {}\n  executionOrder: {}\n  isPreloaded: 0\n  isOverridable: 0\n  platformData:\n    data:\n      first:\n        Any: \n      second:\n        enabled: 0\n        settings: {}\n    data:\n      first:\n        Editor: Editor\n      second:\n        enabled: 1\n        settings:\n          DefaultValueInitialized: true\n    data:\n      first:\n        Windows Store Apps: WindowsStoreApps\n      second:\n        enabled: 0\n        settings:\n          CPU: AnyCPU\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/AssetStoreTools/Editor/AssetStoreToolsExtra.dll.meta",
    "content": "fileFormatVersion: 2\nguid: 07e97bd03b7bdeb40bbc176326cd8d7a\nPluginImporter:\n  serializedVersion: 1\n  iconMap: {}\n  executionOrder: {}\n  isPreloaded: 0\n  platformData:\n    Any:\n      enabled: 0\n      settings: {}\n    Editor:\n      enabled: 1\n      settings:\n        DefaultValueInitialized: true\n    WindowsStoreApps:\n      enabled: 0\n      settings:\n        CPU: AnyCPU\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/AssetStoreTools/Editor/DroidSansMono.ttf.meta",
    "content": "fileFormatVersion: 2\nguid: 928f503de488e44408a8625d75d54c61\nTrueTypeFontImporter:\n  serializedVersion: 2\n  fontSize: 16\n  forceTextureCase: -2\n  characterSpacing: 1\n  characterPadding: 0\n  includeFontData: 1\n  use2xBehaviour: 0\n  fontNames: []\n  customCharacters: \n  fontRenderingMode: 0\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/AssetStoreTools/Editor/icon.png.meta",
    "content": "fileFormatVersion: 2\nguid: 3ef5b3d0acd79c3499f502f1b991678a\nTextureImporter:\n  fileIDToRecycleName: {}\n  serializedVersion: 2\n  mipmaps:\n    mipMapMode: 0\n    enableMipMap: 1\n    linearTexture: 0\n    correctGamma: 0\n    fadeOut: 0\n    borderMipMap: 0\n    mipMapFadeDistanceStart: 1\n    mipMapFadeDistanceEnd: 3\n  bumpmap:\n    convertToNormalMap: 0\n    externalNormalMap: 0\n    heightScale: .25\n    normalMapFilter: 0\n  isReadable: 0\n  grayScaleToAlpha: 0\n  generateCubemap: 0\n  cubemapConvolution: 0\n  cubemapConvolutionSteps: 8\n  cubemapConvolutionExponent: 1.5\n  seamlessCubemap: 0\n  textureFormat: -1\n  maxTextureSize: 1024\n  textureSettings:\n    filterMode: -1\n    aniso: -1\n    mipBias: -1\n    wrapMode: -1\n  nPOTScale: 1\n  lightmap: 0\n  rGBM: 0\n  compressionQuality: 50\n  spriteMode: 0\n  spriteExtrude: 1\n  spriteMeshType: 1\n  alignment: 0\n  spritePivot: {x: .5, y: .5}\n  spriteBorder: {x: 0, y: 0, z: 0, w: 0}\n  spritePixelsToUnits: 100\n  alphaIsTransparency: 0\n  textureType: -1\n  buildTargetSettings: []\n  spriteSheet:\n    sprites: []\n  spritePackingTag: \n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/AssetStoreTools/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 47c3c77b488bde14eac761a5144660ed\nfolderAsset: yes\ntimeCreated: 1475197920\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/AssetStoreTools.meta",
    "content": "fileFormatVersion: 2\nguid: 8951e7b9687d74949af2854b82e3601c\nfolderAsset: yes\ntimeCreated: 1475197920\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Editor/PackageExporter.cs",
    "content": "﻿#if UNITY_EDITOR\n\nusing System;\nusing System.IO;\nusing System.Linq;\nusing UnityEditor;\nusing UnityEngine;\n\npublic static class PackageExporter\n{\n    [MenuItem(\"Tools/Export Unitypackage\")]\n    public static void Export()\n    {\n        // configure\n        var root = \"Plugins/UniRx\";\n        var exportPath = \"./UniRx.unitypackage\";\n\n        var path = Path.Combine(Application.dataPath, root);\n        var assets = Directory.EnumerateFiles(path, \"*\", SearchOption.AllDirectories)\n            .Where(x => Path.GetExtension(x) == \".cs\" || Path.GetExtension(x) == \".asmdef\" || Path.GetExtension(x) == \".json\" || Path.GetExtension(x) == \".unity\" || Path.GetExtension(x) == \".meta\")\n            .Select(x => \"Assets\" + x.Replace(Application.dataPath, \"\").Replace(@\"\\\", \"/\"))\n            .ToArray();\n\n        UnityEngine.Debug.Log(\"Export below files\" + Environment.NewLine + string.Join(Environment.NewLine, assets));\n\n        AssetDatabase.ExportPackage(\n            assets,\n            exportPath,\n            ExportPackageOptions.Default);\n\n        UnityEngine.Debug.Log(\"Export complete: \" + Path.GetFullPath(exportPath));\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Editor/PackageExporter.cs.meta",
    "content": "fileFormatVersion: 2\nguid: af97405af79afbb4e9f7f49f30088474\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 5ef9d94dfe6423345a8f1777e5160e23\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample01_ObservableWWW.cs",
    "content": "﻿#if !(UNITY_METRO || UNITY_WP8)\n\n#if UNITY_2018_3_OR_NEWER\n#pragma warning disable CS0618\n#endif\n\nusing UnityEngine;\n\nnamespace UniRx.Examples\n{\n    // sample script, attach your object.\n    public class Sample01_ObservableWWW : MonoBehaviour\n    {\n        void Start()\n        {\n            // Basic: Download from google.\n            {\n                ObservableWWW.Get(\"http://google.co.jp/\")\n                    .Subscribe(\n                        x => Debug.Log(x.Substring(0, 100)), // onSuccess\n                        ex => Debug.LogException(ex)); // onError\n            }\n\n            // Linear Pattern with LINQ Query Expressions\n            // download after google, start bing download\n            {\n                var query = from google in ObservableWWW.Get(\"http://google.com/\")\n                            from bing in ObservableWWW.Get(\"http://bing.com/\")\n                            select new { google, bing };\n\n                var cancel = query.Subscribe(x => Debug.Log(x.google.Substring(0, 100) + \":\" + x.bing.Substring(0, 100)));\n\n                // Call Dispose is cancel downloading.\n                cancel.Dispose();\n            }\n\n            // Observable.WhenAll is for parallel asynchronous operation\n            // (It's like Observable.Zip but specialized for single async operations like Task.WhenAll of .NET 4)\n            {\n                var parallel = Observable.WhenAll(\n                    ObservableWWW.Get(\"http://google.com/\"),\n                    ObservableWWW.Get(\"http://bing.com/\"),\n                    ObservableWWW.Get(\"http://unity3d.com/\"));\n\n                parallel.Subscribe(xs =>\n                {\n                    Debug.Log(xs[0].Substring(0, 100)); // google\n                    Debug.Log(xs[1].Substring(0, 100)); // bing\n                    Debug.Log(xs[2].Substring(0, 100)); // unity\n                });\n            }\n\n            // with Progress\n            {\n                // notifier for progress\n                var progressNotifier = new ScheduledNotifier<float>();\n                progressNotifier.Subscribe(x => Debug.Log(x)); // write www.progress\n\n                // pass notifier to WWW.Get/Post\n                ObservableWWW.Get(\"http://google.com/\", progress: progressNotifier).Subscribe();\n            }\n\n            // with Error\n            {\n                // If WWW has .error, ObservableWWW throws WWWErrorException to onError pipeline.\n                // WWWErrorException has RawErrorMessage, HasResponse, StatusCode, ResponseHeaders\n                ObservableWWW.Get(\"http://www.google.com/404\")\n                    .CatchIgnore((WWWErrorException ex) =>\n                    {\n                        Debug.Log(ex.RawErrorMessage);\n                        if (ex.HasResponse)\n                        {\n                            Debug.Log(ex.StatusCode);\n                        }\n                        foreach (var item in ex.ResponseHeaders)\n                        {\n                            Debug.Log(item.Key + \":\" + item.Value);\n                        }\n                    })\n                    .Subscribe();\n            }\n        }\n    }\n}\n\n#endif\n\n#if UNITY_2018_3_OR_NEWER\n#pragma warning restore CS0618\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample01_ObservableWWW.cs.meta",
    "content": "fileFormatVersion: 2\nguid: bf3770fc51ac89f45987dbde37ae81bd\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample02_ObservableTriggers.cs",
    "content": "﻿using UnityEngine;\nusing UniRx.Triggers; // Triggers Namepsace\nusing System;\n\nnamespace UniRx.Examples\n{\n    public class Sample02_ObservableTriggers : MonoBehaviour\n    {\n        void Start()\n        {\n            // Get the plain object\n            var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);\n\n            // Add ObservableXxxTrigger for handle MonoBehaviour's event as Observable\n            cube.AddComponent<ObservableUpdateTrigger>()\n                .UpdateAsObservable()\n                .SampleFrame(30)\n                .Subscribe(x => Debug.Log(\"cube\"), () => Debug.Log(\"destroy\"));\n\n            // destroy after 3 second:)\n            GameObject.Destroy(cube, 3f);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample02_ObservableTriggers.cs.meta",
    "content": "fileFormatVersion: 2\nguid: cb5e978d683e94f4d9c2c81be80f93a7\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample03_GameObjectAsObservable.cs",
    "content": "﻿#if !(UNITY_IPHONE || UNITY_ANDROID || UNITY_METRO)\n\nusing UnityEngine;\nusing UniRx.Triggers; // for enable gameObject.EventAsObservbale()\n\nnamespace UniRx.Examples\n{\n    public class Sample03_GameObjectAsObservable : MonoBehaviour\n    {\n        void Start()\n        {\n            // All events can subscribe by ***AsObservable if enables UniRx.Triggers\n            this.OnMouseDownAsObservable()\n                .SelectMany(_ => this.gameObject.UpdateAsObservable())\n                .TakeUntil(this.gameObject.OnMouseUpAsObservable())\n                .Select(_ => Input.mousePosition)\n                .RepeatUntilDestroy(this)\n                .Subscribe(x => Debug.Log(x), ()=> Debug.Log(\"!!!\" + \"complete\"));\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample03_GameObjectAsObservable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 005e349e5ccdd2b47bddc813b81afe40\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample04_ConvertFromUnityCallback.cs",
    "content": "﻿using System;\nusing UnityEngine;\n\nnamespace UniRx.Examples\n{\n    public class Sample04_ConvertFromUnityCallback : MonoBehaviour\n    {\n        // This is about log but more reliable log sample => Sample11_Logger\n\n        private class LogCallback\n        {\n            public string Condition;\n            public string StackTrace;\n            public UnityEngine.LogType LogType;\n        }\n\n        static class LogHelper\n        {\n            // If static register callback, use Subject for event branching.\n\n#if (UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7)                    \n            static Subject<LogCallback> subject;\n\n            public static IObservable<LogCallback> LogCallbackAsObservable()\n            {\n                if (subject == null)\n                {\n                    subject = new Subject<LogCallback>();\n\n                    // Publish to Subject in callback\n\n\n                    UnityEngine.Application.RegisterLogCallback((condition, stackTrace, type) =>\n                    {\n                        subject.OnNext(new LogCallback { Condition = condition, StackTrace = stackTrace, LogType = type });\n                    });\n                }\n\n                return subject.AsObservable();\n            }\n\n#else\n            // If standard evetns, you can use Observable.FromEvent.\n\n            public static IObservable<LogCallback> LogCallbackAsObservable()\n            {\n                return Observable.FromEvent<Application.LogCallback, LogCallback>(\n                    h => (condition, stackTrace, type) => h(new LogCallback { Condition = condition, StackTrace = stackTrace, LogType = type }),\n                    h => Application.logMessageReceived += h, h => Application.logMessageReceived -= h);\n            }\n#endif\n        }\n\n        void Awake()\n        {\n            // method is separatable and composable\n            LogHelper.LogCallbackAsObservable()\n                .Where(x => x.LogType == LogType.Warning)\n                .Subscribe(x => Debug.Log(x));\n\n            LogHelper.LogCallbackAsObservable()\n                .Where(x => x.LogType == LogType.Error)\n                .Subscribe(x => Debug.Log(x));\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample04_ConvertFromUnityCallback.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 73e69fd4bbb724045a4e06050fbc5af3\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample05_ConvertFromCoroutine.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Threading;\nusing UnityEngine;\n#if UNITY_2018_3_OR_NEWER\n#pragma warning disable CS0618\n#endif\n\nnamespace UniRx.Examples\n{\n    public class Sample05_ConvertFromCoroutine\n    {\n        // public method\n        public static IObservable<string> GetWWW(string url)\n        {\n            // convert coroutine to IObservable\n            return Observable.FromCoroutine<string>((observer, cancellationToken) => GetWWWCore(url, observer, cancellationToken));\n        }\n\n        // IEnumerator with callback\n        static IEnumerator GetWWWCore(string url, IObserver<string> observer, CancellationToken cancellationToken)\n        {\n            var www = new UnityEngine.WWW(url);\n            while (!www.isDone && !cancellationToken.IsCancellationRequested)\n            {\n                yield return null;\n            }\n\n            if (cancellationToken.IsCancellationRequested) yield break;\n\n            if (www.error != null)\n            {\n                observer.OnError(new Exception(www.error));\n            }\n            else\n            {\n                observer.OnNext(www.text);\n                observer.OnCompleted();\n            }\n        }\n    }\n}\n#if UNITY_2018_3_OR_NEWER\n#pragma warning restore CS0618\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample05_ConvertFromCoroutine.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 41f3df73f7da66b4980f6d9a86927796\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample06_ConvertToCoroutine.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing UnityEngine;\n\nnamespace UniRx.Examples\n{\n    public class Sample06_ConvertToCoroutine : MonoBehaviour\n    {\n        // convert IObservable to Coroutine\n        void Start()\n        {\n            StartCoroutine(ComplexCoroutineTest());\n        }\n\n        IEnumerator ComplexCoroutineTest()\n        {\n            yield return new WaitForSeconds(1);\n\n            var v = default(int);\n            yield return Observable.Range(1, 10).StartAsCoroutine(x => v = x);\n\n            Debug.Log(v); // 10(callback is last value)\n            yield return new WaitForSeconds(3);\n\n            yield return Observable.Return(100).StartAsCoroutine(x => v = x);\n\n            Debug.Log(v); // 100\n        }\n\n        // Note:ToAwaitableEnumerator/StartAsCoroutine/LazyTask are obsolete way on Unity 5.3\n        // You can use ToYieldInstruction.\n\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2)\n#if UNITY_2018_3_OR_NEWER\n#pragma warning disable CS0618\n#endif\n\n        IEnumerator TestNewCustomYieldInstruction()\n        {\n            // wait Rx Observable.\n            yield return Observable.Timer(TimeSpan.FromSeconds(1)).ToYieldInstruction();\n\n            // you can change the scheduler(this is ignore Time.scale)\n            yield return Observable.Timer(TimeSpan.FromSeconds(1), Scheduler.MainThreadIgnoreTimeScale).ToYieldInstruction();\n\n            // get return value from ObservableYieldInstruction\n            var o = ObservableWWW.Get(\"http://unity3d.com/\").ToYieldInstruction(throwOnError: false);\n            yield return o;\n\n            if (o.HasError) { Debug.Log(o.Error.ToString()); }\n            if (o.HasResult) { Debug.Log(o.Result); }\n\n            // other sample(wait until transform.position.y >= 100) \n            yield return this.ObserveEveryValueChanged(x => x.transform).FirstOrDefault(x => x.position.y >= 100).ToYieldInstruction();\n        }\n#if UNITY_2018_3_OR_NEWER\n#pragma warning restore CS0618\n#endif\n#endif\n\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample06_ConvertToCoroutine.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 5da8247fbc4a4c84e96a727b44903214\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample07_OrchestratIEnumerator.cs",
    "content": "﻿#pragma warning disable 0168\n#pragma warning disable 0219\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing UnityEngine;\n\nnamespace UniRx.Examples\n{\n    public class Sample07_OrchestratIEnumerator : MonoBehaviour\n    {\n        // two coroutines\n        IEnumerator AsyncA()\n        {\n            Debug.Log(\"a start\");\n            yield return new WaitForSeconds(3);\n            Debug.Log(\"a end\");\n        }\n\n        IEnumerator AsyncB()\n        {\n            Debug.Log(\"b start\");\n            yield return new WaitForEndOfFrame();\n            Debug.Log(\"b end\");\n        }\n\n        void Start()\n        {\n            // after completed AsyncA, run AsyncB as continuous routine.\n            // UniRx expands SelectMany(IEnumerator) as SelectMany(IEnumerator.ToObservable())\n            var cancel = Observable.FromCoroutine(AsyncA)\n                .SelectMany(AsyncB)\n                .Subscribe();\n\n            // If you want to stop Coroutine(as cancel), call subscription.Dispose()\n            // cancel.Dispose();\n        }\n    }\n}\n\n#pragma warning restore 0219\n#pragma warning restore 0168"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample07_OrchestratIEnumerator.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d437607dfffa8ff428bda3366354078d\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample08_DetectDoubleClick.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing UnityEngine;\n\nnamespace UniRx.Examples\n{\n    public class Sample08_DetectDoubleClick : MonoBehaviour\n    {\n        void Start()\n        {\n            // Global event handling is very useful.\n            // UniRx can handle there events.\n            // Observable.EveryUpdate/EveryFixedUpdate/EveryEndOfFrame\n            // Observable.EveryApplicationFocus/EveryApplicationPause\n            // Observable.OnceApplicationQuit\n\n            // This DoubleCLick Sample is from\n            // The introduction to Reactive Programming you've been missing\n            // https://gist.github.com/staltz/868e7e9bc2a7b8c1f754\n\n            var clickStream = Observable.EveryUpdate()\n                .Where(_ => Input.GetMouseButtonDown(0));\n\n            clickStream.Buffer(clickStream.Throttle(TimeSpan.FromMilliseconds(250)))\n                .Where(xs => xs.Count >= 2)\n                .Subscribe(xs => Debug.Log(\"DoubleClick Detected! Count:\" + xs.Count));\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample08_DetectDoubleClick.cs.meta",
    "content": "fileFormatVersion: 2\nguid: eb801bbfb1ffcd64389e90c8f2435b79\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample09_EventHandling.cs",
    "content": "﻿#pragma warning disable 0067\n\nusing System;\nusing UnityEngine;\n\nnamespace UniRx.Examples\n{\n    public class Sample09_EventHandling : MonoBehaviour\n    {\n        public class MyEventArgs : EventArgs\n        {\n            public int MyProperty { get; set; }\n        }\n\n        public event EventHandler<MyEventArgs> FooBar;\n        public event Action<int> FooFoo;\n\n        CompositeDisposable disposables = new CompositeDisposable();\n\n        // Subject is Rx's native event expression and recommend way for use Rx as event.\n        // Subject.OnNext as fire event,\n        // expose IObserver is subscibable for external source, it's no need convert.\n        Subject<int> onBarBar = new Subject<int>();\n        public IObservable<int> OnBarBar { get { return onBarBar; } }\n\n        void Start()\n        {\n            // convert to IO<EventPattern> as (sender, eventArgs)\n            Observable.FromEventPattern<EventHandler<MyEventArgs>, MyEventArgs>(\n                    h => h.Invoke, h => FooBar += h, h => FooBar -= h)\n                .Subscribe()\n                .AddTo(disposables); // IDisposable can add to collection easily by AddTo\n\n            // convert to IO<EventArgs>, many situation this is useful than FromEventPattern\n            Observable.FromEvent<EventHandler<MyEventArgs>, MyEventArgs>(\n                    h => (sender, e) => h(e), h => FooBar += h, h => FooBar -= h)\n                .Subscribe()\n                .AddTo(disposables);\n\n            // You can convert Action like event.\n            Observable.FromEvent<int>(\n                    h => FooFoo += h, h => FooFoo -= h)\n                .Subscribe()\n                .AddTo(disposables);\n\n            // AOT Safe EventHandling, use dummy capture, see:https://github.com/neuecc/UniRx/wiki/AOT-Exception-Patterns-and-Hacks\n            var capture = 0;\n            Observable.FromEventPattern<EventHandler<MyEventArgs>, MyEventArgs>(h =>\n                {\n                    capture.GetHashCode(); // dummy for AOT\n                    return new EventHandler<MyEventArgs>(h);\n                }, h => FooBar += h, h => FooBar -= h)\n                .Subscribe()\n                .AddTo(disposables);\n\n            // Subject as like event.\n            OnBarBar.Subscribe().AddTo(disposables);\n            onBarBar.OnNext(1); // fire event\n        }\n\n        void OnDestroy()\n        {\n            // manage subscription lifecycle\n            disposables.Dispose();\n        }\n    }\n}\n\n#pragma warning restore 0067"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample09_EventHandling.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 95140e49213aa6f49a470a81873b87c0\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample10_MainThreadDispatcher.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing UnityEngine;\n\nnamespace UniRx.Examples\n{\n    public class Sample10_MainThreadDispatcher\n    {\n        public void Run()\n        {\n            // MainThreadDispatcher is heart of Rx and Unity integration\n\n            // StartCoroutine can start coroutine besides MonoBehaviour.\n            MainThreadDispatcher.StartCoroutine(TestAsync());\n\n            // We have two way of run coroutine, FromCoroutine or StartCoroutine.\n            // StartCoroutine is Unity primitive way and it's awaitable by yield return.\n            // FromCoroutine is Rx, it's composable and cancellable by subscription's IDisposable.\n            // FromCoroutine's overload can have return value, see:Sample05_ConvertFromCoroutine\n            Observable.FromCoroutine(TestAsync).Subscribe();\n\n            // Add Action to MainThreadDispatcher. Action is saved queue, run on next update.\n            MainThreadDispatcher.Post(_ => Debug.Log(\"test\"), null);\n\n            // Timebased operations is run on MainThread(as default)\n            // All timebased operation(Interval, Timer, Delay, Buffer, etc...)is single thread, thread safe!\n            Observable.Interval(TimeSpan.FromSeconds(1))\n                .Subscribe(x => Debug.Log(x));\n\n            // Observable.Start use ThreadPool Scheduler as default.\n            // ObserveOnMainThread return to mainthread\n            Observable.Start(() => Unit.Default) // asynchronous work\n                .ObserveOnMainThread()\n                .Subscribe(x => Debug.Log(x));\n        }\n\n        IEnumerator TestAsync()\n        {\n            Debug.Log(\"a\");\n            yield return new WaitForSeconds(1);\n            Debug.Log(\"b\");\n            yield return new WaitForSeconds(1);\n            Debug.Log(\"c\");\n            yield return new WaitForSeconds(1);\n            Debug.Log(\"d\");\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample10_MainThreadDispatcher.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 6a0b959735346af48b772254afc8afdd\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample11_Logger.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing UniRx.Diagnostics;\nusing UnityEngine;\n\nnamespace UniRx.Examples\n{\n    public class Sample11_Logger\n    {\n        // UniRx.Diagnostics.Logger\n        // logger is threadsafe, define per class with name.\n\t\tstatic readonly UniRx.Diagnostics.Logger logger = new UniRx.Diagnostics.Logger(\"Sample11\");\n\n        // call once at applicationinit\n        public void ApplicationInitialize()\n        {\n            // Log as Stream, UniRx.Diagnostics.ObservableLogger.Listener is IObservable<LogEntry>\n            // You can subscribe and output to any place.\n            ObservableLogger.Listener.LogToUnityDebug();\n\n            // for example, filter only Exception and upload to web.\n            // (make custom sink(IObserver<EventEntry>) is better to use)\n            ObservableLogger.Listener\n                .Where(x => x.LogType == LogType.Exception)\n                .Subscribe(x =>\n                {\n                    // ObservableWWW.Post(\"\", null).Subscribe();\n                });\n        }\n\n        public void Run()\n        {\n            // Debug is write only DebugBuild.\n            logger.Debug(\"Debug Message\");\n\n            // or other logging methods\n            logger.Log(\"Message\");\n            logger.Exception(new Exception(\"test exception\"));\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample11_Logger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f5aa72c61e2548a4bac4d65f93c63bf1\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample12Scene.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nSceneSettings:\n  m_ObjectHideFlags: 0\n  m_PVSData: \n  m_PVSObjectsArray: []\n  m_PVSPortalsArray: []\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 6\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 3\n  m_SkyboxMaterial: {fileID: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 0}\n--- !u!157 &4\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 6\n  m_GIWorkflowMode: 0\n  m_LightmapsMode: 1\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 0\n    m_EnableRealtimeLightmaps: 0\n  m_LightmapEditorSettings:\n    serializedVersion: 3\n    m_Resolution: 2\n    m_BakeResolution: 40\n    m_TextureWidth: 1024\n    m_TextureHeight: 1024\n    m_AOMaxDistance: 1\n    m_Padding: 2\n    m_CompAOExponent: 0\n    m_LightmapParameters: {fileID: 0}\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherRayCount: 1024\n    m_ReflectionCompression: 2\n  m_LightingDataAsset: {fileID: 0}\n  m_RuntimeCPUUsage: 25\n--- !u!196 &5\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    accuratePlacement: 0\n    minRegionArea: 2\n    cellSize: 0.16666667\n    manualCellSize: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &33721919\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 33721920}\n  - 223: {fileID: 33721924}\n  - 114: {fileID: 33721923}\n  - 114: {fileID: 33721922}\n  - 114: {fileID: 33721921}\n  m_Layer: 5\n  m_Name: Canvas\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &33721920\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 33721919}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 0, y: 0, z: 0}\n  m_Children:\n  - {fileID: 921642174}\n  - {fileID: 530746210}\n  - {fileID: 46704896}\n  - {fileID: 579875960}\n  - {fileID: 1891604357}\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0, y: 0}\n--- !u!114 &33721921\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 33721919}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 18e34490a83a27e44adf93dd4ffd1f22, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  MyButton: {fileID: 921642175}\n  MyToggle: {fileID: 530746211}\n  MyInput: {fileID: 46704897}\n  MyText: {fileID: 579875961}\n  MySlider: {fileID: 1891604358}\n  IntRxProp:\n    value: 0\n--- !u!114 &33721922\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 33721919}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_IgnoreReversedGraphics: 1\n  m_BlockingObjects: 0\n  m_BlockingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n--- !u!114 &33721923\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 33721919}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_UiScaleMode: 0\n  m_ReferencePixelsPerUnit: 100\n  m_ScaleFactor: 1\n  m_ReferenceResolution: {x: 800, y: 600}\n  m_ScreenMatchMode: 0\n  m_MatchWidthOrHeight: 0\n  m_PhysicalUnit: 3\n  m_FallbackScreenDPI: 96\n  m_DefaultSpriteDPI: 96\n  m_DynamicPixelsPerUnit: 1\n--- !u!223 &33721924\nCanvas:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 33721919}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_RenderMode: 0\n  m_Camera: {fileID: 0}\n  m_PlaneDistance: 100\n  m_PixelPerfect: 0\n  m_ReceivesEvents: 1\n  m_OverrideSorting: 0\n  m_OverridePixelPerfect: 0\n  m_SortingLayerID: 0\n  m_SortingOrder: 0\n  m_TargetDisplay: 0\n--- !u!1 &46704895\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 46704896}\n  - 222: {fileID: 46704899}\n  - 114: {fileID: 46704898}\n  - 114: {fileID: 46704897}\n  m_Layer: 5\n  m_Name: InputField\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &46704896\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 46704895}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 835857415}\n  - {fileID: 710358450}\n  m_Father: {fileID: 33721920}\n  m_RootOrder: 2\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 277}\n  m_SizeDelta: {x: 160, y: 30}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &46704897\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 46704895}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}\n    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}\n    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}\n    m_ColorMultiplier: 1\n    m_FadeDuration: 0.1\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 46704898}\n  m_TextComponent: {fileID: 710358451}\n  m_Placeholder: {fileID: 835857416}\n  m_ContentType: 0\n  m_InputType: 0\n  m_AsteriskChar: 42\n  m_KeyboardType: 0\n  m_LineType: 0\n  m_HideMobileInput: 0\n  m_CharacterValidation: 0\n  m_CharacterLimit: 0\n  m_OnEndEdit:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n  m_OnValueChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n  m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_CustomCaretColor: 0\n  m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}\n  m_Text: \n  m_CaretBlinkRate: 1.7\n  m_CaretWidth: 1\n  m_ReadOnly: 0\n--- !u!114 &46704898\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 46704895}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &46704899\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 46704895}\n--- !u!1 &163238468\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 163238469}\n  - 222: {fileID: 163238471}\n  - 114: {fileID: 163238470}\n  m_Layer: 5\n  m_Name: Checkmark\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &163238469\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 163238468}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1018308463}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 20, y: 20}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &163238470\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 163238468}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &163238471\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 163238468}\n--- !u!1 &530746209\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 530746210}\n  - 114: {fileID: 530746211}\n  m_Layer: 5\n  m_Name: Toggle\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &530746210\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 530746209}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1018308463}\n  - {fileID: 1527674668}\n  m_Father: {fileID: 33721920}\n  m_RootOrder: 1\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -160, y: 294}\n  m_SizeDelta: {x: 160, y: 20}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &530746211\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 530746209}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}\n    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}\n    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}\n    m_ColorMultiplier: 1\n    m_FadeDuration: 0.1\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 1018308464}\n  toggleTransition: 1\n  graphic: {fileID: 163238470}\n  m_Group: {fileID: 0}\n  onValueChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n  m_IsOn: 0\n--- !u!1 &579875959\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 579875960}\n  - 222: {fileID: 579875962}\n  - 114: {fileID: 579875961}\n  m_Layer: 5\n  m_Name: Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &579875960\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 579875959}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 33721920}\n  m_RootOrder: 3\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 178}\n  m_SizeDelta: {x: 160, y: 30}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &579875961\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 579875959}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: New Text\n--- !u!222 &579875962\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 579875959}\n--- !u!1 &605953354\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 605953355}\n  m_Layer: 5\n  m_Name: Handle Slide Area\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &605953355\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 605953354}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1022847601}\n  m_Father: {fileID: 1891604357}\n  m_RootOrder: 2\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: -20, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!1 &710358449\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 710358450}\n  - 222: {fileID: 710358452}\n  - 114: {fileID: 710358451}\n  m_Layer: 5\n  m_Name: Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &710358450\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 710358449}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 46704896}\n  m_RootOrder: 1\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: -0.5}\n  m_SizeDelta: {x: -20, y: -13}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &710358451\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 710358449}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 0\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: \n--- !u!222 &710358452\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 710358449}\n--- !u!1 &801653541\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 801653542}\n  - 222: {fileID: 801653544}\n  - 114: {fileID: 801653543}\n  m_Layer: 5\n  m_Name: Background\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &801653542\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 801653541}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1891604357}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0.25}\n  m_AnchorMax: {x: 1, y: 0.75}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &801653543\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 801653541}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &801653544\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 801653541}\n--- !u!1 &835857414\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 835857415}\n  - 222: {fileID: 835857417}\n  - 114: {fileID: 835857416}\n  m_Layer: 5\n  m_Name: Placeholder\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &835857415\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 835857414}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 46704896}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: -0.5}\n  m_SizeDelta: {x: -20, y: -13}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &835857416\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 835857414}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 2\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Enter text...\n--- !u!222 &835857417\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 835857414}\n--- !u!1 &921642173\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 921642174}\n  - 222: {fileID: 921642177}\n  - 114: {fileID: 921642176}\n  - 114: {fileID: 921642175}\n  m_Layer: 5\n  m_Name: Button\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &921642174\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 921642173}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1781955689}\n  m_Father: {fileID: 33721920}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -171, y: 218}\n  m_SizeDelta: {x: 160, y: 30}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &921642175\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 921642173}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}\n    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}\n    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}\n    m_ColorMultiplier: 1\n    m_FadeDuration: 0.1\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 921642176}\n  m_OnClick:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n--- !u!114 &921642176\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 921642173}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &921642177\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 921642173}\n--- !u!1 &930565829\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 930565830}\n  - 222: {fileID: 930565832}\n  - 114: {fileID: 930565831}\n  m_Layer: 5\n  m_Name: Fill\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &930565830\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 930565829}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1807094062}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 10, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &930565831\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 930565829}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &930565832\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 930565829}\n--- !u!1 &1018308462\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 1018308463}\n  - 222: {fileID: 1018308465}\n  - 114: {fileID: 1018308464}\n  m_Layer: 5\n  m_Name: Background\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1018308463\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1018308462}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 163238469}\n  m_Father: {fileID: 530746210}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 10, y: -10}\n  m_SizeDelta: {x: 20, y: 20}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &1018308464\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1018308462}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &1018308465\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1018308462}\n--- !u!1 &1022847600\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 1022847601}\n  - 222: {fileID: 1022847603}\n  - 114: {fileID: 1022847602}\n  m_Layer: 5\n  m_Name: Handle\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1022847601\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1022847600}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 605953355}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 20, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &1022847602\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1022847600}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &1022847603\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1022847600}\n--- !u!1 &1184379970\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 4: {fileID: 1184379974}\n  - 114: {fileID: 1184379973}\n  - 114: {fileID: 1184379972}\n  - 114: {fileID: 1184379971}\n  m_Layer: 0\n  m_Name: EventSystem\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1184379971\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1184379970}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1997211142, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_ForceModuleActive: 0\n--- !u!114 &1184379972\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1184379970}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_HorizontalAxis: Horizontal\n  m_VerticalAxis: Vertical\n  m_SubmitButton: Submit\n  m_CancelButton: Cancel\n  m_InputActionsPerSecond: 10\n  m_RepeatDelay: 0.5\n  m_ForceModuleActive: 0\n--- !u!114 &1184379973\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1184379970}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_FirstSelected: {fileID: 0}\n  m_sendNavigationEvents: 1\n  m_DragThreshold: 5\n--- !u!4 &1184379974\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1184379970}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 2\n--- !u!1 &1527674667\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 1527674668}\n  - 222: {fileID: 1527674670}\n  - 114: {fileID: 1527674669}\n  m_Layer: 5\n  m_Name: Label\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1527674668\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1527674667}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 530746210}\n  m_RootOrder: 1\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 9, y: -0.5}\n  m_SizeDelta: {x: -28, y: -3}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &1527674669\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1527674667}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Toggle\n--- !u!222 &1527674670\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1527674667}\n--- !u!1 &1781955688\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 1781955689}\n  - 222: {fileID: 1781955691}\n  - 114: {fileID: 1781955690}\n  m_Layer: 5\n  m_Name: Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1781955689\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1781955688}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 921642174}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &1781955690\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1781955688}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 4\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Button\n--- !u!222 &1781955691\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1781955688}\n--- !u!1 &1807094061\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 1807094062}\n  m_Layer: 5\n  m_Name: Fill Area\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1807094062\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1807094061}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 930565830}\n  m_Father: {fileID: 1891604357}\n  m_RootOrder: 1\n  m_AnchorMin: {x: 0, y: 0.25}\n  m_AnchorMax: {x: 1, y: 0.75}\n  m_AnchoredPosition: {x: -5, y: 0}\n  m_SizeDelta: {x: -20, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!1 &1838497716\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 4: {fileID: 1838497721}\n  - 20: {fileID: 1838497720}\n  - 92: {fileID: 1838497719}\n  - 124: {fileID: 1838497718}\n  - 81: {fileID: 1838497717}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &1838497717\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1838497716}\n  m_Enabled: 1\n--- !u!124 &1838497718\nBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1838497716}\n  m_Enabled: 1\n--- !u!92 &1838497719\nBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1838497716}\n  m_Enabled: 1\n--- !u!20 &1838497720\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1838497716}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 1\n  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 60\n  orthographic: 1\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 0\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n  m_StereoMirrorMode: 0\n--- !u!4 &1838497721\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1838497716}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -10}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n--- !u!1 &1891604356\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 1891604357}\n  - 114: {fileID: 1891604358}\n  m_Layer: 5\n  m_Name: Slider\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1891604357\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1891604356}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 801653542}\n  - {fileID: 1807094062}\n  - {fileID: 605953355}\n  m_Father: {fileID: 33721920}\n  m_RootOrder: 4\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: 0, y: 102}\n  m_SizeDelta: {x: 160, y: 20}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &1891604358\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1891604356}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -113659843, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}\n    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}\n    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}\n    m_ColorMultiplier: 1\n    m_FadeDuration: 0.1\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 1022847602}\n  m_FillRect: {fileID: 930565830}\n  m_HandleRect: {fileID: 1022847601}\n  m_Direction: 0\n  m_MinValue: 0\n  m_MaxValue: 1\n  m_WholeNumbers: 0\n  m_Value: 1\n  m_OnValueChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample12Scene.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 4a4aea8df1ad11c47a1db84432dd30f8\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample12_ReactiveProperty.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace UniRx.Examples\n{\n    public class Sample12_ReactiveProperty : MonoBehaviour\n    {\n        // Open Sample12Scene. Set from canvas\n        public Button MyButton;\n        public Toggle MyToggle;\n        public InputField MyInput;\n        public Text MyText;\n        public Slider MySlider;\n\n        // You can monitor/modifie in inspector by SpecializedReactiveProperty\n        public IntReactiveProperty IntRxProp = new IntReactiveProperty();\n\n        Enemy enemy = new Enemy(1000);\n\n        void Start()\n        {\n            // UnityEvent as Observable\n            // (shortcut, MyButton.OnClickAsObservable())\n            MyButton.onClick.AsObservable().Subscribe(_ => enemy.CurrentHp.Value -= 99);\n\n            // Toggle, Input etc as Observable(OnValueChangedAsObservable is helper for provide isOn value on subscribe)\n            // SubscribeToInteractable is UniRx.UI Extension Method, same as .interactable = x)\n            MyToggle.OnValueChangedAsObservable().SubscribeToInteractable(MyButton);\n\n            // input shows delay after 1 second\n#if !(UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2)\n            MyInput.OnValueChangedAsObservable()\n#else\n            MyInput.OnValueChangeAsObservable()\n#endif\n                .Where(x => x != null)\n                .Delay(TimeSpan.FromSeconds(1))\n                .SubscribeToText(MyText); // SubscribeToText is UniRx.UI Extension Method\n\n            // converting for human visibility\n            MySlider.OnValueChangedAsObservable()\n                .SubscribeToText(MyText, x => Math.Round(x, 2).ToString());\n\n            // from RxProp, CurrentHp changing(Button Click) is observable\n            enemy.CurrentHp.SubscribeToText(MyText);\n            enemy.IsDead.Where(isDead => isDead == true)\n                .Subscribe(_ =>\n                {\n                    MyToggle.interactable = MyButton.interactable = false;\n                });\n\n            // initial text:)\n            IntRxProp.SubscribeToText(MyText);\n        }\n    }\n\n    // Reactive Notification Model\n    public class Enemy\n    {\n        public IReactiveProperty<long> CurrentHp { get; private set; }\n\n        public IReadOnlyReactiveProperty<bool> IsDead { get; private set; }\n\n        public Enemy(int initialHp)\n        {\n            // Declarative Property\n            CurrentHp = new ReactiveProperty<long>(initialHp);\n            IsDead = CurrentHp.Select(x => x <= 0).ToReactiveProperty();\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample12_ReactiveProperty.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 18e34490a83a27e44adf93dd4ffd1f22\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample13Scene.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nSceneSettings:\n  m_ObjectHideFlags: 0\n  m_PVSData: \n  m_PVSObjectsArray: []\n  m_PVSPortalsArray: []\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 6\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 3\n  m_SkyboxMaterial: {fileID: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 0}\n--- !u!157 &4\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 6\n  m_GIWorkflowMode: 0\n  m_LightmapsMode: 1\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 0\n    m_EnableRealtimeLightmaps: 0\n  m_LightmapEditorSettings:\n    serializedVersion: 3\n    m_Resolution: 2\n    m_BakeResolution: 40\n    m_TextureWidth: 1024\n    m_TextureHeight: 1024\n    m_AOMaxDistance: 1\n    m_Padding: 2\n    m_CompAOExponent: 0\n    m_LightmapParameters: {fileID: 0}\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherRayCount: 1024\n    m_ReflectionCompression: 2\n  m_LightingDataAsset: {fileID: 0}\n  m_RuntimeCPUUsage: 25\n--- !u!196 &5\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    accuratePlacement: 0\n    minRegionArea: 2\n    cellSize: 0.16666667\n    manualCellSize: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &48390799\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 48390800}\n  - 222: {fileID: 48390802}\n  - 114: {fileID: 48390801}\n  m_Layer: 5\n  m_Name: Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &48390800\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 48390799}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 2136645852}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &48390801\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 48390799}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 4\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Clear Checked\n--- !u!222 &48390802\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 48390799}\n--- !u!1 &80191139\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 80191140}\n  - 114: {fileID: 80191141}\n  m_Layer: 5\n  m_Name: TodoList\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &80191140\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 80191139}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 625561981}\n  m_RootOrder: 2\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0.000030517578, y: -864}\n  m_SizeDelta: {x: 0, y: 744}\n  m_Pivot: {x: 0.5, y: 0}\n--- !u!114 &80191141\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 80191139}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Padding:\n    m_Left: 0\n    m_Right: 0\n    m_Top: 0\n    m_Bottom: 0\n  m_ChildAlignment: 0\n  m_Spacing: 0\n  m_ChildForceExpandWidth: 1\n  m_ChildForceExpandHeight: 1\n--- !u!1 &300470760\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 4: {fileID: 300470761}\n  - 114: {fileID: 300470762}\n  m_Layer: 0\n  m_Name: ToDoScene\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!4 &300470761\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 300470760}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 895588078}\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n--- !u!114 &300470762\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 300470760}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 022ecfa555367154c8cf87d61465f7e2, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Title: {fileID: 852345258}\n  ToDoInput: {fileID: 566049662}\n  AddButton: {fileID: 611575448}\n  ClearButton: {fileID: 2136645853}\n  TodoList: {fileID: 80191139}\n  SampleItemPrefab: {fileID: 182208, guid: 173222196f3e1f0448b383f260df7d44, type: 2}\n--- !u!1 &448872075\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 4: {fileID: 448872079}\n  - 114: {fileID: 448872078}\n  - 114: {fileID: 448872077}\n  - 114: {fileID: 448872076}\n  - 114: {fileID: 448872080}\n  m_Layer: 0\n  m_Name: EventSystem\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &448872076\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 448872075}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1997211142, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_ForceModuleActive: 0\n--- !u!114 &448872077\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 448872075}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_HorizontalAxis: Horizontal\n  m_VerticalAxis: Vertical\n  m_SubmitButton: Submit\n  m_CancelButton: Cancel\n  m_InputActionsPerSecond: 10\n  m_RepeatDelay: 0.5\n  m_ForceModuleActive: 0\n--- !u!114 &448872078\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 448872075}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_FirstSelected: {fileID: 0}\n  m_sendNavigationEvents: 1\n  m_DragThreshold: 5\n--- !u!4 &448872079\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 448872075}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 2\n--- !u!114 &448872080\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 448872075}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_HorizontalAxis: Horizontal\n  m_VerticalAxis: Vertical\n  m_SubmitButton: Submit\n  m_CancelButton: Cancel\n  m_InputActionsPerSecond: 10\n  m_RepeatDelay: 0.5\n  m_ForceModuleActive: 0\n--- !u!1 &566049660\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 566049661}\n  - 222: {fileID: 566049664}\n  - 114: {fileID: 566049663}\n  - 114: {fileID: 566049662}\n  m_Layer: 5\n  m_Name: ToDoInput\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &566049661\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 566049660}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 2102338788}\n  - {fileID: 1368145207}\n  m_Father: {fileID: 650625965}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &566049662\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 566049660}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}\n    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}\n    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}\n    m_ColorMultiplier: 1\n    m_FadeDuration: 0.1\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 566049663}\n  m_TextComponent: {fileID: 1368145205}\n  m_Placeholder: {fileID: 2102338789}\n  m_ContentType: 0\n  m_InputType: 0\n  m_AsteriskChar: 42\n  m_KeyboardType: 0\n  m_LineType: 0\n  m_HideMobileInput: 0\n  m_CharacterValidation: 0\n  m_CharacterLimit: 0\n  m_OnEndEdit:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n  m_OnValueChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n  m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_CustomCaretColor: 0\n  m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}\n  m_Text: \n  m_CaretBlinkRate: 1.7\n  m_CaretWidth: 1\n  m_ReadOnly: 0\n--- !u!114 &566049663\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 566049660}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &566049664\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 566049660}\n--- !u!1 &611575446\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 611575447}\n  - 222: {fileID: 611575450}\n  - 114: {fileID: 611575449}\n  - 114: {fileID: 611575448}\n  m_Layer: 5\n  m_Name: AddButton\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &611575447\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 611575446}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 721405894}\n  m_Father: {fileID: 650625965}\n  m_RootOrder: 1\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &611575448\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 611575446}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}\n    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}\n    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}\n    m_ColorMultiplier: 1\n    m_FadeDuration: 0.1\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 611575449}\n  m_OnClick:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n--- !u!114 &611575449\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 611575446}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &611575450\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 611575446}\n--- !u!1 &625561980\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 625561981}\n  - 222: {fileID: 625561983}\n  - 114: {fileID: 625561982}\n  m_Layer: 5\n  m_Name: Panel\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &625561981\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 625561980}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 852345257}\n  - {fileID: 650625965}\n  - {fileID: 80191140}\n  m_Father: {fileID: 895588078}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &625561982\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 625561980}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 0.392}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &625561983\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 625561980}\n--- !u!1 &650625964\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 650625965}\n  - 114: {fileID: 650625966}\n  m_Layer: 5\n  m_Name: InputArea\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &650625965\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 650625964}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 566049661}\n  - {fileID: 611575447}\n  - {fileID: 2136645852}\n  m_Father: {fileID: 625561981}\n  m_RootOrder: 1\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 50}\n  m_Pivot: {x: 0.5, y: 0}\n--- !u!114 &650625966\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 650625964}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Padding:\n    m_Left: 0\n    m_Right: 0\n    m_Top: 0\n    m_Bottom: 0\n  m_ChildAlignment: 0\n  m_Spacing: 0\n  m_ChildForceExpandWidth: 1\n  m_ChildForceExpandHeight: 1\n--- !u!1 &721405893\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 721405894}\n  - 222: {fileID: 721405896}\n  - 114: {fileID: 721405895}\n  m_Layer: 5\n  m_Name: Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &721405894\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 721405893}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 611575447}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &721405895\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 721405893}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 4\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Add\n--- !u!222 &721405896\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 721405893}\n--- !u!1 &852345256\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 852345257}\n  - 222: {fileID: 852345259}\n  - 114: {fileID: 852345258}\n  m_Layer: 5\n  m_Name: Title\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &852345257\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 852345256}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 625561981}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 120}\n  m_Pivot: {x: 0, y: 1}\n--- !u!114 &852345258\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 852345256}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 30\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 0\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: TODO App:)\n--- !u!222 &852345259\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 852345256}\n--- !u!1 &895588077\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 895588078}\n  - 223: {fileID: 895588081}\n  - 114: {fileID: 895588080}\n  - 114: {fileID: 895588079}\n  m_Layer: 5\n  m_Name: Canvas\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &895588078\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 895588077}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 0, y: 0, z: 0}\n  m_Children:\n  - {fileID: 625561981}\n  m_Father: {fileID: 300470761}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0, y: 0}\n--- !u!114 &895588079\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 895588077}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_IgnoreReversedGraphics: 1\n  m_BlockingObjects: 0\n  m_BlockingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n--- !u!114 &895588080\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 895588077}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_UiScaleMode: 0\n  m_ReferencePixelsPerUnit: 100\n  m_ScaleFactor: 1\n  m_ReferenceResolution: {x: 800, y: 600}\n  m_ScreenMatchMode: 0\n  m_MatchWidthOrHeight: 0\n  m_PhysicalUnit: 3\n  m_FallbackScreenDPI: 96\n  m_DefaultSpriteDPI: 96\n  m_DynamicPixelsPerUnit: 1\n--- !u!223 &895588081\nCanvas:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 895588077}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_RenderMode: 0\n  m_Camera: {fileID: 0}\n  m_PlaneDistance: 100\n  m_PixelPerfect: 0\n  m_ReceivesEvents: 1\n  m_OverrideSorting: 0\n  m_OverridePixelPerfect: 0\n  m_SortingLayerID: 0\n  m_SortingOrder: 0\n  m_TargetDisplay: 0\n--- !u!1 &1368145204\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 1368145207}\n  - 222: {fileID: 1368145206}\n  - 114: {fileID: 1368145205}\n  m_Layer: 5\n  m_Name: Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1368145205\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1368145204}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 0\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: \n--- !u!222 &1368145206\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1368145204}\n--- !u!224 &1368145207\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1368145204}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 566049661}\n  m_RootOrder: 1\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: -0.5}\n  m_SizeDelta: {x: -20, y: -13}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!1 &2074703090\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 4: {fileID: 2074703095}\n  - 20: {fileID: 2074703094}\n  - 92: {fileID: 2074703093}\n  - 124: {fileID: 2074703092}\n  - 81: {fileID: 2074703091}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &2074703091\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2074703090}\n  m_Enabled: 1\n--- !u!124 &2074703092\nBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2074703090}\n  m_Enabled: 1\n--- !u!92 &2074703093\nBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2074703090}\n  m_Enabled: 1\n--- !u!20 &2074703094\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2074703090}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 1\n  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 60\n  orthographic: 1\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 0\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n  m_StereoMirrorMode: 0\n--- !u!4 &2074703095\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2074703090}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -10}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n--- !u!1 &2102338787\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 2102338788}\n  - 222: {fileID: 2102338790}\n  - 114: {fileID: 2102338789}\n  m_Layer: 5\n  m_Name: Placeholder\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2102338788\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2102338787}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 566049661}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: -0.5}\n  m_SizeDelta: {x: -20, y: -13}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &2102338789\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2102338787}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 2\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: What needs to be done?\n--- !u!222 &2102338790\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2102338787}\n--- !u!1 &2136645851\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 2136645852}\n  - 222: {fileID: 2136645855}\n  - 114: {fileID: 2136645854}\n  - 114: {fileID: 2136645853}\n  m_Layer: 5\n  m_Name: ClearButton\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &2136645852\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2136645851}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 48390800}\n  m_Father: {fileID: 650625965}\n  m_RootOrder: 2\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &2136645853\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2136645851}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}\n    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}\n    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}\n    m_ColorMultiplier: 1\n    m_FadeDuration: 0.1\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 2136645854}\n  m_OnClick:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n--- !u!114 &2136645854\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2136645851}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &2136645855\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 2136645851}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample13Scene.unity.meta",
    "content": "fileFormatVersion: 2\nguid: b879645f640b02b43a8e78e210c1da1f\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample13_ToDoApp.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System.Linq;\nusing UnityEngine;\nusing UnityEngine.UI;\nusing System.Collections;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Examples\n{\n    public class Sample13_ToDoApp : MonoBehaviour\n    {\n        // Open Sample13Scene. Set from canvas\n        public Text Title;\n        public InputField ToDoInput;\n        public Button AddButton;\n        public Button ClearButton;\n        public GameObject TodoList;\n\n        // prefab:)\n        public GameObject SampleItemPrefab;\n\n        ReactiveCollection<GameObject> toDos = new ReactiveCollection<GameObject>();\n\n        void Start()\n        {\n            // merge Button click and push enter key on input field.\n            var submit = Observable.Merge(\n                AddButton.OnClickAsObservable().Select(_ => ToDoInput.text),\n                ToDoInput.OnEndEditAsObservable().Where(_ => Input.GetKeyDown(KeyCode.Return)));\n\n            // add to reactive collection\n            submit.Where(x => x != \"\")\n                  .Subscribe(x =>\n                  {\n                      ToDoInput.text = \"\"; // clear input field\n                      var item = Instantiate(SampleItemPrefab) as GameObject;\n                      (item.GetComponentInChildren(typeof(Text)) as Text).text = x;\n                      toDos.Add(item);\n                  });\n\n            // Collection Change Handling\n            toDos.ObserveCountChanged().Subscribe(x => Title.text = \"TODO App, ItemCount:\" + x);\n            toDos.ObserveAdd().Subscribe(x =>\n            {\n                x.Value.transform.SetParent(TodoList.transform, false);\n            });\n            toDos.ObserveRemove().Subscribe(x =>\n            {\n                GameObject.Destroy(x.Value);\n            });\n\n            // Clear\n            ClearButton.OnClickAsObservable()\n                .Subscribe(_ =>\n                {\n                    var removeTargets = toDos.Where(x => x.GetComponent<Toggle>().isOn).ToArray();\n                    foreach (var item in removeTargets)\n                    {\n                        toDos.Remove(item);\n                    }\n                });\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample13_ToDoApp.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 022ecfa555367154c8cf87d61465f7e2\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample13_ToDoItem.prefab",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1 &152834\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 22461494}\n  - 222: {fileID: 22298102}\n  - 114: {fileID: 11434412}\n  m_Layer: 5\n  m_Name: Background\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!1 &172388\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 22491898}\n  - 222: {fileID: 22251748}\n  - 114: {fileID: 11438756}\n  m_Layer: 5\n  m_Name: Label\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!1 &174974\nGameObject:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 22463654}\n  - 222: {fileID: 22278786}\n  - 114: {fileID: 11497312}\n  m_Layer: 5\n  m_Name: Checkmark\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!1 &182208\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  serializedVersion: 4\n  m_Component:\n  - 224: {fileID: 22478562}\n  - 114: {fileID: 11479148}\n  m_Layer: 5\n  m_Name: Sample13_ToDoItem\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &11434412\nMonoBehaviour:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 152834}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!114 &11438756\nMonoBehaviour:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 172388}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: .196078435, g: .196078435, b: .196078435, a: 1}\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 30\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: 'TODOITEM\n\n'\n--- !u!114 &11479148\nMonoBehaviour:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 182208}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1}\n    m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1}\n    m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814}\n    m_ColorMultiplier: 1\n    m_FadeDuration: .100000001\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 11434412}\n  toggleTransition: 1\n  graphic: {fileID: 11497312}\n  m_Group: {fileID: 0}\n  onValueChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n  m_IsOn: 1\n--- !u!114 &11497312\nMonoBehaviour:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 174974}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 0\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &22251748\nCanvasRenderer:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 172388}\n--- !u!222 &22278786\nCanvasRenderer:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 174974}\n--- !u!222 &22298102\nCanvasRenderer:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 152834}\n--- !u!224 &22461494\nRectTransform:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 152834}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22463654}\n  m_Father: {fileID: 22478562}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 0, y: 1}\n  m_AnchoredPosition: {x: 10, y: -10}\n  m_SizeDelta: {x: 20, y: 30}\n  m_Pivot: {x: .5, y: .5}\n--- !u!224 &22463654\nRectTransform:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 174974}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22461494}\n  m_RootOrder: 0\n  m_AnchorMin: {x: .5, y: .5}\n  m_AnchorMax: {x: .5, y: .5}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 20, y: 30}\n  m_Pivot: {x: .5, y: .5}\n--- !u!224 &22478562\nRectTransform:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 182208}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 22461494}\n  - {fileID: 22491898}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: .5, y: .5}\n--- !u!224 &22491898\nRectTransform:\n  m_ObjectHideFlags: 1\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 100100000}\n  m_GameObject: {fileID: 172388}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 22478562}\n  m_RootOrder: 1\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 9, y: -.5}\n  m_SizeDelta: {x: -28, y: -3}\n  m_Pivot: {x: .5, y: .5}\n--- !u!1001 &100100000\nPrefab:\n  m_ObjectHideFlags: 1\n  serializedVersion: 2\n  m_Modification:\n    m_TransformParent: {fileID: 0}\n    m_Modifications: []\n    m_RemovedComponents: []\n  m_ParentPrefab: {fileID: 0}\n  m_RootGameObject: {fileID: 182208}\n  m_IsPrefabParent: 1\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/Sample13_ToDoItem.prefab.meta",
    "content": "fileFormatVersion: 2\nguid: 173222196f3e1f0448b383f260df7d44\ntimeCreated: 1455373909\nlicenseType: Pro\nNativeFormatImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/UniRx.Examples.asmdef",
    "content": "{\n    \"name\": \"UniRx.Examples\",\n    \"references\": [\n        \"UniRx\"\n    ],\n    \"optionalUnityReferences\": [\n        \"TestAssemblies\"\n    ],\n    \"includePlatforms\": [],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples/UniRx.Examples.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 71799519d12379b49b6b53aea974bea5\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Examples.meta",
    "content": "fileFormatVersion: 2\nguid: 978ae90fe3a2bba4f8dd7ab0f7c029dc\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/ReadMe.txt",
    "content": "﻿UniRx - Reactive Extensions for Unity / Ver 6.2.2\n===\nCreated by Yoshifumi Kawai(neuecc)\n\nUniRx (Reactive Extensions for Unity) is a reimplementation of the .NET Reactive Extensions.\nUniRx is Core Library (Port of Rx) + Platform Adaptor (MainThreadScheduler/FromCoroutine/etc) + Framework (ObservableTriggers/ReactiveProeperty/etc) + async/await integration(UniRx.Async)\n\nPlease read Official Site's ReadMe(Manual) - https://github.com/neuecc/UniRx/\n\nUniRx is available on the Unity Asset Store (FREE) - http://u3d.as/content/neuecc/uni-rx-reactive-extensions-for-unity/7tT\nBlog for update info - https://medium.com/@neuecc\n\nSupport thread on the Unity Forums: Ask me any question - http://forum.unity3d.com/threads/248535-UniRx-Reactive-Extensions-for-Unity\nRelease Notes, see [UniRx/releases](https://github.com/neuecc/UniRx/releases)\n\nAuthor Info\n---\nYoshifumi Kawai(a.k.a. neuecc) is a software developer in Japan.  \nHe is awarding Microsoft MVP for Visual C# since 2011.  \n\nBlog: https://medium.com/@neuecc (English)\nBlog: http://neue.cc/ (Japanese) \nTwitter: https://twitter.com/neuecc (Japanese)\n\nLicense\n---\nThis library is under the [MIT License](https://github.com/neuecc/UniRx/blob/master/LICENSE).\n\nSome code is borrowed from [Rx.NET](https://rx.codeplex.com/) and [mono/mcs](https://github.com/mono/mono).\n"
  },
  {
    "path": "Assets/Plugins/UniRx/ReadMe.txt.meta",
    "content": "fileFormatVersion: 2\nguid: 52d665ea30c2a3a49a6fa4b3b5a0349a\ntimeCreated: 1455373909\nlicenseType: Pro\nTextScriptImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Asynchronous/WebRequestExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\nusing System.Threading;\n\nnamespace UniRx\n{\n    public static class WebRequestExtensions\n    {\n        static IObservable<TResult> AbortableDeferredAsyncRequest<TResult>(Func<AsyncCallback, object, IAsyncResult> begin, Func<IAsyncResult, TResult> end, WebRequest request)\n        {\n            var result = Observable.Create<TResult>(observer =>\n            {\n                var isCompleted = -1;\n                var subscription = Observable.FromAsyncPattern<TResult>(begin,\n                    ar =>\n                    {\n                        try\n                        {\n                            Interlocked.Increment(ref isCompleted);\n                            return end(ar);\n                        }\n                        catch (WebException ex)\n                        {\n                            if (ex.Status == WebExceptionStatus.RequestCanceled) return default(TResult);\n                            throw;\n                        }\n                    })()\n                    .Subscribe(observer);\n                return Disposable.Create(() =>\n                {\n                    if (Interlocked.Increment(ref isCompleted) == 0)\n                    {\n                        subscription.Dispose();\n                        request.Abort();\n                    }\n                });\n            });\n\n            return result;\n        }\n\n        public static IObservable<WebResponse> GetResponseAsObservable(this WebRequest request)\n        {\n            return AbortableDeferredAsyncRequest<WebResponse>(request.BeginGetResponse, request.EndGetResponse, request);\n        }\n\n        public static IObservable<HttpWebResponse> GetResponseAsObservable(this HttpWebRequest request)\n        {\n            return AbortableDeferredAsyncRequest<HttpWebResponse>(request.BeginGetResponse, ar => (HttpWebResponse)request.EndGetResponse(ar), request);\n        }\n\n        public static IObservable<Stream> GetRequestStreamAsObservable(this WebRequest request)\n        {\n            return AbortableDeferredAsyncRequest<Stream>(request.BeginGetRequestStream, request.EndGetRequestStream, request);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Asynchronous/WebRequestExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 457f0007b2c70e34e9929ec8f0e2c4e6\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Asynchronous.meta",
    "content": "fileFormatVersion: 2\nguid: c490b3110ff2a524ea963382652a378f\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/BooleanDisposable.cs",
    "content": "﻿using System;\nusing System.Collections;\n\nnamespace UniRx\n{\n    public sealed class BooleanDisposable : IDisposable, ICancelable\n    {\n        public bool IsDisposed { get; private set; }\n\n        public BooleanDisposable()\n        {\n\n        }\n\n        internal BooleanDisposable(bool isDisposed)\n        {\n            IsDisposed = isDisposed;\n        }\n\n        public void Dispose()\n        {\n            if (!IsDisposed) IsDisposed = true;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/BooleanDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4ff95c6eb380ca248984d8c27c1244d0\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/CancellationDisposable.cs",
    "content": "﻿// original code from GitHub Reactive-Extensions/Rx.NET\n// some modified.\n\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.\n\n#if (NETFX_CORE || NET_4_6 || NET_STANDARD_2_0 || UNITY_WSA_10_0)\n\nusing System;\nusing System.Threading;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Represents a disposable resource that has an associated <seealso cref=\"T:System.Threading.CancellationToken\"/> that will be set to the cancellation requested state upon disposal.\n    /// </summary>\n    public sealed class CancellationDisposable : ICancelable\n    {\n        private readonly CancellationTokenSource _cts;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Reactive.Disposables.CancellationDisposable\"/> class that uses an existing <seealso cref=\"T:System.Threading.CancellationTokenSource\"/>.\n        /// </summary>\n        /// <param name=\"cts\"><seealso cref=\"T:System.Threading.CancellationTokenSource\"/> used for cancellation.</param>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"cts\"/> is null.</exception>\n        public CancellationDisposable(CancellationTokenSource cts)\n        {\n            if (cts == null)\n                throw new ArgumentNullException(\"cts\");\n\n            _cts = cts;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Reactive.Disposables.CancellationDisposable\"/> class that uses a new <seealso cref=\"T:System.Threading.CancellationTokenSource\"/>.\n        /// </summary>\n        public CancellationDisposable()\n            : this(new CancellationTokenSource())\n        {\n        }\n\n        /// <summary>\n        /// Gets the <see cref=\"T:System.Threading.CancellationToken\"/> used by this CancellationDisposable.\n        /// </summary>\n        public CancellationToken Token\n        {\n            get { return _cts.Token; }\n        }\n\n        /// <summary>\n        /// Cancels the underlying <seealso cref=\"T:System.Threading.CancellationTokenSource\"/>.\n        /// </summary>\n        public void Dispose()\n        {\n            _cts.Cancel();\n        }\n\n        /// <summary>\n        /// Gets a value that indicates whether the object is disposed.\n        /// </summary>\n        public bool IsDisposed\n        {\n            get { return _cts.IsCancellationRequested; }\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/CancellationDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 6c675907554bfa24d8bd411f386e410d\ntimeCreated: 1475137543\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/CompositeDisposable.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n// using System.Linq; do not use LINQ\nusing System.Text;\n\nnamespace UniRx\n{\n    // copy, modified from Rx Official\n\n    public sealed class CompositeDisposable : ICollection<IDisposable>, IDisposable, ICancelable\n    {\n        private readonly object _gate = new object();\n\n        private bool _disposed;\n        private List<IDisposable> _disposables;\n        private int _count;\n        private const int SHRINK_THRESHOLD = 64;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Reactive.Disposables.CompositeDisposable\"/> class with no disposables contained by it initially.\n        /// </summary>\n        public CompositeDisposable()\n        {\n            _disposables = new List<IDisposable>();\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Reactive.Disposables.CompositeDisposable\"/> class with the specified number of disposables.\n        /// </summary>\n        /// <param name=\"capacity\">The number of disposables that the new CompositeDisposable can initially store.</param>\n        /// <exception cref=\"ArgumentOutOfRangeException\"><paramref name=\"capacity\"/> is less than zero.</exception>\n        public CompositeDisposable(int capacity)\n        {\n            if (capacity < 0)\n                throw new ArgumentOutOfRangeException(\"capacity\");\n\n            _disposables = new List<IDisposable>(capacity);\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Reactive.Disposables.CompositeDisposable\"/> class from a group of disposables.\n        /// </summary>\n        /// <param name=\"disposables\">Disposables that will be disposed together.</param>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"disposables\"/> is null.</exception>\n        public CompositeDisposable(params IDisposable[] disposables)\n        {\n            if (disposables == null)\n                throw new ArgumentNullException(\"disposables\");\n\n            _disposables = new List<IDisposable>(disposables);\n            _count = _disposables.Count;\n        }\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Reactive.Disposables.CompositeDisposable\"/> class from a group of disposables.\n        /// </summary>\n        /// <param name=\"disposables\">Disposables that will be disposed together.</param>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"disposables\"/> is null.</exception>\n        public CompositeDisposable(IEnumerable<IDisposable> disposables)\n        {\n            if (disposables == null)\n                throw new ArgumentNullException(\"disposables\");\n\n            _disposables = new List<IDisposable>(disposables);\n            _count = _disposables.Count;\n        }\n\n        /// <summary>\n        /// Gets the number of disposables contained in the CompositeDisposable.\n        /// </summary>\n        public int Count\n        {\n            get\n            {\n                return _count;\n            }\n        }\n\n        /// <summary>\n        /// Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n        /// </summary>\n        /// <param name=\"item\">Disposable to add.</param>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"item\"/> is null.</exception>\n        public void Add(IDisposable item)\n        {\n            if (item == null)\n                throw new ArgumentNullException(\"item\");\n\n            var shouldDispose = false;\n            lock (_gate)\n            {\n                shouldDispose = _disposed;\n                if (!_disposed)\n                {\n                    _disposables.Add(item);\n                    _count++;\n                }\n            }\n            if (shouldDispose)\n                item.Dispose();\n        }\n\n        /// <summary>\n        /// Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n        /// </summary>\n        /// <param name=\"item\">Disposable to remove.</param>\n        /// <returns>true if found; false otherwise.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"item\"/> is null.</exception>\n        public bool Remove(IDisposable item)\n        {\n            if (item == null)\n                throw new ArgumentNullException(\"item\");\n\n            var shouldDispose = false;\n\n            lock (_gate)\n            {\n                if (!_disposed)\n                {\n                    //\n                    // List<T> doesn't shrink the size of the underlying array but does collapse the array\n                    // by copying the tail one position to the left of the removal index. We don't need\n                    // index-based lookup but only ordering for sequential disposal. So, instead of spending\n                    // cycles on the Array.Copy imposed by Remove, we use a null sentinel value. We also\n                    // do manual Swiss cheese detection to shrink the list if there's a lot of holes in it.\n                    //\n                    var i = _disposables.IndexOf(item);\n                    if (i >= 0)\n                    {\n                        shouldDispose = true;\n                        _disposables[i] = null;\n                        _count--;\n\n                        if (_disposables.Capacity > SHRINK_THRESHOLD && _count < _disposables.Capacity / 2)\n                        {\n                            var old = _disposables;\n                            _disposables = new List<IDisposable>(_disposables.Capacity / 2);\n\n                            foreach (var d in old)\n                                if (d != null)\n                                    _disposables.Add(d);\n                        }\n                    }\n                }\n            }\n\n            if (shouldDispose)\n                item.Dispose();\n\n            return shouldDispose;\n        }\n\n        /// <summary>\n        /// Disposes all disposables in the group and removes them from the group.\n        /// </summary>\n        public void Dispose()\n        {\n            var currentDisposables = default(IDisposable[]);\n            lock (_gate)\n            {\n                if (!_disposed)\n                {\n                    _disposed = true;\n                    currentDisposables = _disposables.ToArray();\n                    _disposables.Clear();\n                    _count = 0;\n                }\n            }\n\n            if (currentDisposables != null)\n            {\n                foreach (var d in currentDisposables)\n                    if (d != null)\n                        d.Dispose();\n            }\n        }\n\n        /// <summary>\n        /// Removes and disposes all disposables from the CompositeDisposable, but does not dispose the CompositeDisposable.\n        /// </summary>\n        public void Clear()\n        {\n            var currentDisposables = default(IDisposable[]);\n            lock (_gate)\n            {\n                currentDisposables = _disposables.ToArray();\n                _disposables.Clear();\n                _count = 0;\n            }\n\n            foreach (var d in currentDisposables)\n                if (d != null)\n                    d.Dispose();\n        }\n\n        /// <summary>\n        /// Determines whether the CompositeDisposable contains a specific disposable.\n        /// </summary>\n        /// <param name=\"item\">Disposable to search for.</param>\n        /// <returns>true if the disposable was found; otherwise, false.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"item\"/> is null.</exception>\n        public bool Contains(IDisposable item)\n        {\n            if (item == null)\n                throw new ArgumentNullException(\"item\");\n\n            lock (_gate)\n            {\n                return _disposables.Contains(item);\n            }\n        }\n\n        /// <summary>\n        /// Copies the disposables contained in the CompositeDisposable to an array, starting at a particular array index.\n        /// </summary>\n        /// <param name=\"array\">Array to copy the contained disposables to.</param>\n        /// <param name=\"arrayIndex\">Target index at which to copy the first disposable of the group.</param>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"array\"/> is null.</exception>\n        /// <exception cref=\"ArgumentOutOfRangeException\"><paramref name=\"arrayIndex\"/> is less than zero. -or - <paramref name=\"arrayIndex\"/> is larger than or equal to the array length.</exception>\n        public void CopyTo(IDisposable[] array, int arrayIndex)\n        {\n            if (array == null)\n                throw new ArgumentNullException(\"array\");\n            if (arrayIndex < 0 || arrayIndex >= array.Length)\n                throw new ArgumentOutOfRangeException(\"arrayIndex\");\n\n            lock (_gate)\n            {\n                var disArray = new List<IDisposable>();\n                foreach (var item in _disposables)\n                {\n                    if (item != null) disArray.Add(item);\n                }\n\n                Array.Copy(disArray.ToArray(), 0, array, arrayIndex, array.Length - arrayIndex);\n            }\n        }\n\n        /// <summary>\n        /// Always returns false.\n        /// </summary>\n        public bool IsReadOnly\n        {\n            get { return false; }\n        }\n\n        /// <summary>\n        /// Returns an enumerator that iterates through the CompositeDisposable.\n        /// </summary>\n        /// <returns>An enumerator to iterate over the disposables.</returns>\n        public IEnumerator<IDisposable> GetEnumerator()\n        {\n            var res = new List<IDisposable>();\n\n            lock (_gate)\n            {\n                foreach (var d in _disposables)\n                {\n                    if (d != null) res.Add(d);\n                }\n            }\n\n            return res.GetEnumerator();\n        }\n\n        /// <summary>\n        /// Returns an enumerator that iterates through the CompositeDisposable.\n        /// </summary>\n        /// <returns>An enumerator to iterate over the disposables.</returns>\n        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\n        {\n            return GetEnumerator();\n        }\n\n        /// <summary>\n        /// Gets a value that indicates whether the object is disposed.\n        /// </summary>\n        public bool IsDisposed\n        {\n            get { return _disposed; }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/CompositeDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a0f9d923bd5f4cd47b39bdd83125de27\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/DictionaryDisposable.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx\n{\n    public sealed class DictionaryDisposable<TKey, TValue> : IDisposable, IDictionary<TKey, TValue>\n        where TValue : IDisposable\n    {\n        bool isDisposed = false;\n        readonly Dictionary<TKey, TValue> inner;\n\n        public DictionaryDisposable()\n        {\n            inner = new Dictionary<TKey, TValue>();\n        }\n\n        public DictionaryDisposable(IEqualityComparer<TKey> comparer)\n        {\n            inner = new Dictionary<TKey, TValue>(comparer);\n        }\n\n        public TValue this[TKey key]\n        {\n            get\n            {\n                lock (inner)\n                {\n                    return inner[key];\n                }\n            }\n\n            set\n            {\n                lock (inner)\n                {\n                    if (isDisposed) value.Dispose();\n\n                    TValue oldValue;\n                    if (TryGetValue(key, out oldValue))\n                    {\n                        oldValue.Dispose();\n                        inner[key] = value;\n                    }\n                    else\n                    {\n                        inner[key] = value;\n                    }\n                }\n            }\n        }\n\n        public int Count\n        {\n            get\n            {\n                lock (inner)\n                {\n                    return inner.Count;\n                }\n            }\n        }\n\n        public Dictionary<TKey, TValue>.KeyCollection Keys\n        {\n            get\n            {\n                throw new NotSupportedException(\"please use .Select(x => x.Key).ToArray()\");\n            }\n        }\n\n        public Dictionary<TKey, TValue>.ValueCollection Values\n        {\n            get\n            {\n                throw new NotSupportedException(\"please use .Select(x => x.Value).ToArray()\");\n            }\n        }\n\n        public void Add(TKey key, TValue value)\n        {\n            lock (inner)\n            {\n                if (isDisposed)\n                {\n                    value.Dispose();\n                    return;\n                }\n\n                inner.Add(key, value);\n            }\n        }\n\n        public void Clear()\n        {\n            lock (inner)\n            {\n                foreach (var item in inner)\n                {\n                    item.Value.Dispose();\n                }\n                inner.Clear();\n            }\n        }\n\n        public bool Remove(TKey key)\n        {\n            lock (inner)\n            {\n                TValue oldValue;\n                if (inner.TryGetValue(key, out oldValue))\n                {\n                    var isSuccessRemove = inner.Remove(key);\n                    if (isSuccessRemove)\n                    {\n                        oldValue.Dispose();\n                    }\n                    return isSuccessRemove;\n                }\n                else\n                {\n                    return false;\n                }\n            }\n        }\n\n        public bool ContainsKey(TKey key)\n        {\n            lock (inner)\n            {\n                return inner.ContainsKey(key);\n            }\n        }\n\n        public bool TryGetValue(TKey key, out TValue value)\n        {\n            lock (inner)\n            {\n                return inner.TryGetValue(key, out value);\n            }\n        }\n\n        public Dictionary<TKey, TValue>.Enumerator GetEnumerator()\n        {\n            lock (inner)\n            {\n                return new Dictionary<TKey, TValue>(inner).GetEnumerator();\n            }\n        }\n\n        bool ICollection<KeyValuePair<TKey, TValue>>.IsReadOnly\n        {\n            get\n            {\n                return ((ICollection<KeyValuePair<TKey, TValue>>)inner).IsReadOnly;\n            }\n        }\n\n        ICollection<TKey> IDictionary<TKey, TValue>.Keys\n        {\n            get\n            {\n                lock (inner)\n                {\n                    return new List<TKey>(inner.Keys);\n                }\n            }\n        }\n\n        ICollection<TValue> IDictionary<TKey, TValue>.Values\n        {\n            get\n            {\n                lock (inner)\n                {\n                    return new List<TValue>(inner.Values);\n                }\n            }\n        }\n\n\n#if !UNITY_METRO\n\n        public void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)\n        {\n            lock (inner)\n            {\n                ((System.Runtime.Serialization.ISerializable)inner).GetObjectData(info, context);\n            }\n        }\n\n        public void OnDeserialization(object sender)\n        {\n            lock (inner)\n            {\n                ((System.Runtime.Serialization.IDeserializationCallback)inner).OnDeserialization(sender);\n            }\n        }\n\n#endif\n\n        void ICollection<KeyValuePair<TKey, TValue>>.Add(KeyValuePair<TKey, TValue> item)\n        {\n            Add((TKey)item.Key, (TValue)item.Value);\n        }\n\n        bool ICollection<KeyValuePair<TKey, TValue>>.Contains(KeyValuePair<TKey, TValue> item)\n        {\n            lock (inner)\n            {\n                return ((ICollection<KeyValuePair<TKey, TValue>>)inner).Contains(item);\n            }\n        }\n\n        void ICollection<KeyValuePair<TKey, TValue>>.CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)\n        {\n            lock (inner)\n            {\n                ((ICollection<KeyValuePair<TKey, TValue>>)inner).CopyTo(array, arrayIndex);\n            }\n        }\n\n        IEnumerator<KeyValuePair<TKey, TValue>> IEnumerable<KeyValuePair<TKey, TValue>>.GetEnumerator()\n        {\n            lock (inner)\n            {\n                return new List<KeyValuePair<TKey, TValue>>((ICollection<KeyValuePair<TKey, TValue>>)inner).GetEnumerator();\n            }\n        }\n\n        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\n        {\n            return GetEnumerator();\n        }\n\n        bool ICollection<KeyValuePair<TKey, TValue>>.Remove(KeyValuePair<TKey, TValue> item)\n        {\n            throw new NotSupportedException();\n        }\n\n        public void Dispose()\n        {\n            lock (inner)\n            {\n                if (isDisposed) return;\n                isDisposed = true;\n\n                foreach (var item in inner)\n                {\n                    item.Value.Dispose();\n                }\n                inner.Clear();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/DictionaryDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 702939929fc84d544b12076b76aa73b5\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/Disposable.cs",
    "content": "﻿using System;\nusing System.Collections;\n\nnamespace UniRx\n{\n    public static class Disposable\n    {\n        public static readonly IDisposable Empty = EmptyDisposable.Singleton;\n\n        public static IDisposable Create(Action disposeAction)\n        {\n            return new AnonymousDisposable(disposeAction);\n        }\n\n        public static IDisposable CreateWithState<TState>(TState state, Action<TState> disposeAction)\n        {\n            return new AnonymousDisposable<TState>(state, disposeAction);\n        }\n\n        class EmptyDisposable : IDisposable\n        {\n            public static EmptyDisposable Singleton = new EmptyDisposable();\n\n            private EmptyDisposable()\n            {\n\n            }\n\n            public void Dispose()\n            {\n            }\n        }\n\n        class AnonymousDisposable : IDisposable\n        {\n            bool isDisposed = false;\n            readonly Action dispose;\n\n            public AnonymousDisposable(Action dispose)\n            {\n                this.dispose = dispose;\n            }\n\n            public void Dispose()\n            {\n                if (!isDisposed)\n                {\n                    isDisposed = true;\n                    dispose();\n                }\n            }\n        }\n\n        class AnonymousDisposable<T> : IDisposable\n        {\n            bool isDisposed = false;\n            readonly T state;\n            readonly Action<T> dispose;\n\n            public AnonymousDisposable(T state, Action<T> dispose)\n            {\n                this.state = state;\n                this.dispose = dispose;\n            }\n\n            public void Dispose()\n            {\n                if (!isDisposed)\n                {\n                    isDisposed = true;\n                    dispose(state);\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/Disposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 958f291bb8f434740a6d2c08ad5182a0\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/DisposableExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx\n{\n    public static partial class DisposableExtensions\n    {\n        /// <summary>Add disposable(self) to CompositeDisposable(or other ICollection). Return value is self disposable.</summary>\n        public static T AddTo<T>(this T disposable, ICollection<IDisposable> container)\n            where T : IDisposable\n        {\n            if (disposable == null) throw new ArgumentNullException(\"disposable\");\n            if (container == null) throw new ArgumentNullException(\"container\");\n\n            container.Add(disposable);\n\n            return disposable;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/DisposableExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9c4757265ae105441bae71007cbd0184\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/ICancelable.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace UniRx\n{\n    public interface ICancelable : IDisposable\n    {\n        bool IsDisposed { get; }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/ICancelable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: b5cd5b0b304c78345a49757b1f6f8ba8\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/MultipleAssignmentDisposable.cs",
    "content": "﻿using System;\nusing System.Collections;\n\nnamespace UniRx\n{\n    public sealed class MultipleAssignmentDisposable : IDisposable, ICancelable\n    {\n        static readonly BooleanDisposable True = new BooleanDisposable(true);\n\n        object gate = new object();\n        IDisposable current;\n\n        public bool IsDisposed\n        {\n            get\n            {\n                lock (gate)\n                {\n                    return current == True;\n                }\n            }\n        }\n\n        public IDisposable Disposable\n        {\n            get\n            {\n                lock (gate)\n                {\n                    return (current == True)\n                        ? UniRx.Disposable.Empty\n                        : current;\n                }\n            }\n            set\n            {\n                var shouldDispose = false;\n                lock (gate)\n                {\n                    shouldDispose = (current == True);\n                    if (!shouldDispose)\n                    {\n                        current = value;\n                    }\n                }\n                if (shouldDispose && value != null)\n                {\n                    value.Dispose();\n                }\n            }\n        }\n\n        public void Dispose()\n        {\n            IDisposable old = null;\n\n            lock (gate)\n            {\n                if (current != True)\n                {\n                    old = current;\n                    current = True;\n                }\n            }\n\n            if (old != null) old.Dispose();\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/MultipleAssignmentDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: bb959083576ace749afd55c1e54b02d9\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/RefCountDisposable.cs",
    "content": "﻿// This code is borrwed from Rx Official and some modified.\n\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Represents a disposable resource that only disposes its underlying disposable resource when all <see cref=\"GetDisposable\">dependent disposable objects</see> have been disposed.\n    /// </summary>\n    public sealed class RefCountDisposable : ICancelable\n    {\n        private readonly object _gate = new object();\n        private IDisposable _disposable;\n        private bool _isPrimaryDisposed;\n        private int _count;\n\n        /// <summary>\n        /// Initializes a new instance of the <see cref=\"T:System.Reactive.Disposables.RefCountDisposable\"/> class with the specified disposable.\n        /// </summary>\n        /// <param name=\"disposable\">Underlying disposable.</param>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"disposable\"/> is null.</exception>\n        public RefCountDisposable(IDisposable disposable)\n        {\n            if (disposable == null)\n                throw new ArgumentNullException(\"disposable\");\n\n            _disposable = disposable;\n            _isPrimaryDisposed = false;\n            _count = 0;\n        }\n\n        /// <summary>\n        /// Gets a value that indicates whether the object is disposed.\n        /// </summary>\n        public bool IsDisposed\n        {\n            get { return _disposable == null; }\n        }\n\n        /// <summary>\n        /// Returns a dependent disposable that when disposed decreases the refcount on the underlying disposable.\n        /// </summary>\n        /// <returns>A dependent disposable contributing to the reference count that manages the underlying disposable's lifetime.</returns>\n        [System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Design\", \"CA1024:UsePropertiesWhereAppropriate\", Justification = \"Backward compat + non-trivial work for a property getter.\")]\n        public IDisposable GetDisposable()\n        {\n            lock (_gate)\n            {\n                if (_disposable == null)\n                {\n                    return Disposable.Empty;\n                }\n                else\n                {\n                    _count++;\n                    return new InnerDisposable(this);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Disposes the underlying disposable only when all dependent disposables have been disposed.\n        /// </summary>\n        public void Dispose()\n        {\n            var disposable = default(IDisposable);\n            lock (_gate)\n            {\n                if (_disposable != null)\n                {\n                    if (!_isPrimaryDisposed)\n                    {\n                        _isPrimaryDisposed = true;\n\n                        if (_count == 0)\n                        {\n                            disposable = _disposable;\n                            _disposable = null;\n                        }\n                    }\n                }\n            }\n\n            if (disposable != null)\n                disposable.Dispose();\n        }\n\n        private void Release()\n        {\n            var disposable = default(IDisposable);\n            lock (_gate)\n            {\n                if (_disposable != null)\n                {\n                    _count--;\n\n                    if (_isPrimaryDisposed)\n                    {\n                        if (_count == 0)\n                        {\n                            disposable = _disposable;\n                            _disposable = null;\n                        }\n                    }\n                }\n            }\n\n            if (disposable != null)\n                disposable.Dispose();\n        }\n\n        sealed class InnerDisposable : IDisposable\n        {\n            private RefCountDisposable _parent;\n            object parentLock = new object();\n\n            public InnerDisposable(RefCountDisposable parent)\n            {\n                _parent = parent;\n            }\n\n            public void Dispose()\n            {\n                RefCountDisposable parent;\n                lock (parentLock)\n                {\n                    parent = _parent;\n                    _parent = null;\n                }\n                if (parent != null)\n                    parent.Release();\n            }\n        }\n    }\n\n    public partial class Observable\n    {\n        static IObservable<T> AddRef<T>(IObservable<T> xs, RefCountDisposable r)\n        {\n            return Observable.Create<T>((IObserver<T> observer) => new CompositeDisposable(new IDisposable[]\n\t        {\n\t\t        r.GetDisposable(),\n\t\t        xs.Subscribe(observer)\n\t        }));\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/RefCountDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2fb5a2cdb138579498eb20d8b7818ad8\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/ScheduledDisposable.cs",
    "content": "﻿using System;\nusing System.Threading;\n\nnamespace UniRx\n{\n    public sealed class ScheduledDisposable : ICancelable\n    {\n        private readonly IScheduler scheduler;\n        private volatile IDisposable disposable;\n        private int isDisposed = 0;\n\n        public ScheduledDisposable(IScheduler scheduler, IDisposable disposable)\n        {\n            this.scheduler = scheduler;\n            this.disposable = disposable;\n        }\n\n        public IScheduler Scheduler\n        {\n            get { return scheduler; }\n        }\n\n        public IDisposable Disposable\n        {\n            get { return disposable; }\n        }\n\n        public bool IsDisposed\n        {\n            get { return isDisposed != 0; }\n        }\n\n        public void Dispose()\n        {\n            Scheduler.Schedule(DisposeInner);\n        }\n\n        private void DisposeInner()\n        {\n            if (Interlocked.Increment(ref isDisposed) == 1)\n            {\n                disposable.Dispose();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/ScheduledDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: db98ce742e859bd4e81db434c3ca3663\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/SerialDisposable.cs",
    "content": "﻿using System;\nusing System.Collections;\n\nnamespace UniRx\n{\n    public sealed class SerialDisposable : IDisposable, ICancelable\n    {\n        readonly object gate = new object();\n        IDisposable current;\n        bool disposed;\n\n        public bool IsDisposed { get { lock (gate) { return disposed; } } }\n\n        public IDisposable Disposable\n        {\n            get\n            {\n                return current;\n            }\n            set\n            {\n                var shouldDispose = false;\n                var old = default(IDisposable);\n                lock (gate)\n                {\n                    shouldDispose = disposed;\n                    if (!shouldDispose)\n                    {\n                        old = current;\n                        current = value;\n                    }\n                }\n                if (old != null)\n                {\n                    old.Dispose();\n                }\n                if (shouldDispose && value != null)\n                {\n                    value.Dispose();\n                }\n            }\n        }\n\n        public void Dispose()\n        {\n            var old = default(IDisposable);\n\n            lock (gate)\n            {\n                if (!disposed)\n                {\n                    disposed = true;\n                    old = current;\n                    current = null;\n                }\n            }\n\n            if (old != null)\n            {\n                old.Dispose();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/SerialDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 06fb064ad9e4d354ab15ff89f6343243\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/SingleAssignmentDisposable.cs",
    "content": "﻿using System;\nusing System.Collections;\n\nnamespace UniRx\n{\n    // should be use Interlocked.CompareExchange for Threadsafe?\n    // but CompareExchange cause ExecutionEngineException on iOS.\n    // AOT...\n    // use lock instead\n\n    public sealed class SingleAssignmentDisposable : IDisposable, ICancelable\n    {\n        readonly object gate = new object();\n        IDisposable current;\n        bool disposed;\n\n        public bool IsDisposed { get { lock (gate) { return disposed; } } }\n\n        public IDisposable Disposable\n        {\n            get\n            {\n                return current;\n            }\n            set\n            {\n                var old = default(IDisposable);\n                bool alreadyDisposed;\n                lock (gate)\n                {\n                    alreadyDisposed = disposed;\n                    old = current;\n                    if (!alreadyDisposed)\n                    {\n                        if (value == null) return;\n                        current = value;\n                    }\n                }\n\n                if (alreadyDisposed && value != null)\n                {\n                    value.Dispose();\n                    return;\n                }\n\n                if (old != null) throw new InvalidOperationException(\"Disposable is already set\");\n            }\n        }\n\n\n        public void Dispose()\n        {\n            IDisposable old = null;\n\n            lock (gate)\n            {\n                if (!disposed)\n                {\n                    disposed = true;\n                    old = current;\n                    current = null;\n                }\n            }\n\n            if (old != null) old.Dispose();\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/SingleAssignmentDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7ec869f7548c62748ad57a5c86b2f6ba\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/StableCompositeDisposable.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Represents a group of disposable resources that are disposed together.\n    /// </summary>\n    public abstract class StableCompositeDisposable : ICancelable\n    {\n        /// <summary>\n        /// Creates a new group containing two disposable resources that are disposed together.\n        /// </summary>\n        /// <param name=\"disposable1\">The first disposable resoruce to add to the group.</param>\n        /// <param name=\"disposable2\">The second disposable resoruce to add to the group.</param>\n        /// <returns>Group of disposable resources that are disposed together.</returns>\n        public static ICancelable Create(IDisposable disposable1, IDisposable disposable2)\n        {\n            if (disposable1 == null) throw new ArgumentNullException(\"disposable1\");\n            if (disposable2 == null) throw new ArgumentNullException(\"disposable2\");\n\n            return new Binary(disposable1, disposable2);\n        }\n\n        /// <summary>\n        /// Creates a new group containing three disposable resources that are disposed together.\n        /// </summary>\n        /// <param name=\"disposable1\">The first disposable resoruce to add to the group.</param>\n        /// <param name=\"disposable2\">The second disposable resoruce to add to the group.</param>\n        /// <param name=\"disposable3\">The third disposable resoruce to add to the group.</param>\n        /// <returns>Group of disposable resources that are disposed together.</returns>\n        public static ICancelable Create(IDisposable disposable1, IDisposable disposable2, IDisposable disposable3)\n        {\n            if (disposable1 == null) throw new ArgumentNullException(\"disposable1\");\n            if (disposable2 == null) throw new ArgumentNullException(\"disposable2\");\n            if (disposable3 == null) throw new ArgumentNullException(\"disposable3\");\n\n            return new Trinary(disposable1, disposable2, disposable3);\n        }\n\n        /// <summary>\n        /// Creates a new group containing four disposable resources that are disposed together.\n        /// </summary>\n        /// <param name=\"disposable1\">The first disposable resoruce to add to the group.</param>\n        /// <param name=\"disposable2\">The second disposable resoruce to add to the group.</param>\n        /// <param name=\"disposable3\">The three disposable resoruce to add to the group.</param>\n        /// <param name=\"disposable4\">The four disposable resoruce to add to the group.</param>\n        /// <returns>Group of disposable resources that are disposed together.</returns>\n        public static ICancelable Create(IDisposable disposable1, IDisposable disposable2, IDisposable disposable3, IDisposable disposable4)\n        {\n            if (disposable1 == null) throw new ArgumentNullException(\"disposable1\");\n            if (disposable2 == null) throw new ArgumentNullException(\"disposable2\");\n            if (disposable3 == null) throw new ArgumentNullException(\"disposable3\");\n            if (disposable4 == null) throw new ArgumentNullException(\"disposable4\");\n\n            return new Quaternary(disposable1, disposable2, disposable3, disposable4);\n        }\n\n        /// <summary>\n        /// Creates a new group of disposable resources that are disposed together.\n        /// </summary>\n        /// <param name=\"disposables\">Disposable resources to add to the group.</param>\n        /// <returns>Group of disposable resources that are disposed together.</returns>\n        public static ICancelable Create(params IDisposable[] disposables)\n        {\n            if (disposables == null) throw new ArgumentNullException(\"disposables\");\n\n            return new NAry(disposables);\n        }\n\n        /// <summary>\n        /// Creates a new group of disposable resources that are disposed together. Array is not copied, it's unsafe but optimized.\n        /// </summary>\n        /// <param name=\"disposables\">Disposable resources to add to the group.</param>\n        /// <returns>Group of disposable resources that are disposed together.</returns>\n        public static ICancelable CreateUnsafe(IDisposable[] disposables)\n        {\n            return new NAryUnsafe(disposables);\n        }\n\n        /// <summary>\n        /// Creates a new group of disposable resources that are disposed together.\n        /// </summary>\n        /// <param name=\"disposables\">Disposable resources to add to the group.</param>\n        /// <returns>Group of disposable resources that are disposed together.</returns>\n        public static ICancelable Create(IEnumerable<IDisposable> disposables)\n        {\n            if (disposables == null) throw new ArgumentNullException(\"disposables\");\n\n            return new NAry(disposables);\n        }\n\n        /// <summary>\n        /// Disposes all disposables in the group.\n        /// </summary>\n        public abstract void Dispose();\n\n        /// <summary>\n        /// Gets a value that indicates whether the object is disposed.\n        /// </summary>\n        public abstract bool IsDisposed\n        {\n            get;\n        }\n\n        class Binary : StableCompositeDisposable\n        {\n            int disposedCallCount = -1;\n            private volatile IDisposable _disposable1;\n            private volatile IDisposable _disposable2;\n\n            public Binary(IDisposable disposable1, IDisposable disposable2)\n            {\n                _disposable1 = disposable1;\n                _disposable2 = disposable2;\n            }\n\n            public override bool IsDisposed\n            {\n                get\n                {\n                    return disposedCallCount != -1;\n                }\n            }\n\n            public override void Dispose()\n            {\n                if (Interlocked.Increment(ref disposedCallCount) == 0)\n                {\n                    _disposable1.Dispose();\n                    _disposable2.Dispose();\n                }\n            }\n        }\n\n        class Trinary : StableCompositeDisposable\n        {\n            int disposedCallCount = -1;\n            private volatile IDisposable _disposable1;\n            private volatile IDisposable _disposable2;\n            private volatile IDisposable _disposable3;\n\n            public Trinary(IDisposable disposable1, IDisposable disposable2, IDisposable disposable3)\n            {\n                _disposable1 = disposable1;\n                _disposable2 = disposable2;\n                _disposable3 = disposable3;\n            }\n\n            public override bool IsDisposed\n            {\n                get\n                {\n                    return disposedCallCount != -1;\n                }\n            }\n\n            public override void Dispose()\n            {\n                if (Interlocked.Increment(ref disposedCallCount) == 0)\n                {\n                    _disposable1.Dispose();\n                    _disposable2.Dispose();\n                    _disposable3.Dispose();\n                }\n            }\n        }\n\n        class Quaternary : StableCompositeDisposable\n        {\n            int disposedCallCount = -1;\n            private volatile IDisposable _disposable1;\n            private volatile IDisposable _disposable2;\n            private volatile IDisposable _disposable3;\n            private volatile IDisposable _disposable4;\n\n            public Quaternary(IDisposable disposable1, IDisposable disposable2, IDisposable disposable3, IDisposable disposable4)\n            {\n                _disposable1 = disposable1;\n                _disposable2 = disposable2;\n                _disposable3 = disposable3;\n                _disposable4 = disposable4;\n            }\n\n            public override bool IsDisposed\n            {\n                get\n                {\n                    return disposedCallCount != -1;\n                }\n            }\n\n            public override void Dispose()\n            {\n                if (Interlocked.Increment(ref disposedCallCount) == 0)\n                {\n                    _disposable1.Dispose();\n                    _disposable2.Dispose();\n                    _disposable3.Dispose();\n                    _disposable4.Dispose();\n                }\n            }\n        }\n\n        class NAry : StableCompositeDisposable\n        {\n            int disposedCallCount = -1;\n            private volatile List<IDisposable> _disposables;\n\n            public NAry(IDisposable[] disposables)\n                : this((IEnumerable<IDisposable>)disposables)\n            {\n            }\n\n            public NAry(IEnumerable<IDisposable> disposables)\n            {\n                _disposables = new List<IDisposable>(disposables);\n\n                //\n                // Doing this on the list to avoid duplicate enumeration of disposables.\n                //\n                if (_disposables.Contains(null)) throw new ArgumentException(\"Disposables can't contains null\", \"disposables\");\n            }\n\n            public override bool IsDisposed\n            {\n                get\n                {\n                    return disposedCallCount != -1;\n                }\n            }\n\n            public override void Dispose()\n            {\n                if (Interlocked.Increment(ref disposedCallCount) == 0)\n                {\n                    foreach (var d in _disposables)\n                    {\n                        d.Dispose();\n                    }\n                }\n            }\n        }\n\n        class NAryUnsafe : StableCompositeDisposable\n        {\n            int disposedCallCount = -1;\n            private volatile IDisposable[] _disposables;\n\n            public NAryUnsafe(IDisposable[] disposables)\n            {\n                _disposables = disposables;\n            }\n\n            public override bool IsDisposed\n            {\n                get\n                {\n                    return disposedCallCount != -1;\n                }\n            }\n\n            public override void Dispose()\n            {\n                if (Interlocked.Increment(ref disposedCallCount) == 0)\n                {\n                    var len = _disposables.Length;\n                    for (int i = 0; i < len; i++)\n                    {\n                        _disposables[i].Dispose();\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables/StableCompositeDisposable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 3a9cd9fa22bc6a5439484581f5049cf8\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Disposables.meta",
    "content": "fileFormatVersion: 2\nguid: d061218ef48281148bb1a996d971bdbe\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/EventPattern.cs",
    "content": "﻿// original code from rx.codeplex.com\n// some modified.\n\n/* ------------------ */\n\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.\n\nusing System;\nusing System.Collections.Generic;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Represents a .NET event invocation consisting of the strongly typed object that raised the event and the data that was generated by the event.\n    /// </summary>\n    /// <typeparam name=\"TSender\">\n    /// The type of the sender that raised the event.\n    /// This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics.\n    /// </typeparam>\n    /// <typeparam name=\"TEventArgs\">\n    /// The type of the event data generated by the event.\n    /// This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics.\n    /// </typeparam>\n    public interface IEventPattern<TSender, TEventArgs>\n    {\n        /// <summary>\n        /// Gets the sender object that raised the event.\n        /// </summary>\n        TSender Sender { get; }\n\n        /// <summary>\n        /// Gets the event data that was generated by the event.\n        /// </summary>\n        TEventArgs EventArgs { get; }\n    }\n\n    /// <summary>\n    /// Represents a .NET event invocation consisting of the weakly typed object that raised the event and the data that was generated by the event.\n    /// </summary>\n    /// <typeparam name=\"TEventArgs\">The type of the event data generated by the event.</typeparam>\n    public class EventPattern<TEventArgs> : EventPattern<object, TEventArgs>\n    {\n        /// <summary>\n        /// Creates a new data representation instance of a .NET event invocation with the given sender and event data.\n        /// </summary>\n        /// <param name=\"sender\">The sender object that raised the event.</param>\n        /// <param name=\"e\">The event data that was generated by the event.</param>\n        public EventPattern(object sender, TEventArgs e)\n            : base(sender, e)\n        {\n        }\n    }\n\n    /// <summary>\n    /// Represents a .NET event invocation consisting of the strongly typed object that raised the event and the data that was generated by the event.\n    /// </summary>\n    /// <typeparam name=\"TSender\">The type of the sender that raised the event.</typeparam>\n    /// <typeparam name=\"TEventArgs\">The type of the event data generated by the event.</typeparam>\n    public class EventPattern<TSender, TEventArgs> : IEquatable<EventPattern<TSender, TEventArgs>>, IEventPattern<TSender, TEventArgs>\n    {\n        /// <summary>\n        /// Creates a new data representation instance of a .NET event invocation with the given sender and event data.\n        /// </summary>\n        /// <param name=\"sender\">The sender object that raised the event.</param>\n        /// <param name=\"e\">The event data that was generated by the event.</param>\n        public EventPattern(TSender sender, TEventArgs e)\n        {\n            Sender = sender;\n            EventArgs = e;\n        }\n\n        /// <summary>\n        /// Gets the sender object that raised the event.\n        /// </summary>\n        public TSender Sender { get; private set; }\n\n        /// <summary>\n        /// Gets the event data that was generated by the event.\n        /// </summary>\n        public TEventArgs EventArgs { get; private set; }\n\n        /// <summary>\n        /// Determines whether the current EventPattern&lt;TSender, TEventArgs&gt; object represents the same event as a specified EventPattern&lt;TSender, TEventArgs&gt; object.\n        /// </summary>\n        /// <param name=\"other\">An object to compare to the current EventPattern&lt;TSender, TEventArgs&gt; object.</param>\n        /// <returns>true if both EventPattern&lt;TSender, TEventArgs&gt; objects represent the same event; otherwise, false.</returns>\n        public bool Equals(EventPattern<TSender, TEventArgs> other)\n        {\n            if (object.ReferenceEquals(null, other))\n                return false;\n            if (object.ReferenceEquals(this, other))\n                return true;\n\n            return EqualityComparer<TSender>.Default.Equals(Sender, other.Sender) && EqualityComparer<TEventArgs>.Default.Equals(EventArgs, other.EventArgs);\n        }\n\n        /// <summary>\n        /// Determines whether the specified System.Object is equal to the current EventPattern&lt;TSender, TEventArgs&gt;.\n        /// </summary>\n        /// <param name=\"obj\">The System.Object to compare with the current EventPattern&lt;TSender, TEventArgs&gt;.</param>\n        /// <returns>true if the specified System.Object is equal to the current EventPattern&lt;TSender, TEventArgs&gt;; otherwise, false.</returns>\n        public override bool Equals(object obj)\n        {\n            return Equals(obj as EventPattern<TSender, TEventArgs>);\n        }\n\n        /// <summary>\n        /// Returns the hash code for the current EventPattern&lt;TSender, TEventArgs&gt; instance.\n        /// </summary>\n        /// <returns>A hash code for the current EventPattern&lt;TSender, TEventArgs&gt; instance.</returns>\n        public override int GetHashCode()\n        {\n            var x = EqualityComparer<TSender>.Default.GetHashCode(Sender);\n            var y = EqualityComparer<TEventArgs>.Default.GetHashCode(EventArgs);\n            return (x << 5) + (x ^ y);\n        }\n\n        /// <summary>\n        /// Determines whether two specified EventPattern&lt;TSender, TEventArgs&gt; objects represent the same event.\n        /// </summary>\n        /// <param name=\"first\">The first EventPattern&lt;TSender, TEventArgs&gt; to compare, or null.</param>\n        /// <param name=\"second\">The second EventPattern&lt;TSender, TEventArgs&gt; to compare, or null.</param>\n        /// <returns>true if both EventPattern&lt;TSender, TEventArgs&gt; objects represent the same event; otherwise, false.</returns>\n        public static bool operator ==(EventPattern<TSender, TEventArgs> first, EventPattern<TSender, TEventArgs> second)\n        {\n            return object.Equals(first, second);\n        }\n\n        /// <summary>\n        /// Determines whether two specified EventPattern&lt;TSender, TEventArgs&gt; objects represent a different event.\n        /// </summary>\n        /// <param name=\"first\">The first EventPattern&lt;TSender, TEventArgs&gt; to compare, or null.</param>\n        /// <param name=\"second\">The second EventPattern&lt;TSender, TEventArgs&gt; to compare, or null.</param>\n        /// <returns>true if both EventPattern&lt;TSender, TEventArgs&gt; objects don't represent the same event; otherwise, false.</returns>\n        public static bool operator !=(EventPattern<TSender, TEventArgs> first, EventPattern<TSender, TEventArgs> second)\n        {\n            return !object.Equals(first, second);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/EventPattern.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e4b797bfea1999a499309068b7d7a97e\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/AscynLock.cs",
    "content": "﻿// this code is borrowed from RxOfficial(rx.codeplex.com) and modified\n\nusing System;\nusing System.Collections.Generic;\n\nnamespace UniRx.InternalUtil\n{\n    /// <summary>\n    /// Asynchronous lock.\n    /// </summary>\n    internal sealed class AsyncLock : IDisposable\n    {\n        private readonly Queue<Action> queue = new Queue<Action>();\n        private bool isAcquired = false;\n        private bool hasFaulted = false;\n\n        /// <summary>\n        /// Queues the action for execution. If the caller acquires the lock and becomes the owner,\n        /// the queue is processed. If the lock is already owned, the action is queued and will get\n        /// processed by the owner.\n        /// </summary>\n        /// <param name=\"action\">Action to queue for execution.</param>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"action\"/> is null.</exception>\n        public void Wait(Action action)\n        {\n            if (action == null)\n                throw new ArgumentNullException(\"action\");\n\n            var isOwner = false;\n            lock (queue)\n            {\n                if (!hasFaulted)\n                {\n                    queue.Enqueue(action);\n                    isOwner = !isAcquired;\n                    isAcquired = true;\n                }\n            }\n\n            if (isOwner)\n            {\n                while (true)\n                {\n                    var work = default(Action);\n                    lock (queue)\n                    {\n                        if (queue.Count > 0)\n                            work = queue.Dequeue();\n                        else\n                        {\n                            isAcquired = false;\n                            break;\n                        }\n                    }\n\n                    try\n                    {\n                        work();\n                    }\n                    catch\n                    {\n                        lock (queue)\n                        {\n                            queue.Clear();\n                            hasFaulted = true;\n                        }\n                        throw;\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Clears the work items in the queue and drops further work being queued.\n        /// </summary>\n        public void Dispose()\n        {\n            lock (queue)\n            {\n                queue.Clear();\n                hasFaulted = true;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/AscynLock.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 23dbd656cfe9c5e47b02c3c263e476aa\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/CancellableTaskCompletionSource.cs",
    "content": "﻿#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace UniRx.InternalUtil\n{\n    internal interface ICancellableTaskCompletionSource\n    {\n        bool TrySetException(Exception exception);\n        bool TrySetCanceled();\n    }\n\n    internal class CancellableTaskCompletionSource<T> : TaskCompletionSource<T>, ICancellableTaskCompletionSource\n    {\n       \n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/CancellableTaskCompletionSource.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 622c7ba8630c25b4c911cd1612ee0887\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ExceptionExtensions.cs",
    "content": "﻿namespace UniRx.InternalUtil\n{\n\tusing System;\n\n\tinternal static class ExceptionExtensions\n\t{\n\t\tpublic static void Throw(this Exception exception)\n\t\t{\n#if (NET_4_6 || NET_STANDARD_2_0)\n\t\t\tSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(exception).Throw();\n#endif\n            throw exception;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ExceptionExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 94d5d10805124b34c8b488ebf3f893eb\ntimeCreated: 1509016318\nlicenseType: Free\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ImmutableList.cs",
    "content": "﻿using System;\n\nnamespace UniRx.InternalUtil\n{\n    // ImmutableList is sometimes useful, use for public.\n    public class ImmutableList<T>\n    {\n        public static readonly ImmutableList<T> Empty = new ImmutableList<T>();\n\n        T[] data;\n\n        public T[] Data\n        {\n            get { return data; }\n        }\n\n        ImmutableList()\n        {\n            data = new T[0];\n        }\n\n        public ImmutableList(T[] data)\n        {\n            this.data = data;\n        }\n\n        public ImmutableList<T> Add(T value)\n        {\n            var newData = new T[data.Length + 1];\n            Array.Copy(data, newData, data.Length);\n            newData[data.Length] = value;\n            return new ImmutableList<T>(newData);\n        }\n\n        public ImmutableList<T> Remove(T value)\n        {\n            var i = IndexOf(value);\n            if (i < 0) return this;\n\n            var length = data.Length;\n            if (length == 1) return Empty;\n\n            var newData = new T[length - 1];\n\n            Array.Copy(data, 0, newData, 0, i);\n            Array.Copy(data, i + 1, newData, i, length - i - 1);\n\n            return new ImmutableList<T>(newData);\n        }\n\n        public int IndexOf(T value)\n        {\n            for (var i = 0; i < data.Length; ++i)\n            {\n                // ImmutableList only use for IObserver(no worry for boxed)\n                if (object.Equals(data[i], value)) return i;\n            }\n            return -1;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ImmutableList.cs.meta",
    "content": "fileFormatVersion: 2\nguid: dbafd8a41f556ec40b4bbd46fca2e85c\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ListObserver.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace UniRx.InternalUtil\n{\n    public class ListObserver<T> : IObserver<T>\n    {\n        private readonly ImmutableList<IObserver<T>> _observers;\n\n        public ListObserver(ImmutableList<IObserver<T>> observers)\n        {\n            _observers = observers;\n        }\n\n        public void OnCompleted()\n        {\n            var targetObservers = _observers.Data;\n            for (int i = 0; i < targetObservers.Length; i++)\n            {\n                targetObservers[i].OnCompleted();\n            }\n        }\n\n        public void OnError(Exception error)\n        {\n            var targetObservers = _observers.Data;\n            for (int i = 0; i < targetObservers.Length; i++)\n            {\n                targetObservers[i].OnError(error);\n            }\n        }\n\n        public void OnNext(T value)\n        {\n            var targetObservers = _observers.Data;\n            for (int i = 0; i < targetObservers.Length; i++)\n            {\n                targetObservers[i].OnNext(value);\n            }\n        }\n\n        internal IObserver<T> Add(IObserver<T> observer)\n        {\n            return new ListObserver<T>(_observers.Add(observer));\n        }\n\n        internal IObserver<T> Remove(IObserver<T> observer)\n        {\n            var i = Array.IndexOf(_observers.Data, observer);\n            if (i < 0)\n                return this;\n\n            if (_observers.Data.Length == 2)\n            {\n                return _observers.Data[1 - i];\n            }\n            else\n            {\n                return new ListObserver<T>(_observers.Remove(observer));\n            }\n        }\n    }\n\n    public class EmptyObserver<T> : IObserver<T>\n    {\n        public static readonly EmptyObserver<T> Instance = new EmptyObserver<T>();\n\n        EmptyObserver()\n        {\n\n        }\n\n        public void OnCompleted()\n        {\n        }\n\n        public void OnError(Exception error)\n        {\n        }\n\n        public void OnNext(T value)\n        {\n        }\n    }\n\n    public class ThrowObserver<T> : IObserver<T>\n    {\n        public static readonly ThrowObserver<T> Instance = new ThrowObserver<T>();\n\n        ThrowObserver()\n        {\n\n        }\n\n        public void OnCompleted()\n        {\n        }\n\n        public void OnError(Exception error)\n        {\n            error.Throw();\n        }\n\n        public void OnNext(T value)\n        {\n        }\n    }\n\n    public class DisposedObserver<T> : IObserver<T>\n    {\n        public static readonly DisposedObserver<T> Instance = new DisposedObserver<T>();\n\n        DisposedObserver()\n        {\n\n        }\n\n        public void OnCompleted()\n        {\n            throw new ObjectDisposedException(\"\");\n        }\n\n        public void OnError(Exception error)\n        {\n            throw new ObjectDisposedException(\"\");\n        }\n\n        public void OnNext(T value)\n        {\n            throw new ObjectDisposedException(\"\");\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ListObserver.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 889dc2f3c5f44d24a98a2c25510b4346\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/MicroCoroutine.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\n\nnamespace UniRx.InternalUtil\n{\n    /// <summary>\n    /// Simple supports(only yield return null) lightweight, threadsafe coroutine dispatcher.\n    /// </summary>\n    public class MicroCoroutine\n    {\n        const int InitialSize = 16;\n\n        readonly object runningAndQueueLock = new object();\n        readonly object arrayLock = new object();\n        readonly Action<Exception> unhandledExceptionCallback;\n\n        int tail = 0;\n        bool running = false;\n        IEnumerator[] coroutines = new IEnumerator[InitialSize];\n        Queue<IEnumerator> waitQueue = new Queue<IEnumerator>();\n\n        public MicroCoroutine(Action<Exception> unhandledExceptionCallback)\n        {\n            this.unhandledExceptionCallback = unhandledExceptionCallback;\n        }\n\n        public void AddCoroutine(IEnumerator enumerator)\n        {\n            lock (runningAndQueueLock)\n            {\n                if (running)\n                {\n                    waitQueue.Enqueue(enumerator);\n                    return;\n                }\n            }\n\n            // worst case at multi threading, wait lock until finish Run() but it is super rarely.\n            lock (arrayLock)\n            {\n                // Ensure Capacity\n                if (coroutines.Length == tail)\n                {\n                    Array.Resize(ref coroutines, checked(tail * 2));\n                }\n                coroutines[tail++] = enumerator;\n            }\n        }\n\n        public void Run()\n        {\n            lock (runningAndQueueLock)\n            {\n                running = true;\n            }\n\n            lock (arrayLock)\n            {\n                var j = tail - 1;\n\n                // eliminate array-bound check for i\n                for (int i = 0; i < coroutines.Length; i++)\n                {\n                    var coroutine = coroutines[i];\n                    if (coroutine != null)\n                    {\n                        try\n                        {\n                            if (!coroutine.MoveNext())\n                            {\n                                coroutines[i] = null;\n                            }\n                            else\n                            {\n#if UNITY_EDITOR\n                                // validation only on Editor.\n                                if (coroutine.Current != null)\n                                {\n                                    UnityEngine.Debug.LogWarning(\"MicroCoroutine supports only yield return null. return value = \" + coroutine.Current);\n                                }\n#endif\n\n                                continue; // next i \n                            }\n                        }\n                        catch (Exception ex)\n                        {\n                            coroutines[i] = null;\n                            try\n                            {\n                                unhandledExceptionCallback(ex);\n                            }\n                            catch { }\n                        }\n                    }\n\n                    // find null, loop from tail\n                    while (i < j)\n                    {\n                        var fromTail = coroutines[j];\n                        if (fromTail != null)\n                        {\n                            try\n                            {\n                                if (!fromTail.MoveNext())\n                                {\n                                    coroutines[j] = null;\n                                    j--;\n                                    continue; // next j\n                                }\n                                else\n                                {\n#if UNITY_EDITOR\n                                    // validation only on Editor.\n                                    if (fromTail.Current != null)\n                                    {\n                                        UnityEngine.Debug.LogWarning(\"MicroCoroutine supports only yield return null. return value = \" + coroutine.Current);\n                                    }\n#endif\n\n                                    // swap\n                                    coroutines[i] = fromTail;\n                                    coroutines[j] = null;\n                                    j--;\n                                    goto NEXT_LOOP; // next i\n                                }\n                            }\n                            catch (Exception ex)\n                            {\n                                coroutines[j] = null;\n                                j--;\n                                try\n                                {\n                                    unhandledExceptionCallback(ex);\n                                }\n                                catch { }\n                                continue; // next j\n                            }\n                        }\n                        else\n                        {\n                            j--;\n                        }\n                    }\n\n                    tail = i; // loop end\n                    break; // LOOP END\n\n                    NEXT_LOOP:\n                    continue;\n                }\n\n\n                lock (runningAndQueueLock)\n                {\n                    running = false;\n                    while (waitQueue.Count != 0)\n                    {\n                        if (coroutines.Length == tail)\n                        {\n                            Array.Resize(ref coroutines, checked(tail * 2));\n                        }\n                        coroutines[tail++] = waitQueue.Dequeue();\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/MicroCoroutine.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 108be6d634275c94a95eeb2a39de0792\ntimeCreated: 1462599042\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/PriorityQueue.cs",
    "content": "﻿// this code is borrowed from RxOfficial(rx.codeplex.com) and modified\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\n\nnamespace UniRx.InternalUtil\n{\n    internal class PriorityQueue<T> where T : IComparable<T>\n    {\n        private static long _count = long.MinValue;\n\n        private IndexedItem[] _items;\n        private int _size;\n\n        public PriorityQueue()\n            : this(16)\n        {\n        }\n\n        public PriorityQueue(int capacity)\n        {\n            _items = new IndexedItem[capacity];\n            _size = 0;\n        }\n\n        private bool IsHigherPriority(int left, int right)\n        {\n            return _items[left].CompareTo(_items[right]) < 0;\n        }\n\n        private void Percolate(int index)\n        {\n            if (index >= _size || index < 0)\n                return;\n            var parent = (index - 1) / 2;\n            if (parent < 0 || parent == index)\n                return;\n\n            if (IsHigherPriority(index, parent))\n            {\n                var temp = _items[index];\n                _items[index] = _items[parent];\n                _items[parent] = temp;\n                Percolate(parent);\n            }\n        }\n\n        private void Heapify()\n        {\n            Heapify(0);\n        }\n\n        private void Heapify(int index)\n        {\n            if (index >= _size || index < 0)\n                return;\n\n            var left = 2 * index + 1;\n            var right = 2 * index + 2;\n            var first = index;\n\n            if (left < _size && IsHigherPriority(left, first))\n                first = left;\n            if (right < _size && IsHigherPriority(right, first))\n                first = right;\n            if (first != index)\n            {\n                var temp = _items[index];\n                _items[index] = _items[first];\n                _items[first] = temp;\n                Heapify(first);\n            }\n        }\n\n        public int Count { get { return _size; } }\n\n        public T Peek()\n        {\n            if (_size == 0)\n                throw new InvalidOperationException(\"HEAP is Empty\");\n\n            return _items[0].Value;\n        }\n\n        private void RemoveAt(int index)\n        {\n            _items[index] = _items[--_size];\n            _items[_size] = default(IndexedItem);\n            Heapify();\n            if (_size < _items.Length / 4)\n            {\n                var temp = _items;\n                _items = new IndexedItem[_items.Length / 2];\n                Array.Copy(temp, 0, _items, 0, _size);\n            }\n        }\n\n        public T Dequeue()\n        {\n            var result = Peek();\n            RemoveAt(0);\n            return result;\n        }\n\n        public void Enqueue(T item)\n        {\n            if (_size >= _items.Length)\n            {\n                var temp = _items;\n                _items = new IndexedItem[_items.Length * 2];\n                Array.Copy(temp, _items, temp.Length);\n            }\n\n            var index = _size++;\n            _items[index] = new IndexedItem { Value = item, Id = Interlocked.Increment(ref _count) };\n            Percolate(index);\n        }\n\n        public bool Remove(T item)\n        {\n            for (var i = 0; i < _size; ++i)\n            {\n                if (EqualityComparer<T>.Default.Equals(_items[i].Value, item))\n                {\n                    RemoveAt(i);\n                    return true;\n                }\n            }\n\n            return false;\n        }\n\n        struct IndexedItem : IComparable<IndexedItem>\n        {\n            public T Value;\n            public long Id;\n\n            public int CompareTo(IndexedItem other)\n            {\n                var c = Value.CompareTo(other.Value);\n                if (c == 0)\n                    c = Id.CompareTo(other.Id);\n                return c;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/PriorityQueue.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7956b408e24dc5a4884fe4f5a3d7c858\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/PromiseHelper.cs",
    "content": "﻿#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace UniRx.InternalUtil\n{\n    internal static class PromiseHelper\n    {\n        internal static void TrySetResultAll<T>(IEnumerable<TaskCompletionSource<T>> source, T value)\n        {\n            var rentArray = source.ToArray(); // better to use Arraypool.\n            var array = rentArray;\n            var len = rentArray.Length;\n            for (int i = 0; i < len; i++)\n            {\n                array[i].TrySetResult(value);\n                array[i] = null;\n            }\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/PromiseHelper.cs.meta",
    "content": "fileFormatVersion: 2\nguid: daa7aa90cece0fe40920a35e79f526dd\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ScheduledItem.cs",
    "content": "﻿// this code is borrowed from RxOfficial(rx.codeplex.com) and modified\n\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.\n\nusing System;\nusing System.Collections.Generic;\n\nnamespace UniRx.InternalUtil\n{\n    /// <summary>\n    /// Abstract base class for scheduled work items.\n    /// </summary>\n    internal class ScheduledItem : IComparable<ScheduledItem>\n    {\n        private readonly BooleanDisposable _disposable = new BooleanDisposable();\n        private readonly TimeSpan _dueTime;\n        private readonly Action _action;\n\n        /// <summary>\n        /// Creates a new scheduled work item to run at the specified time.\n        /// </summary>\n        /// <param name=\"dueTime\">Absolute time at which the work item has to be executed.</param>\n        public ScheduledItem(Action action, TimeSpan dueTime)\n        {\n            _dueTime = dueTime;\n            _action = action;\n        }\n\n        /// <summary>\n        /// Gets the absolute time at which the item is due for invocation.\n        /// </summary>\n        public TimeSpan DueTime\n        {\n            get { return _dueTime; }\n        }\n\n        /// <summary>\n        /// Invokes the work item.\n        /// </summary>\n        public void Invoke()\n        {\n            if (!_disposable.IsDisposed)\n            {\n                _action();\n            }\n        }\n\n        #region Inequality\n\n        /// <summary>\n        /// Compares the work item with another work item based on absolute time values.\n        /// </summary>\n        /// <param name=\"other\">Work item to compare the current work item to.</param>\n        /// <returns>Relative ordering between this and the specified work item.</returns>\n        /// <remarks>The inequality operators are overloaded to provide results consistent with the IComparable implementation. Equality operators implement traditional reference equality semantics.</remarks>\n        public int CompareTo(ScheduledItem other)\n        {\n            // MSDN: By definition, any object compares greater than null, and two null references compare equal to each other. \n            if (object.ReferenceEquals(other, null))\n                return 1;\n\n            return DueTime.CompareTo(other.DueTime);\n        }\n\n        /// <summary>\n        /// Determines whether one specified ScheduledItem&lt;TAbsolute&gt; object is due before a second specified ScheduledItem&lt;TAbsolute&gt; object.\n        /// </summary>\n        /// <param name=\"left\">The first object to compare.</param>\n        /// <param name=\"right\">The second object to compare.</param>\n        /// <returns>true if the DueTime value of left is earlier than the DueTime value of right; otherwise, false.</returns>\n        /// <remarks>This operator provides results consistent with the IComparable implementation.</remarks>\n        public static bool operator <(ScheduledItem left, ScheduledItem right)\n        {\n            return left.CompareTo(right) < 0;\n        }\n\n        /// <summary>\n        /// Determines whether one specified ScheduledItem&lt;TAbsolute&gt; object is due before or at the same of a second specified ScheduledItem&lt;TAbsolute&gt; object.\n        /// </summary>\n        /// <param name=\"left\">The first object to compare.</param>\n        /// <param name=\"right\">The second object to compare.</param>\n        /// <returns>true if the DueTime value of left is earlier than or simultaneous with the DueTime value of right; otherwise, false.</returns>\n        /// <remarks>This operator provides results consistent with the IComparable implementation.</remarks>\n        public static bool operator <=(ScheduledItem left, ScheduledItem right)\n        {\n            return left.CompareTo(right) <= 0;\n        }\n\n        /// <summary>\n        /// Determines whether one specified ScheduledItem&lt;TAbsolute&gt; object is due after a second specified ScheduledItem&lt;TAbsolute&gt; object.\n        /// </summary>\n        /// <param name=\"left\">The first object to compare.</param>\n        /// <param name=\"right\">The second object to compare.</param>\n        /// <returns>true if the DueTime value of left is later than the DueTime value of right; otherwise, false.</returns>\n        /// <remarks>This operator provides results consistent with the IComparable implementation.</remarks>\n        public static bool operator >(ScheduledItem left, ScheduledItem right)\n        {\n            return left.CompareTo(right) > 0;\n        }\n\n        /// <summary>\n        /// Determines whether one specified ScheduledItem&lt;TAbsolute&gt; object is due after or at the same time of a second specified ScheduledItem&lt;TAbsolute&gt; object.\n        /// </summary>\n        /// <param name=\"left\">The first object to compare.</param>\n        /// <param name=\"right\">The second object to compare.</param>\n        /// <returns>true if the DueTime value of left is later than or simultaneous with the DueTime value of right; otherwise, false.</returns>\n        /// <remarks>This operator provides results consistent with the IComparable implementation.</remarks>\n        public static bool operator >=(ScheduledItem left, ScheduledItem right)\n        {\n            return left.CompareTo(right) >= 0;\n        }\n\n        #endregion\n\n        #region Equality\n\n        /// <summary>\n        /// Determines whether two specified ScheduledItem&lt;TAbsolute, TValue&gt; objects are equal.\n        /// </summary>\n        /// <param name=\"left\">The first object to compare.</param>\n        /// <param name=\"right\">The second object to compare.</param>\n        /// <returns>true if both ScheduledItem&lt;TAbsolute, TValue&gt; are equal; otherwise, false.</returns>\n        /// <remarks>This operator does not provide results consistent with the IComparable implementation. Instead, it implements reference equality.</remarks>\n        public static bool operator ==(ScheduledItem left, ScheduledItem right)\n        {\n            return object.ReferenceEquals(left, right);\n        }\n\n        /// <summary>\n        /// Determines whether two specified ScheduledItem&lt;TAbsolute, TValue&gt; objects are inequal.\n        /// </summary>\n        /// <param name=\"left\">The first object to compare.</param>\n        /// <param name=\"right\">The second object to compare.</param>\n        /// <returns>true if both ScheduledItem&lt;TAbsolute, TValue&gt; are inequal; otherwise, false.</returns>\n        /// <remarks>This operator does not provide results consistent with the IComparable implementation. Instead, it implements reference equality.</remarks>\n        public static bool operator !=(ScheduledItem left, ScheduledItem right)\n        {\n            return !(left == right);\n        }\n\n        /// <summary>\n        /// Determines whether a ScheduledItem&lt;TAbsolute&gt; object is equal to the specified object.\n        /// </summary>\n        /// <param name=\"obj\">The object to compare to the current ScheduledItem&lt;TAbsolute&gt; object.</param>\n        /// <returns>true if the obj parameter is a ScheduledItem&lt;TAbsolute&gt; object and is equal to the current ScheduledItem&lt;TAbsolute&gt; object; otherwise, false.</returns>\n        public override bool Equals(object obj)\n        {\n            return object.ReferenceEquals(this, obj);\n        }\n\n        /// <summary>\n        /// Returns the hash code for the current ScheduledItem&lt;TAbsolute&gt; object.\n        /// </summary>\n        /// <returns>A 32-bit signed integer hash code.</returns>\n        public override int GetHashCode()\n        {\n            return base.GetHashCode();\n        }\n\n        #endregion\n\n        public IDisposable Cancellation\n        {\n            get\n            {\n                return _disposable;\n            }\n        }\n\n        /// <summary>\n        /// Gets whether the work item has received a cancellation request.\n        /// </summary>\n        public bool IsCanceled\n        {\n            get { return _disposable.IsDisposed; }\n        }\n    }\n\n    /// <summary>\n    /// Efficient scheduler queue that maintains scheduled items sorted by absolute time.\n    /// </summary>\n    /// <remarks>This type is not thread safe; users should ensure proper synchronization.</remarks>\n    [System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Naming\", \"CA1711:IdentifiersShouldNotHaveIncorrectSuffix\", Justification = \"But it *is* a queue!\")]\n    internal class SchedulerQueue\n    {\n        private readonly PriorityQueue<ScheduledItem> _queue;\n\n        /// <summary>\n        /// Creates a new scheduler queue with a default initial capacity.\n        /// </summary>\n        public SchedulerQueue()\n            : this(1024)\n        {\n        }\n\n        /// <summary>\n        /// Creats a new scheduler queue with the specified initial capacity.\n        /// </summary>\n        /// <param name=\"capacity\">Initial capacity of the scheduler queue.</param>\n        /// <exception cref=\"ArgumentOutOfRangeException\"><paramref name=\"capacity\"/> is less than zero.</exception>\n        public SchedulerQueue(int capacity)\n        {\n            if (capacity < 0)\n                throw new ArgumentOutOfRangeException(\"capacity\");\n\n            _queue = new PriorityQueue<ScheduledItem>(capacity);\n        }\n\n        /// <summary>\n        /// Gets the number of scheduled items in the scheduler queue.\n        /// </summary>\n        public int Count\n        {\n            get\n            {\n                return _queue.Count;\n            }\n        }\n\n        /// <summary>\n        /// Enqueues the specified work item to be scheduled.\n        /// </summary>\n        /// <param name=\"scheduledItem\">Work item to be scheduled.</param>\n        public void Enqueue(ScheduledItem scheduledItem)\n        {\n            _queue.Enqueue(scheduledItem);\n        }\n\n        /// <summary>\n        /// Removes the specified work item from the scheduler queue.\n        /// </summary>\n        /// <param name=\"scheduledItem\">Work item to be removed from the scheduler queue.</param>\n        /// <returns>true if the item was found; false otherwise.</returns>\n        public bool Remove(ScheduledItem scheduledItem)\n        {\n            return _queue.Remove(scheduledItem);\n        }\n\n        /// <summary>\n        /// Dequeues the next work item from the scheduler queue.\n        /// </summary>\n        /// <returns>Next work item in the scheduler queue (removed).</returns>\n        public ScheduledItem Dequeue()\n        {\n            return _queue.Dequeue();\n        }\n\n        /// <summary>\n        /// Peeks the next work item in the scheduler queue.\n        /// </summary>\n        /// <returns>Next work item in the scheduler queue (not removed).</returns>\n        public ScheduledItem Peek()\n        {\n            return _queue.Peek();\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ScheduledItem.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 45457ee4a77967347828238b7a52b851\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ThreadSafeQueueWorker.cs",
    "content": "﻿using System;\n\nnamespace UniRx.InternalUtil\n{\n    public class ThreadSafeQueueWorker\n    {\n        const int MaxArrayLength = 0X7FEFFFFF;\n        const int InitialSize = 16;\n\n        object gate = new object();\n        bool dequing = false;\n\n        int actionListCount = 0;\n        Action<object>[] actionList = new Action<object>[InitialSize];\n        object[] actionStates = new object[InitialSize];\n\n        int waitingListCount = 0;\n        Action<object>[] waitingList = new Action<object>[InitialSize];\n        object[] waitingStates = new object[InitialSize];\n\n        public void Enqueue(Action<object> action, object state)\n        {\n            lock (gate)\n            {\n                if (dequing)\n                {\n                    // Ensure Capacity\n                    if (waitingList.Length == waitingListCount)\n                    {\n                        var newLength = waitingListCount * 2;\n                        if ((uint)newLength > MaxArrayLength) newLength = MaxArrayLength;\n\n                        var newArray = new Action<object>[newLength];\n                        var newArrayState = new object[newLength];\n                        Array.Copy(waitingList, newArray, waitingListCount);\n                        Array.Copy(waitingStates, newArrayState, waitingListCount);\n                        waitingList = newArray;\n                        waitingStates = newArrayState;\n                    }\n                    waitingList[waitingListCount] = action;\n                    waitingStates[waitingListCount] = state;\n                    waitingListCount++;\n                }\n                else\n                {\n                    // Ensure Capacity\n                    if (actionList.Length == actionListCount)\n                    {\n                        var newLength = actionListCount * 2;\n                        if ((uint)newLength > MaxArrayLength) newLength = MaxArrayLength;\n\n                        var newArray = new Action<object>[newLength];\n                        var newArrayState = new object[newLength];\n                        Array.Copy(actionList, newArray, actionListCount);\n                        Array.Copy(actionStates, newArrayState, actionListCount);\n                        actionList = newArray;\n                        actionStates = newArrayState;\n                    }\n                    actionList[actionListCount] = action;\n                    actionStates[actionListCount] = state;\n                    actionListCount++;\n                }\n            }\n        }\n\n        public void ExecuteAll(Action<Exception> unhandledExceptionCallback)\n        {\n            lock (gate)\n            {\n                if (actionListCount == 0) return;\n\n                dequing = true;\n            }\n\n            for (int i = 0; i < actionListCount; i++)\n            {\n                var action = actionList[i];\n                var state = actionStates[i];\n                try\n                {\n                    action(state);\n                }\n                catch (Exception ex)\n                {\n                    unhandledExceptionCallback(ex);\n                }\n                finally\n                {\n                    // Clear\n                    actionList[i] = null;\n                    actionStates[i] = null;\n                }\n            }\n\n            lock (gate)\n            {\n                dequing = false;\n\n                var swapTempActionList = actionList;\n                var swapTempActionStates = actionStates;\n\n                actionListCount = waitingListCount;\n                actionList = waitingList;\n                actionStates = waitingStates;\n\n                waitingListCount = 0;\n                waitingList = swapTempActionList;\n                waitingStates = swapTempActionStates;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/ThreadSafeQueueWorker.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 768cbfcbe2a8e704a8953eea28cd33df\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/UnityEqualityComparer.cs",
    "content": "﻿#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n#endif\n\nusing System;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nnamespace UniRx.InternalUtil\n{\n    internal static class UnityEqualityComparer\n    {\n        public static readonly IEqualityComparer<Vector2> Vector2 = new Vector2EqualityComparer();\n        public static readonly IEqualityComparer<Vector3> Vector3 = new Vector3EqualityComparer();\n        public static readonly IEqualityComparer<Vector4> Vector4 = new Vector4EqualityComparer();\n        public static readonly IEqualityComparer<Color> Color = new ColorEqualityComparer();\n        public static readonly IEqualityComparer<Color32> Color32 = new Color32EqualityComparer();\n        public static readonly IEqualityComparer<Rect> Rect = new RectEqualityComparer();\n        public static readonly IEqualityComparer<Bounds> Bounds = new BoundsEqualityComparer();\n        public static readonly IEqualityComparer<Quaternion> Quaternion = new QuaternionEqualityComparer();\n\n        static readonly RuntimeTypeHandle vector2Type = typeof(Vector2).TypeHandle;\n        static readonly RuntimeTypeHandle vector3Type = typeof(Vector3).TypeHandle;\n        static readonly RuntimeTypeHandle vector4Type = typeof(Vector4).TypeHandle;\n        static readonly RuntimeTypeHandle colorType = typeof(Color).TypeHandle;\n        static readonly RuntimeTypeHandle color32Type = typeof(Color32).TypeHandle;\n        static readonly RuntimeTypeHandle rectType = typeof(Rect).TypeHandle;\n        static readonly RuntimeTypeHandle boundsType = typeof(Bounds).TypeHandle;\n        static readonly RuntimeTypeHandle quaternionType = typeof(Quaternion).TypeHandle;\n\n#if UNITY_2017_2_OR_NEWER\n\n        public static readonly IEqualityComparer<Vector2Int> Vector2Int = new Vector2IntEqualityComparer();\n        public static readonly IEqualityComparer<Vector3Int> Vector3Int = new Vector3IntEqualityComparer();\n        public static readonly IEqualityComparer<RangeInt> RangeInt = new RangeIntEqualityComparer();\n        public static readonly IEqualityComparer<RectInt> RectInt = new RectIntEqualityComparer();\n        public static readonly IEqualityComparer<BoundsInt> BoundsInt = new BoundsIntEqualityComparer();\n\n        static readonly RuntimeTypeHandle vector2IntType = typeof(Vector2Int).TypeHandle;\n        static readonly RuntimeTypeHandle vector3IntType = typeof(Vector3Int).TypeHandle;\n        static readonly RuntimeTypeHandle rangeIntType = typeof(RangeInt).TypeHandle;\n        static readonly RuntimeTypeHandle rectIntType = typeof(RectInt).TypeHandle;\n        static readonly RuntimeTypeHandle boundsIntType = typeof(BoundsInt).TypeHandle;\n\n#endif\n\n        static class Cache<T>\n        {\n            public static readonly IEqualityComparer<T> Comparer;\n\n            static Cache()\n            {\n                var comparer = GetDefaultHelper(typeof(T));\n                if (comparer == null)\n                {\n                    Comparer = EqualityComparer<T>.Default;\n                }\n                else\n                {\n                    Comparer = (IEqualityComparer<T>)comparer;\n                }\n            }\n        }\n\n        public static IEqualityComparer<T> GetDefault<T>()\n        {\n            return Cache<T>.Comparer;\n        }\n\n        static object GetDefaultHelper(Type type)\n        {\n            var t = type.TypeHandle;\n\n            if (t.Equals(vector2Type)) return (object)UnityEqualityComparer.Vector2;\n            if (t.Equals(vector3Type)) return (object)UnityEqualityComparer.Vector3;\n            if (t.Equals(vector4Type)) return (object)UnityEqualityComparer.Vector4;\n            if (t.Equals(colorType)) return (object)UnityEqualityComparer.Color;\n            if (t.Equals(color32Type)) return (object)UnityEqualityComparer.Color32;\n            if (t.Equals(rectType)) return (object)UnityEqualityComparer.Rect;\n            if (t.Equals(boundsType)) return (object)UnityEqualityComparer.Bounds;\n            if (t.Equals(quaternionType)) return (object)UnityEqualityComparer.Quaternion;\n\n#if UNITY_2017_2_OR_NEWER\n\n            if (t.Equals(vector2IntType)) return (object)UnityEqualityComparer.Vector2Int;\n            if (t.Equals(vector3IntType)) return (object)UnityEqualityComparer.Vector3Int;\n            if (t.Equals(rangeIntType)) return (object)UnityEqualityComparer.RangeInt;\n            if (t.Equals(rectIntType)) return (object)UnityEqualityComparer.RectInt;\n            if (t.Equals(boundsIntType)) return (object)UnityEqualityComparer.BoundsInt;\n#endif\n\n            return null;\n        }\n\n        sealed class Vector2EqualityComparer : IEqualityComparer<Vector2>\n        {\n            public bool Equals(Vector2 self, Vector2 vector)\n            {\n                return self.x.Equals(vector.x) && self.y.Equals(vector.y);\n            }\n\n            public int GetHashCode(Vector2 obj)\n            {\n                return obj.x.GetHashCode() ^ obj.y.GetHashCode() << 2;\n            }\n        }\n\n        sealed class Vector3EqualityComparer : IEqualityComparer<Vector3>\n        {\n            public bool Equals(Vector3 self, Vector3 vector)\n            {\n                return self.x.Equals(vector.x) && self.y.Equals(vector.y) && self.z.Equals(vector.z);\n            }\n\n            public int GetHashCode(Vector3 obj)\n            {\n                return obj.x.GetHashCode() ^ obj.y.GetHashCode() << 2 ^ obj.z.GetHashCode() >> 2;\n            }\n        }\n\n        sealed class Vector4EqualityComparer : IEqualityComparer<Vector4>\n        {\n            public bool Equals(Vector4 self, Vector4 vector)\n            {\n                return self.x.Equals(vector.x) && self.y.Equals(vector.y) && self.z.Equals(vector.z) && self.w.Equals(vector.w);\n            }\n\n            public int GetHashCode(Vector4 obj)\n            {\n                return obj.x.GetHashCode() ^ obj.y.GetHashCode() << 2 ^ obj.z.GetHashCode() >> 2 ^ obj.w.GetHashCode() >> 1;\n            }\n        }\n\n        sealed class ColorEqualityComparer : IEqualityComparer<Color>\n        {\n            public bool Equals(Color self, Color other)\n            {\n                return self.r.Equals(other.r) && self.g.Equals(other.g) && self.b.Equals(other.b) && self.a.Equals(other.a);\n            }\n\n            public int GetHashCode(Color obj)\n            {\n                return obj.r.GetHashCode() ^ obj.g.GetHashCode() << 2 ^ obj.b.GetHashCode() >> 2 ^ obj.a.GetHashCode() >> 1;\n            }\n        }\n\n        sealed class RectEqualityComparer : IEqualityComparer<Rect>\n        {\n            public bool Equals(Rect self, Rect other)\n            {\n                return self.x.Equals(other.x) && self.width.Equals(other.width) && self.y.Equals(other.y) && self.height.Equals(other.height);\n            }\n\n            public int GetHashCode(Rect obj)\n            {\n                return obj.x.GetHashCode() ^ obj.width.GetHashCode() << 2 ^ obj.y.GetHashCode() >> 2 ^ obj.height.GetHashCode() >> 1;\n            }\n        }\n\n        sealed class BoundsEqualityComparer : IEqualityComparer<Bounds>\n        {\n            public bool Equals(Bounds self, Bounds vector)\n            {\n                return self.center.Equals(vector.center) && self.extents.Equals(vector.extents);\n            }\n\n            public int GetHashCode(Bounds obj)\n            {\n                return obj.center.GetHashCode() ^ obj.extents.GetHashCode() << 2;\n            }\n        }\n\n        sealed class QuaternionEqualityComparer : IEqualityComparer<Quaternion>\n        {\n            public bool Equals(Quaternion self, Quaternion vector)\n            {\n                return self.x.Equals(vector.x) && self.y.Equals(vector.y) && self.z.Equals(vector.z) && self.w.Equals(vector.w);\n            }\n\n            public int GetHashCode(Quaternion obj)\n            {\n                return obj.x.GetHashCode() ^ obj.y.GetHashCode() << 2 ^ obj.z.GetHashCode() >> 2 ^ obj.w.GetHashCode() >> 1;\n            }\n        }\n\n        sealed class Color32EqualityComparer : IEqualityComparer<Color32>\n        {\n            public bool Equals(Color32 self, Color32 vector)\n            {\n                return self.a.Equals(vector.a) && self.r.Equals(vector.r) && self.g.Equals(vector.g) && self.b.Equals(vector.b);\n            }\n\n            public int GetHashCode(Color32 obj)\n            {\n                return obj.a.GetHashCode() ^ obj.r.GetHashCode() << 2 ^ obj.g.GetHashCode() >> 2 ^ obj.b.GetHashCode() >> 1;\n            }\n        }\n\n#if UNITY_2017_2_OR_NEWER\n\n        sealed class Vector2IntEqualityComparer : IEqualityComparer<Vector2Int>\n        {\n            public bool Equals(Vector2Int self, Vector2Int vector)\n            {\n                return self.x.Equals(vector.x) && self.y.Equals(vector.y);\n            }\n\n            public int GetHashCode(Vector2Int obj)\n            {\n                return obj.x.GetHashCode() ^ obj.y.GetHashCode() << 2;\n            }\n        }\n\n        sealed class Vector3IntEqualityComparer : IEqualityComparer<Vector3Int>\n        {\n            public static readonly Vector3IntEqualityComparer Default = new Vector3IntEqualityComparer();\n\n            public bool Equals(Vector3Int self, Vector3Int vector)\n            {\n                return self.x.Equals(vector.x) && self.y.Equals(vector.y) && self.z.Equals(vector.z);\n            }\n\n            public int GetHashCode(Vector3Int obj)\n            {\n                return obj.x.GetHashCode() ^ obj.y.GetHashCode() << 2 ^ obj.z.GetHashCode() >> 2;\n            }\n        }\n\n        sealed class RangeIntEqualityComparer : IEqualityComparer<RangeInt>\n        {\n            public bool Equals(RangeInt self, RangeInt vector)\n            {\n                return self.start.Equals(vector.start) && self.length.Equals(vector.length);\n            }\n\n            public int GetHashCode(RangeInt obj)\n            {\n                return obj.start.GetHashCode() ^ obj.length.GetHashCode() << 2;\n            }\n        }\n\n        sealed class RectIntEqualityComparer : IEqualityComparer<RectInt>\n        {\n            public bool Equals(RectInt self, RectInt other)\n            {\n                return self.x.Equals(other.x) && self.width.Equals(other.width) && self.y.Equals(other.y) && self.height.Equals(other.height);\n            }\n\n            public int GetHashCode(RectInt obj)\n            {\n                return obj.x.GetHashCode() ^ obj.width.GetHashCode() << 2 ^ obj.y.GetHashCode() >> 2 ^ obj.height.GetHashCode() >> 1;\n            }\n        }\n\n        sealed class BoundsIntEqualityComparer : IEqualityComparer<BoundsInt>\n        {\n            public bool Equals(BoundsInt self, BoundsInt vector)\n            {\n                return Vector3IntEqualityComparer.Default.Equals(self.position, vector.position)\n                    && Vector3IntEqualityComparer.Default.Equals(self.size, vector.size);\n            }\n\n            public int GetHashCode(BoundsInt obj)\n            {\n                return Vector3IntEqualityComparer.Default.GetHashCode(obj.position) ^ Vector3IntEqualityComparer.Default.GetHashCode(obj.size) << 2;\n            }\n        }\n\n#endif\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil/UnityEqualityComparer.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 626a410137515ac45bb59d1ca91d8f3f\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/InternalUtil.meta",
    "content": "fileFormatVersion: 2\nguid: 7147cf40e45d9b7468957f2d28b1f2f0\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notification.cs",
    "content": "﻿// original code from rx.codeplex.com\n// some modified.\n\n/* ------------------ */\n\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.\n\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.Collections.Generic;\nusing System;\nusing UniRx.InternalUtil;\n\n#pragma warning disable 0659\n#pragma warning disable 0661\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Provides a mechanism for receiving push-based notifications and returning a response.\n    /// </summary>\n    /// <typeparam name=\"TValue\">\n    /// The type of the elements received by the observer.\n    /// This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics.\n    /// </typeparam>\n    /// <typeparam name=\"TResult\">\n    /// The type of the result returned from the observer's notification handlers.\n    /// This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics.\n    /// </typeparam>\n    public interface IObserver<TValue, TResult>\n    {\n        /// <summary>\n        /// Notifies the observer of a new element in the sequence.\n        /// </summary>\n        /// <param name=\"value\">The new element in the sequence.</param>\n        /// <returns>Result returned upon observation of a new element.</returns>\n        TResult OnNext(TValue value);\n\n        /// <summary>\n        /// Notifies the observer that an exception has occurred.\n        /// </summary>\n        /// <param name=\"exception\">The exception that occurred.</param>\n        /// <returns>Result returned upon observation of an error.</returns>\n        TResult OnError(Exception exception);\n\n        /// <summary>\n        /// Notifies the observer of the end of the sequence.\n        /// </summary>\n        /// <returns>Result returned upon observation of the sequence completion.</returns>\n        TResult OnCompleted();\n    }\n\n    /// <summary>\n    /// Indicates the type of a notification.\n    /// </summary>\n    public enum NotificationKind\n    {\n        /// <summary>\n        /// Represents an OnNext notification.\n        /// </summary>\n        OnNext,\n\n        /// <summary>\n        /// Represents an OnError notification.\n        /// </summary>\n        OnError,\n\n        /// <summary>\n        /// Represents an OnCompleted notification.\n        /// </summary>\n        OnCompleted\n    }\n\n    /// <summary>\n    /// Represents a notification to an observer.\n    /// </summary>\n    /// <typeparam name=\"T\">The type of the elements received by the observer.</typeparam>\n    [Serializable]\n    public abstract class Notification<T> : IEquatable<Notification<T>>\n    {\n        /// <summary>\n        /// Default constructor used by derived types.\n        /// </summary>\n        protected internal Notification()\n        {\n        }\n\n        /// <summary>\n        /// Returns the value of an OnNext notification or throws an exception.\n        /// </summary>\n        public abstract T Value\n        {\n            get;\n        }\n\n        /// <summary>\n        /// Returns a value that indicates whether the notification has a value.\n        /// </summary>\n        public abstract bool HasValue\n        {\n            get;\n        }\n\n        /// <summary>\n        /// Returns the exception of an OnError notification or returns null.\n        /// </summary>\n        public abstract Exception Exception\n        {\n            get;\n        }\n\n        /// <summary>\n        /// Gets the kind of notification that is represented.\n        /// </summary>\n        public abstract NotificationKind Kind\n        {\n            get;\n        }\n\n        /// <summary>\n        /// Represents an OnNext notification to an observer.\n        /// </summary>\n        [DebuggerDisplay(\"OnNext({Value})\")]\n        [Serializable]\n        internal sealed class OnNextNotification : Notification<T>\n        {\n            T value;\n\n            /// <summary>\n            /// Constructs a notification of a new value.\n            /// </summary>\n            public OnNextNotification(T value)\n            {\n                this.value = value;\n            }\n\n            /// <summary>\n            /// Returns the value of an OnNext notification.\n            /// </summary>\n            public override T Value { get { return value; } }\n\n            /// <summary>\n            /// Returns null.\n            /// </summary>\n            public override Exception Exception { get { return null; } }\n\n            /// <summary>\n            /// Returns true.\n            /// </summary>\n            public override bool HasValue { get { return true; } }\n\n            /// <summary>\n            /// Returns NotificationKind.OnNext.\n            /// </summary>\n            public override NotificationKind Kind { get { return NotificationKind.OnNext; } }\n\n            /// <summary>\n            /// Returns the hash code for this instance.\n            /// </summary>\n            public override int GetHashCode()\n            {\n                return EqualityComparer<T>.Default.GetHashCode(Value);\n            }\n\n            /// <summary>\n            /// Indicates whether this instance and a specified object are equal.\n            /// </summary>\n            public override bool Equals(Notification<T> other)\n            {\n                if (Object.ReferenceEquals(this, other))\n                    return true;\n                if (Object.ReferenceEquals(other, null))\n                    return false;\n                if (other.Kind != NotificationKind.OnNext)\n                    return false;\n                return EqualityComparer<T>.Default.Equals(Value, other.Value);\n            }\n\n            /// <summary>\n            /// Returns a string representation of this instance.\n            /// </summary>\n            public override string ToString()\n            {\n                return String.Format(CultureInfo.CurrentCulture, \"OnNext({0})\", Value);\n            }\n\n            /// <summary>\n            /// Invokes the observer's method corresponding to the notification.\n            /// </summary>\n            /// <param name=\"observer\">Observer to invoke the notification on.</param>\n            public override void Accept(IObserver<T> observer)\n            {\n                if (observer == null)\n                    throw new ArgumentNullException(\"observer\");\n\n                observer.OnNext(Value);\n            }\n\n            /// <summary>\n            /// Invokes the observer's method corresponding to the notification and returns the produced result.\n            /// </summary>\n            /// <param name=\"observer\">Observer to invoke the notification on.</param>\n            /// <returns>Result produced by the observation.</returns>\n            public override TResult Accept<TResult>(IObserver<T, TResult> observer)\n            {\n                if (observer == null)\n                    throw new ArgumentNullException(\"observer\");\n\n                return observer.OnNext(Value);\n            }\n\n            /// <summary>\n            /// Invokes the delegate corresponding to the notification.\n            /// </summary>\n            /// <param name=\"onNext\">Delegate to invoke for an OnNext notification.</param>\n            /// <param name=\"onError\">Delegate to invoke for an OnError notification.</param>\n            /// <param name=\"onCompleted\">Delegate to invoke for an OnCompleted notification.</param>\n            public override void Accept(Action<T> onNext, Action<Exception> onError, Action onCompleted)\n            {\n                if (onNext == null)\n                    throw new ArgumentNullException(\"onNext\");\n                if (onError == null)\n                    throw new ArgumentNullException(\"onError\");\n                if (onCompleted == null)\n                    throw new ArgumentNullException(\"onCompleted\");\n\n                onNext(Value);\n            }\n\n            /// <summary>\n            /// Invokes the delegate corresponding to the notification and returns the produced result.\n            /// </summary>\n            /// <param name=\"onNext\">Delegate to invoke for an OnNext notification.</param>\n            /// <param name=\"onError\">Delegate to invoke for an OnError notification.</param>\n            /// <param name=\"onCompleted\">Delegate to invoke for an OnCompleted notification.</param>\n            /// <returns>Result produced by the observation.</returns>\n            public override TResult Accept<TResult>(Func<T, TResult> onNext, Func<Exception, TResult> onError, Func<TResult> onCompleted)\n            {\n                if (onNext == null)\n                    throw new ArgumentNullException(\"onNext\");\n                if (onError == null)\n                    throw new ArgumentNullException(\"onError\");\n                if (onCompleted == null)\n                    throw new ArgumentNullException(\"onCompleted\");\n\n                return onNext(Value);\n            }\n        }\n\n        /// <summary>\n        /// Represents an OnError notification to an observer.\n        /// </summary>\n#if !NO_DEBUGGER_ATTRIBUTES\n        [DebuggerDisplay(\"OnError({Exception})\")]\n#endif\n#if !NO_SERIALIZABLE\n        [Serializable]\n#endif\n        internal sealed class OnErrorNotification : Notification<T>\n        {\n            Exception exception;\n\n            /// <summary>\n            /// Constructs a notification of an exception.\n            /// </summary>\n            public OnErrorNotification(Exception exception)\n            {\n                this.exception = exception;\n            }\n\n            /// <summary>\n            /// Throws the exception.\n            /// </summary>\n            public override T Value { get { exception.Throw(); throw exception; } }\n\n            /// <summary>\n            /// Returns the exception.\n            /// </summary>\n            public override Exception Exception { get { return exception; } }\n\n            /// <summary>\n            /// Returns false.\n            /// </summary>\n            public override bool HasValue { get { return false; } }\n\n            /// <summary>\n            /// Returns NotificationKind.OnError.\n            /// </summary>\n            public override NotificationKind Kind { get { return NotificationKind.OnError; } }\n\n            /// <summary>\n            /// Returns the hash code for this instance.\n            /// </summary>\n            public override int GetHashCode()\n            {\n                return Exception.GetHashCode();\n            }\n\n            /// <summary>\n            /// Indicates whether this instance and other are equal.\n            /// </summary>\n            public override bool Equals(Notification<T> other)\n            {\n                if (Object.ReferenceEquals(this, other))\n                    return true;\n                if (Object.ReferenceEquals(other, null))\n                    return false;\n                if (other.Kind != NotificationKind.OnError)\n                    return false;\n                return Object.Equals(Exception, other.Exception);\n            }\n\n            /// <summary>\n            /// Returns a string representation of this instance.\n            /// </summary>\n            public override string ToString()\n            {\n                return String.Format(CultureInfo.CurrentCulture, \"OnError({0})\", Exception.GetType().FullName);\n            }\n\n            /// <summary>\n            /// Invokes the observer's method corresponding to the notification.\n            /// </summary>\n            /// <param name=\"observer\">Observer to invoke the notification on.</param>\n            public override void Accept(IObserver<T> observer)\n            {\n                if (observer == null)\n                    throw new ArgumentNullException(\"observer\");\n\n                observer.OnError(Exception);\n            }\n\n            /// <summary>\n            /// Invokes the observer's method corresponding to the notification and returns the produced result.\n            /// </summary>\n            /// <param name=\"observer\">Observer to invoke the notification on.</param>\n            /// <returns>Result produced by the observation.</returns>\n            public override TResult Accept<TResult>(IObserver<T, TResult> observer)\n            {\n                if (observer == null)\n                    throw new ArgumentNullException(\"observer\");\n\n                return observer.OnError(Exception);\n            }\n\n            /// <summary>\n            /// Invokes the delegate corresponding to the notification.\n            /// </summary>\n            /// <param name=\"onNext\">Delegate to invoke for an OnNext notification.</param>\n            /// <param name=\"onError\">Delegate to invoke for an OnError notification.</param>\n            /// <param name=\"onCompleted\">Delegate to invoke for an OnCompleted notification.</param>\n            public override void Accept(Action<T> onNext, Action<Exception> onError, Action onCompleted)\n            {\n                if (onNext == null)\n                    throw new ArgumentNullException(\"onNext\");\n                if (onError == null)\n                    throw new ArgumentNullException(\"onError\");\n                if (onCompleted == null)\n                    throw new ArgumentNullException(\"onCompleted\");\n\n                onError(Exception);\n            }\n\n            /// <summary>\n            /// Invokes the delegate corresponding to the notification and returns the produced result.\n            /// </summary>\n            /// <param name=\"onNext\">Delegate to invoke for an OnNext notification.</param>\n            /// <param name=\"onError\">Delegate to invoke for an OnError notification.</param>\n            /// <param name=\"onCompleted\">Delegate to invoke for an OnCompleted notification.</param>\n            /// <returns>Result produced by the observation.</returns>\n            public override TResult Accept<TResult>(Func<T, TResult> onNext, Func<Exception, TResult> onError, Func<TResult> onCompleted)\n            {\n                if (onNext == null)\n                    throw new ArgumentNullException(\"onNext\");\n                if (onError == null)\n                    throw new ArgumentNullException(\"onError\");\n                if (onCompleted == null)\n                    throw new ArgumentNullException(\"onCompleted\");\n\n                return onError(Exception);\n            }\n        }\n\n        /// <summary>\n        /// Represents an OnCompleted notification to an observer.\n        /// </summary>\n        [DebuggerDisplay(\"OnCompleted()\")]\n        [Serializable]\n        internal sealed class OnCompletedNotification : Notification<T>\n        {\n            /// <summary>\n            /// Constructs a notification of the end of a sequence.\n            /// </summary>\n            public OnCompletedNotification()\n            {\n            }\n\n            /// <summary>\n            /// Throws an InvalidOperationException.\n            /// </summary>\n            public override T Value { get { throw new InvalidOperationException(\"No Value\"); } }\n\n            /// <summary>\n            /// Returns null.\n            /// </summary>\n            public override Exception Exception { get { return null; } }\n\n            /// <summary>\n            /// Returns false.\n            /// </summary>\n            public override bool HasValue { get { return false; } }\n\n            /// <summary>\n            /// Returns NotificationKind.OnCompleted.\n            /// </summary>\n            public override NotificationKind Kind { get { return NotificationKind.OnCompleted; } }\n\n            /// <summary>\n            /// Returns the hash code for this instance.\n            /// </summary>\n            public override int GetHashCode()\n            {\n                return typeof(T).GetHashCode() ^ 8510;\n            }\n\n            /// <summary>\n            /// Indicates whether this instance and other are equal.\n            /// </summary>\n            public override bool Equals(Notification<T> other)\n            {\n                if (Object.ReferenceEquals(this, other))\n                    return true;\n                if (Object.ReferenceEquals(other, null))\n                    return false;\n                return other.Kind == NotificationKind.OnCompleted;\n            }\n\n            /// <summary>\n            /// Returns a string representation of this instance.\n            /// </summary>\n            public override string ToString()\n            {\n                return \"OnCompleted()\";\n            }\n\n            /// <summary>\n            /// Invokes the observer's method corresponding to the notification.\n            /// </summary>\n            /// <param name=\"observer\">Observer to invoke the notification on.</param>\n            public override void Accept(IObserver<T> observer)\n            {\n                if (observer == null)\n                    throw new ArgumentNullException(\"observer\");\n\n                observer.OnCompleted();\n            }\n\n            /// <summary>\n            /// Invokes the observer's method corresponding to the notification and returns the produced result.\n            /// </summary>\n            /// <param name=\"observer\">Observer to invoke the notification on.</param>\n            /// <returns>Result produced by the observation.</returns>\n            public override TResult Accept<TResult>(IObserver<T, TResult> observer)\n            {\n                if (observer == null)\n                    throw new ArgumentNullException(\"observer\");\n\n                return observer.OnCompleted();\n            }\n\n            /// <summary>\n            /// Invokes the delegate corresponding to the notification.\n            /// </summary>\n            /// <param name=\"onNext\">Delegate to invoke for an OnNext notification.</param>\n            /// <param name=\"onError\">Delegate to invoke for an OnError notification.</param>\n            /// <param name=\"onCompleted\">Delegate to invoke for an OnCompleted notification.</param>\n            public override void Accept(Action<T> onNext, Action<Exception> onError, Action onCompleted)\n            {\n                if (onNext == null)\n                    throw new ArgumentNullException(\"onNext\");\n                if (onError == null)\n                    throw new ArgumentNullException(\"onError\");\n                if (onCompleted == null)\n                    throw new ArgumentNullException(\"onCompleted\");\n\n                onCompleted();\n            }\n\n            /// <summary>\n            /// Invokes the delegate corresponding to the notification and returns the produced result.\n            /// </summary>\n            /// <param name=\"onNext\">Delegate to invoke for an OnNext notification.</param>\n            /// <param name=\"onError\">Delegate to invoke for an OnError notification.</param>\n            /// <param name=\"onCompleted\">Delegate to invoke for an OnCompleted notification.</param>\n            /// <returns>Result produced by the observation.</returns>\n            public override TResult Accept<TResult>(Func<T, TResult> onNext, Func<Exception, TResult> onError, Func<TResult> onCompleted)\n            {\n                if (onNext == null)\n                    throw new ArgumentNullException(\"onNext\");\n                if (onError == null)\n                    throw new ArgumentNullException(\"onError\");\n                if (onCompleted == null)\n                    throw new ArgumentNullException(\"onCompleted\");\n\n                return onCompleted();\n            }\n        }\n\n        /// <summary>\n        /// Determines whether the current Notification&lt;T&gt; object has the same observer message payload as a specified Notification&lt;T&gt; value.\n        /// </summary>\n        /// <param name=\"other\">An object to compare to the current Notification&lt;T&gt; object.</param>\n        /// <returns>true if both Notification&lt;T&gt; objects have the same observer message payload; otherwise, false.</returns>\n        /// <remarks>\n        /// Equality of Notification&lt;T&gt; objects is based on the equality of the observer message payload they represent, including the notification Kind and the Value or Exception (if any).\n        /// This means two Notification&lt;T&gt; objects can be equal even though they don't represent the same observer method call, but have the same Kind and have equal parameters passed to the observer method.\n        /// In case one wants to determine whether two Notification&lt;T&gt; objects represent the same observer method call, use Object.ReferenceEquals identity equality instead.\n        /// </remarks>\n        public abstract bool Equals(Notification<T> other);\n\n        /// <summary>\n        /// Determines whether the two specified Notification&lt;T&gt; objects have the same observer message payload.\n        /// </summary>\n        /// <param name=\"left\">The first Notification&lt;T&gt; to compare, or null.</param>\n        /// <param name=\"right\">The second Notification&lt;T&gt; to compare, or null.</param>\n        /// <returns>true if the first Notification&lt;T&gt; value has the same observer message payload as the second Notification&lt;T&gt; value; otherwise, false.</returns>\n        /// <remarks>\n        /// Equality of Notification&lt;T&gt; objects is based on the equality of the observer message payload they represent, including the notification Kind and the Value or Exception (if any).\n        /// This means two Notification&lt;T&gt; objects can be equal even though they don't represent the same observer method call, but have the same Kind and have equal parameters passed to the observer method.\n        /// In case one wants to determine whether two Notification&lt;T&gt; objects represent the same observer method call, use Object.ReferenceEquals identity equality instead.\n        /// </remarks>\n        public static bool operator ==(Notification<T> left, Notification<T> right)\n        {\n            if (object.ReferenceEquals(left, right))\n                return true;\n\n            if ((object)left == null || (object)right == null)\n                return false;\n\n            return left.Equals(right);\n        }\n\n        /// <summary>\n        /// Determines whether the two specified Notification&lt;T&gt; objects have a different observer message payload.\n        /// </summary>\n        /// <param name=\"left\">The first Notification&lt;T&gt; to compare, or null.</param>\n        /// <param name=\"right\">The second Notification&lt;T&gt; to compare, or null.</param>\n        /// <returns>true if the first Notification&lt;T&gt; value has a different observer message payload as the second Notification&lt;T&gt; value; otherwise, false.</returns>\n        /// <remarks>\n        /// Equality of Notification&lt;T&gt; objects is based on the equality of the observer message payload they represent, including the notification Kind and the Value or Exception (if any).\n        /// This means two Notification&lt;T&gt; objects can be equal even though they don't represent the same observer method call, but have the same Kind and have equal parameters passed to the observer method.\n        /// In case one wants to determine whether two Notification&lt;T&gt; objects represent a different observer method call, use Object.ReferenceEquals identity equality instead.\n        /// </remarks>\n        public static bool operator !=(Notification<T> left, Notification<T> right)\n        {\n            return !(left == right);\n        }\n\n        /// <summary>\n        /// Determines whether the specified System.Object is equal to the current Notification&lt;T&gt;.\n        /// </summary>\n        /// <param name=\"obj\">The System.Object to compare with the current Notification&lt;T&gt;.</param>\n        /// <returns>true if the specified System.Object is equal to the current Notification&lt;T&gt;; otherwise, false.</returns>\n        /// <remarks>\n        /// Equality of Notification&lt;T&gt; objects is based on the equality of the observer message payload they represent, including the notification Kind and the Value or Exception (if any).\n        /// This means two Notification&lt;T&gt; objects can be equal even though they don't represent the same observer method call, but have the same Kind and have equal parameters passed to the observer method.\n        /// In case one wants to determine whether two Notification&lt;T&gt; objects represent the same observer method call, use Object.ReferenceEquals identity equality instead.\n        /// </remarks>\n        public override bool Equals(object obj)\n        {\n            return Equals(obj as Notification<T>);\n        }\n\n        /// <summary>\n        /// Invokes the observer's method corresponding to the notification.\n        /// </summary>\n        /// <param name=\"observer\">Observer to invoke the notification on.</param>\n        public abstract void Accept(IObserver<T> observer);\n\n        /// <summary>\n        /// Invokes the observer's method corresponding to the notification and returns the produced result.\n        /// </summary>\n        /// <typeparam name=\"TResult\">The type of the result returned from the observer's notification handlers.</typeparam>\n        /// <param name=\"observer\">Observer to invoke the notification on.</param>\n        /// <returns>Result produced by the observation.</returns>\n        public abstract TResult Accept<TResult>(IObserver<T, TResult> observer);\n\n        /// <summary>\n        /// Invokes the delegate corresponding to the notification.\n        /// </summary>\n        /// <param name=\"onNext\">Delegate to invoke for an OnNext notification.</param>\n        /// <param name=\"onError\">Delegate to invoke for an OnError notification.</param>\n        /// <param name=\"onCompleted\">Delegate to invoke for an OnCompleted notification.</param>\n        public abstract void Accept(Action<T> onNext, Action<Exception> onError, Action onCompleted);\n\n        /// <summary>\n        /// Invokes the delegate corresponding to the notification and returns the produced result.\n        /// </summary>\n        /// <typeparam name=\"TResult\">The type of the result returned from the notification handler delegates.</typeparam>\n        /// <param name=\"onNext\">Delegate to invoke for an OnNext notification.</param>\n        /// <param name=\"onError\">Delegate to invoke for an OnError notification.</param>\n        /// <param name=\"onCompleted\">Delegate to invoke for an OnCompleted notification.</param>\n        /// <returns>Result produced by the observation.</returns>\n        public abstract TResult Accept<TResult>(Func<T, TResult> onNext, Func<Exception, TResult> onError, Func<TResult> onCompleted);\n\n        /// <summary>\n        /// Returns an observable sequence with a single notification, using the immediate scheduler.\n        /// </summary>\n        /// <returns>The observable sequence that surfaces the behavior of the notification upon subscription.</returns>\n        public IObservable<T> ToObservable()\n        {\n            return this.ToObservable(Scheduler.Immediate);\n        }\n\n        /// <summary>\n        /// Returns an observable sequence with a single notification.\n        /// </summary>\n        /// <param name=\"scheduler\">Scheduler to send out the notification calls on.</param>\n        /// <returns>The observable sequence that surfaces the behavior of the notification upon subscription.</returns>\n        public IObservable<T> ToObservable(IScheduler scheduler)\n        {\n            if (scheduler == null)\n                throw new ArgumentNullException(\"scheduler\");\n\n            return Observable.Create<T>(observer => scheduler.Schedule(() =>\n            {\n                this.Accept(observer);\n                if (this.Kind == NotificationKind.OnNext)\n                    observer.OnCompleted();\n            }));\n        }\n    }\n\n    /// <summary>\n    /// Provides a set of static methods for constructing notifications.\n    /// </summary>\n    public static class Notification\n    {\n        /// <summary>\n        /// Creates an object that represents an OnNext notification to an observer.\n        /// </summary>\n        /// <typeparam name=\"T\">The type of the elements received by the observer. Upon dematerialization of the notifications into an observable sequence, this type is used as the element type for the sequence.</typeparam>\n        /// <param name=\"value\">The value contained in the notification.</param>\n        /// <returns>The OnNext notification containing the value.</returns>\n        public static Notification<T> CreateOnNext<T>(T value)\n        {\n            return new Notification<T>.OnNextNotification(value);\n        }\n\n        /// <summary>\n        /// Creates an object that represents an OnError notification to an observer.\n        /// </summary>\n        /// <typeparam name=\"T\">The type of the elements received by the observer. Upon dematerialization of the notifications into an observable sequence, this type is used as the element type for the sequence.</typeparam>\n        /// <param name=\"error\">The exception contained in the notification.</param>\n        /// <returns>The OnError notification containing the exception.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"error\"/> is null.</exception>\n        public static Notification<T> CreateOnError<T>(Exception error)\n        {\n            if (error == null)\n                throw new ArgumentNullException(\"error\");\n\n            return new Notification<T>.OnErrorNotification(error);\n        }\n\n        /// <summary>\n        /// Creates an object that represents an OnCompleted notification to an observer.\n        /// </summary>\n        /// <typeparam name=\"T\">The type of the elements received by the observer. Upon dematerialization of the notifications into an observable sequence, this type is used as the element type for the sequence.</typeparam>\n        /// <returns>The OnCompleted notification.</returns>\n        public static Notification<T> CreateOnCompleted<T>()\n        {\n            return new Notification<T>.OnCompletedNotification();\n        }\n    }\n}\n\n#pragma warning restore 0659\n#pragma warning restore 0661"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notification.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 169d02559aa6b3e459fbae10f2acecd8\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notifiers/BooleanNotifier.cs",
    "content": "﻿﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Notify boolean flag.\n    /// </summary>\n    public class BooleanNotifier : IObservable<bool>\n    {\n        readonly Subject<bool> boolTrigger = new Subject<bool>();\n\n        bool boolValue;\n        /// <summary>Current flag value</summary>\n        public bool Value\n        {\n            get { return boolValue; }\n            set\n            {\n                boolValue = value;\n                boolTrigger.OnNext(value);\n            }\n        }\n\n        /// <summary>\n        /// Setup initial flag.\n        /// </summary>\n        public BooleanNotifier(bool initialValue = false)\n        {\n            this.Value = initialValue;\n        }\n\n        /// <summary>\n        /// Set and raise true if current value isn't true.\n        /// </summary>\n        public void TurnOn()\n        {\n            if (Value != true)\n            {\n                Value = true;\n            }\n        }\n\n        /// <summary>\n        /// Set and raise false if current value isn't false.\n        /// </summary>\n        public void TurnOff()\n        {\n            if (Value != false)\n            {\n                Value = false;\n            }\n        }\n\n        /// <summary>\n        /// Set and raise reverse value.\n        /// </summary>\n        public void SwitchValue()\n        {\n            Value = !Value;\n        }\n\n\n        /// <summary>\n        /// Subscribe observer.\n        /// </summary>\n        public IDisposable Subscribe(IObserver<bool> observer)\n        {\n            return boolTrigger.Subscribe(observer);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notifiers/BooleanNotifier.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 5ee30c0abdddd7241acbe24df0637678\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notifiers/CountNotifier.cs",
    "content": "﻿﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace UniRx\n{\n    /// <summary>Event kind of CountNotifier.</summary>\n    public enum CountChangedStatus\n    {\n        /// <summary>Count incremented.</summary>\n        Increment,\n        /// <summary>Count decremented.</summary>\n        Decrement,\n        /// <summary>Count is zero.</summary>\n        Empty,\n        /// <summary>Count arrived max.</summary>\n        Max\n    }\n\n    /// <summary>\n    /// Notify event of count flag.\n    /// </summary>\n    public class CountNotifier : IObservable<CountChangedStatus>\n    {\n        readonly object lockObject = new object();\n        readonly Subject<CountChangedStatus> statusChanged = new Subject<CountChangedStatus>();\n        readonly int max;\n\n        public int Max { get { return max; } }\n        public int Count { get; private set; }\n\n        /// <summary>\n        /// Setup max count of signal.\n        /// </summary>\n        public CountNotifier(int max = int.MaxValue)\n        {\n            if (max <= 0)\n            {\n                throw new ArgumentException(\"max\");\n            }\n\n            this.max = max;\n        }\n\n        /// <summary>\n        /// Increment count and notify status.\n        /// </summary>\n        public IDisposable Increment(int incrementCount = 1)\n        {\n            if (incrementCount < 0)\n            {\n                throw new ArgumentException(\"incrementCount\");\n            }\n\n            lock (lockObject)\n            {\n                if (Count == Max) return Disposable.Empty;\n                else if (incrementCount + Count > Max) Count = Max;\n                else Count += incrementCount;\n\n                statusChanged.OnNext(CountChangedStatus.Increment);\n                if (Count == Max) statusChanged.OnNext(CountChangedStatus.Max);\n\n                return Disposable.Create(() => this.Decrement(incrementCount));\n            }\n        }\n\n        /// <summary>\n        /// Decrement count and notify status.\n        /// </summary>\n        public void Decrement(int decrementCount = 1)\n        {\n            if (decrementCount < 0)\n            {\n                throw new ArgumentException(\"decrementCount\");\n            }\n\n            lock (lockObject)\n            {\n                if (Count == 0) return;\n                else if (Count - decrementCount < 0) Count = 0;\n                else Count -= decrementCount;\n\n                statusChanged.OnNext(CountChangedStatus.Decrement);\n                if (Count == 0) statusChanged.OnNext(CountChangedStatus.Empty);\n            }\n        }\n\n        /// <summary>\n        /// Subscribe observer.\n        /// </summary>\n        public IDisposable Subscribe(IObserver<CountChangedStatus> observer)\n        {\n            return statusChanged.Subscribe(observer);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notifiers/CountNotifier.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 503af1c1dc279164e83011be5110633e\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notifiers/MessageBroker.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.InternalUtil;\n\nnamespace UniRx\n{\n    public interface IMessagePublisher\n    {\n        /// <summary>\n        /// Send Message to all receiver.\n        /// </summary>\n        void Publish<T>(T message);\n    }\n\n    public interface IMessageReceiver\n    {\n        /// <summary>\n        /// Subscribe typed message.\n        /// </summary>\n        IObservable<T> Receive<T>();\n    }\n\n    public interface IMessageBroker : IMessagePublisher, IMessageReceiver\n    {\n    }\n\n    public interface IAsyncMessagePublisher\n    {\n        /// <summary>\n        /// Send Message to all receiver and await complete.\n        /// </summary>\n        IObservable<Unit> PublishAsync<T>(T message);\n    }\n\n    public interface IAsyncMessageReceiver\n    {\n        /// <summary>\n        /// Subscribe typed message.\n        /// </summary>\n        IDisposable Subscribe<T>(Func<T, IObservable<Unit>> asyncMessageReceiver);\n    }\n\n    public interface IAsyncMessageBroker : IAsyncMessagePublisher, IAsyncMessageReceiver\n    {\n    }\n\n    /// <summary>\n    /// In-Memory PubSub filtered by Type.\n    /// </summary>\n    public class MessageBroker : IMessageBroker, IDisposable\n    {\n        /// <summary>\n        /// MessageBroker in Global scope.\n        /// </summary>\n        public static readonly IMessageBroker Default = new MessageBroker();\n\n        bool isDisposed = false;\n        readonly Dictionary<Type, object> notifiers = new Dictionary<Type, object>();\n\n        public void Publish<T>(T message)\n        {\n            object notifier;\n            lock (notifiers)\n            {\n                if (isDisposed) return;\n\n                if (!notifiers.TryGetValue(typeof(T), out notifier))\n                {\n                    return;\n                }\n            }\n            ((ISubject<T>)notifier).OnNext(message);\n        }\n\n        public IObservable<T> Receive<T>()\n        {\n            object notifier;\n            lock (notifiers)\n            {\n                if (isDisposed) throw new ObjectDisposedException(\"MessageBroker\");\n\n                if (!notifiers.TryGetValue(typeof(T), out notifier))\n                {\n                    ISubject<T> n = new Subject<T>().Synchronize();\n                    notifier = n;\n                    notifiers.Add(typeof(T), notifier);\n                }\n            }\n\n            return ((IObservable<T>)notifier).AsObservable();\n        }\n\n        public void Dispose()\n        {\n            lock (notifiers)\n            {\n                if (!isDisposed)\n                {\n                    isDisposed = true;\n                    notifiers.Clear();\n                }\n            }\n        }\n    }\n\n    /// <summary>\n    /// In-Memory PubSub filtered by Type.\n    /// </summary>\n    public class AsyncMessageBroker : IAsyncMessageBroker, IDisposable\n    {\n        /// <summary>\n        /// AsyncMessageBroker in Global scope.\n        /// </summary>\n        public static readonly IAsyncMessageBroker Default = new AsyncMessageBroker();\n\n        bool isDisposed = false;\n        readonly Dictionary<Type, object> notifiers = new Dictionary<Type, object>();\n\n        public IObservable<Unit> PublishAsync<T>(T message)\n        {\n            UniRx.InternalUtil.ImmutableList<Func<T, IObservable<Unit>>> notifier;\n            lock (notifiers)\n            {\n                if (isDisposed) throw new ObjectDisposedException(\"AsyncMessageBroker\");\n\n                object _notifier;\n                if (notifiers.TryGetValue(typeof(T), out _notifier))\n                {\n                    notifier = (UniRx.InternalUtil.ImmutableList<Func<T, IObservable<Unit>>>)_notifier;\n                }\n                else\n                {\n                    return Observable.ReturnUnit();\n                }\n            }\n\n            var data = notifier.Data;\n            var awaiter = new IObservable<Unit>[data.Length];\n            for (int i = 0; i < data.Length; i++)\n            {\n                awaiter[i] = data[i].Invoke(message);\n            }\n            return Observable.WhenAll(awaiter);\n        }\n\n        public IDisposable Subscribe<T>(Func<T, IObservable<Unit>> asyncMessageReceiver)\n        {\n            lock (notifiers)\n            {\n                if (isDisposed) throw new ObjectDisposedException(\"AsyncMessageBroker\");\n\n                object _notifier;\n                if (!notifiers.TryGetValue(typeof(T), out _notifier))\n                {\n                    var notifier = UniRx.InternalUtil.ImmutableList<Func<T, IObservable<Unit>>>.Empty;\n                    notifier = notifier.Add(asyncMessageReceiver);\n                    notifiers.Add(typeof(T), notifier);\n                }\n                else\n                {\n                    var notifier = (ImmutableList<Func<T, IObservable<Unit>>>)_notifier;\n                    notifier = notifier.Add(asyncMessageReceiver);\n                    notifiers[typeof(T)] = notifier;\n                }\n            }\n\n            return new Subscription<T>(this, asyncMessageReceiver);\n        }\n\n        public void Dispose()\n        {\n            lock (notifiers)\n            {\n                if (!isDisposed)\n                {\n                    isDisposed = true;\n                    notifiers.Clear();\n                }\n            }\n        }\n\n        class Subscription<T> : IDisposable\n        {\n            readonly AsyncMessageBroker parent;\n            readonly Func<T, IObservable<Unit>> asyncMessageReceiver;\n\n            public Subscription(AsyncMessageBroker parent, Func<T, IObservable<Unit>> asyncMessageReceiver)\n            {\n                this.parent = parent;\n                this.asyncMessageReceiver = asyncMessageReceiver;\n            }\n\n            public void Dispose()\n            {\n                lock (parent.notifiers)\n                {\n                    object _notifier;\n                    if (parent.notifiers.TryGetValue(typeof(T), out _notifier))\n                    {\n                        var notifier = (ImmutableList<Func<T, IObservable<Unit>>>)_notifier;\n                        notifier = notifier.Remove(asyncMessageReceiver);\n\n                        parent.notifiers[typeof(T)] = notifier;\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notifiers/MessageBroker.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9dc5e3c48d083d4418ab67287f050267\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notifiers/ScheduledNotifier.cs",
    "content": "﻿using System;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Notify value on setuped scheduler.\n    /// </summary>\n    public class ScheduledNotifier<T> : IObservable<T>, IProgress<T>\n    {\n        readonly IScheduler scheduler;\n        readonly Subject<T> trigger = new Subject<T>();\n\n        /// <summary>\n        /// Use scheduler is Scheduler.DefaultSchedulers.ConstantTimeOperations.\n        /// </summary>\n        public ScheduledNotifier()\n        {\n            this.scheduler = Scheduler.DefaultSchedulers.ConstantTimeOperations;\n        }\n        /// <summary>\n        /// Use scheduler is argument's scheduler.\n        /// </summary>\n        public ScheduledNotifier(IScheduler scheduler)\n        {\n            if (scheduler == null)\n            {\n                throw new ArgumentNullException(\"scheduler\");\n            }\n\n            this.scheduler = scheduler;\n        }\n\n        /// <summary>\n        /// Push value to subscribers on setuped scheduler.\n        /// </summary>\n        public void Report(T value)\n        {\n            scheduler.Schedule(() => trigger.OnNext(value));\n        }\n\n        /// <summary>\n        /// Push value to subscribers on setuped scheduler.\n        /// </summary>\n        public IDisposable Report(T value, TimeSpan dueTime)\n        {\n            var cancel = scheduler.Schedule(dueTime, () => trigger.OnNext(value));\n            return cancel;\n        }\n\n        /// <summary>\n        /// Push value to subscribers on setuped scheduler.\n        /// </summary>\n        public IDisposable Report(T value, DateTimeOffset dueTime)\n        {\n            var cancel = scheduler.Schedule(dueTime, () => trigger.OnNext(value));\n            return cancel;\n        }\n\n        /// <summary>\n        /// Subscribe observer.\n        /// </summary>\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            if (observer == null)\n            {\n                throw new ArgumentNullException(\"observer\");\n            }\n\n            return trigger.Subscribe(observer);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notifiers/ScheduledNotifier.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e6f53242e655cbe4e889538216dc9e17\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Notifiers.meta",
    "content": "fileFormatVersion: 2\nguid: 63388f4f94a67e34590e2167d45e4046\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Aggregate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        public static IObservable<TSource> Scan<TSource>(this IObservable<TSource> source, Func<TSource, TSource, TSource> accumulator)\n        {\n            return new ScanObservable<TSource>(source, accumulator);\n        }\n\n        public static IObservable<TAccumulate> Scan<TSource, TAccumulate>(this IObservable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> accumulator)\n        {\n            return new ScanObservable<TSource, TAccumulate>(source, seed, accumulator);\n        }\n\n        public static IObservable<TSource> Aggregate<TSource>(this IObservable<TSource> source, Func<TSource, TSource, TSource> accumulator)\n        {\n            return new AggregateObservable<TSource>(source, accumulator);\n        }\n\n        public static IObservable<TAccumulate> Aggregate<TSource, TAccumulate>(this IObservable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> accumulator)\n        {\n            return new AggregateObservable<TSource, TAccumulate>(source, seed, accumulator);\n        }\n\n        public static IObservable<TResult> Aggregate<TSource, TAccumulate, TResult>(this IObservable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> accumulator, Func<TAccumulate, TResult> resultSelector)\n        {\n            return new AggregateObservable<TSource, TAccumulate, TResult>(source, seed, accumulator, resultSelector);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Aggregate.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 82339dddb2a9f944785f1555b83d667c\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Awaiter.cs",
    "content": "﻿#if (NET_4_6 || NET_STANDARD_2_0)\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        /// <summary>\n        /// Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty.\n        /// This operation subscribes to the observable sequence, making it hot.\n        /// </summary>\n        /// <param name=\"source\">Source sequence to await.</param>\n        public static AsyncSubject<TSource> GetAwaiter<TSource>(this IObservable<TSource> source)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            \n            return RunAsync(source, CancellationToken.None);\n        }\n\n        /// <summary>\n        /// Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty.\n        /// This operation subscribes to the observable sequence, making it hot.\n        /// </summary>\n        /// <param name=\"source\">Source sequence to await.</param>\n        public static AsyncSubject<TSource> GetAwaiter<TSource>(this IConnectableObservable<TSource> source)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n\n            return RunAsync(source, CancellationToken.None);\n        }\n\n        /// <summary>\n        /// Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty.\n        /// This operation subscribes to the observable sequence, making it hot.\n        /// </summary>\n        /// <param name=\"source\">Source sequence to await.</param>\n        /// <param name=\"cancellationToken\">Cancellation token.</param>\n        public static AsyncSubject<TSource> GetAwaiter<TSource>(this IObservable<TSource> source, CancellationToken cancellationToken)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n\n            return RunAsync(source, cancellationToken);\n        }\n\n        /// <summary>\n        /// Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty.\n        /// This operation subscribes to the observable sequence, making it hot.\n        /// </summary>\n        /// <param name=\"source\">Source sequence to await.</param>\n        /// <param name=\"cancellationToken\">Cancellation token.</param>\n        public static AsyncSubject<TSource> GetAwaiter<TSource>(this IConnectableObservable<TSource> source, CancellationToken cancellationToken)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n\n            return RunAsync(source, cancellationToken);\n        }\n\n        static AsyncSubject<TSource> RunAsync<TSource>(IObservable<TSource> source, CancellationToken cancellationToken)\n        {\n            var s = new AsyncSubject<TSource>();\n\n            if (cancellationToken.IsCancellationRequested)\n            {\n                return Cancel(s, cancellationToken);\n            }\n\n            var d = source.Subscribe(s);\n\n            if (cancellationToken.CanBeCanceled)\n            {\n                RegisterCancelation(s, d, cancellationToken);\n            }\n\n            return s;\n        }\n\n        static AsyncSubject<TSource> RunAsync<TSource>(IConnectableObservable<TSource> source, CancellationToken cancellationToken)\n        {\n            var s = new AsyncSubject<TSource>();\n\n            if (cancellationToken.IsCancellationRequested)\n            {\n                return Cancel(s, cancellationToken);\n            }\n\n            var d = source.Subscribe(s);\n            var c = source.Connect();\n\n            if (cancellationToken.CanBeCanceled)\n            {\n                RegisterCancelation(s, StableCompositeDisposable.Create(d, c), cancellationToken);\n            }\n\n            return s;\n        }\n\n        static AsyncSubject<T> Cancel<T>(AsyncSubject<T> subject, CancellationToken cancellationToken)\n        {\n            subject.OnError(new OperationCanceledException(cancellationToken));\n            return subject;\n        }\n\n        static void RegisterCancelation<T>(AsyncSubject<T> subject, IDisposable subscription, CancellationToken token)\n        {\n            //\n            // Separate method used to avoid heap allocation of closure when no cancellation is needed,\n            // e.g. when CancellationToken.None is provided to the RunAsync overloads.\n            //\n\n            var ctr = token.Register(() =>\n            {\n                subscription.Dispose();\n                Cancel(subject, token);\n            });\n\n            //\n            // No null-check for ctr is needed:\n            //\n            // - CancellationTokenRegistration is a struct\n            // - Registration will succeed 99% of the time, no warranting an attempt to avoid spurious Subscribe calls\n            //\n            subject.Subscribe(Stubs<T>.Ignore, _ => ctr.Dispose(), ctr.Dispose);\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Awaiter.cs.meta",
    "content": "fileFormatVersion: 2\nguid: ec3ea3f22d061964c8f06eb9ea78ec42\ntimeCreated: 1475137543\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Binding.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        public static IConnectableObservable<T> Multicast<T>(this IObservable<T> source, ISubject<T> subject)\n        {\n            return new ConnectableObservable<T>(source, subject);\n        }\n\n        public static IConnectableObservable<T> Publish<T>(this IObservable<T> source)\n        {\n            return source.Multicast(new Subject<T>());\n        }\n\n        public static IConnectableObservable<T> Publish<T>(this IObservable<T> source, T initialValue)\n        {\n            return source.Multicast(new BehaviorSubject<T>(initialValue));\n        }\n\n        public static IConnectableObservable<T> PublishLast<T>(this IObservable<T> source)\n        {\n            return source.Multicast(new AsyncSubject<T>());\n        }\n\n        public static IConnectableObservable<T> Replay<T>(this IObservable<T> source)\n        {\n            return source.Multicast(new ReplaySubject<T>());\n        }\n\n        public static IConnectableObservable<T> Replay<T>(this IObservable<T> source, IScheduler scheduler)\n        {\n            return source.Multicast(new ReplaySubject<T>(scheduler));\n        }\n\n        public static IConnectableObservable<T> Replay<T>(this IObservable<T> source, int bufferSize)\n        {\n            return source.Multicast(new ReplaySubject<T>(bufferSize));\n        }\n\n        public static IConnectableObservable<T> Replay<T>(this IObservable<T> source, int bufferSize, IScheduler scheduler)\n        {\n            return source.Multicast(new ReplaySubject<T>(bufferSize, scheduler));\n        }\n\n        public static IConnectableObservable<T> Replay<T>(this IObservable<T> source, TimeSpan window)\n        {\n            return source.Multicast(new ReplaySubject<T>(window));\n        }\n\n        public static IConnectableObservable<T> Replay<T>(this IObservable<T> source, TimeSpan window, IScheduler scheduler)\n        {\n            return source.Multicast(new ReplaySubject<T>(window, scheduler));\n        }\n\n        public static IConnectableObservable<T> Replay<T>(this IObservable<T> source, int bufferSize, TimeSpan window, IScheduler scheduler)\n        {\n            return source.Multicast(new ReplaySubject<T>(bufferSize, window, scheduler));\n        }\n\n        public static IObservable<T> RefCount<T>(this IConnectableObservable<T> source)\n        {\n            return new RefCountObservable<T>(source);\n        }\n\n        /// <summary>\n        /// same as Publish().RefCount()\n        /// </summary>\n        public static IObservable<T> Share<T>(this IObservable<T> source)\n        {\n            return source.Publish().RefCount();\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Binding.cs.meta",
    "content": "fileFormatVersion: 2\nguid: bb11a562e64264645b76ad3a8d15d966\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Blocking.cs",
    "content": "﻿using System;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        public static T Wait<T>(this IObservable<T> source)\n        {\n            return new UniRx.Operators.Wait<T>(source, InfiniteTimeSpan).Run();\n        }\n\n        public static T Wait<T>(this IObservable<T> source, TimeSpan timeout)\n        {\n            return new UniRx.Operators.Wait<T>(source, timeout).Run();\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Blocking.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4a05ec8aabbdba24388b7b2ae6c4a474\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Concatenate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Linq;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    // concatenate multiple observable\n    // merge, concat, zip...\n    public static partial class Observable\n    {\n        static IEnumerable<IObservable<T>> CombineSources<T>(IObservable<T> first, IObservable<T>[] seconds)\n        {\n            yield return first;\n            for (int i = 0; i < seconds.Length; i++)\n            {\n                yield return seconds[i];\n            }\n        }\n\n        public static IObservable<TSource> Concat<TSource>(params IObservable<TSource>[] sources)\n        {\n            if (sources == null) throw new ArgumentNullException(\"sources\");\n\n            return new ConcatObservable<TSource>(sources);\n        }\n\n        public static IObservable<TSource> Concat<TSource>(this IEnumerable<IObservable<TSource>> sources)\n        {\n            if (sources == null) throw new ArgumentNullException(\"sources\");\n\n            return new ConcatObservable<TSource>(sources);\n        }\n\n        public static IObservable<TSource> Concat<TSource>(this IObservable<IObservable<TSource>> sources)\n        {\n            return sources.Merge(maxConcurrent: 1);\n        }\n\n        public static IObservable<TSource> Concat<TSource>(this IObservable<TSource> first, params IObservable<TSource>[] seconds)\n        {\n            if (first == null) throw new ArgumentNullException(\"first\");\n            if (seconds == null) throw new ArgumentNullException(\"seconds\");\n\n            var concat = first as ConcatObservable<TSource>;\n            if (concat != null)\n            {\n                return concat.Combine(seconds);\n            }\n\n            return Concat(CombineSources(first, seconds));\n        }\n\n        public static IObservable<TSource> Merge<TSource>(this IEnumerable<IObservable<TSource>> sources)\n        {\n            return Merge(sources, Scheduler.DefaultSchedulers.ConstantTimeOperations);\n        }\n\n        public static IObservable<TSource> Merge<TSource>(this IEnumerable<IObservable<TSource>> sources, IScheduler scheduler)\n        {\n            return new MergeObservable<TSource>(sources.ToObservable(scheduler), scheduler == Scheduler.CurrentThread);\n        }\n\n        public static IObservable<TSource> Merge<TSource>(this IEnumerable<IObservable<TSource>> sources, int maxConcurrent)\n        {\n            return Merge(sources, maxConcurrent, Scheduler.DefaultSchedulers.ConstantTimeOperations);\n        }\n\n        public static IObservable<TSource> Merge<TSource>(this IEnumerable<IObservable<TSource>> sources, int maxConcurrent, IScheduler scheduler)\n        {\n            return new MergeObservable<TSource>(sources.ToObservable(scheduler), maxConcurrent, scheduler == Scheduler.CurrentThread);\n        }\n\n        public static IObservable<TSource> Merge<TSource>(params IObservable<TSource>[] sources)\n        {\n            return Merge(Scheduler.DefaultSchedulers.ConstantTimeOperations, sources);\n        }\n\n        public static IObservable<TSource> Merge<TSource>(IScheduler scheduler, params IObservable<TSource>[] sources)\n        {\n            return new MergeObservable<TSource>(sources.ToObservable(scheduler), scheduler == Scheduler.CurrentThread);\n        }\n\n        public static IObservable<T> Merge<T>(this IObservable<T> first, params IObservable<T>[] seconds)\n        {\n            return Merge(CombineSources(first, seconds));\n        }\n\n        public static IObservable<T> Merge<T>(this IObservable<T> first, IObservable<T> second, IScheduler scheduler)\n        {\n            return Merge(scheduler, new[] { first, second });\n        }\n\n        public static IObservable<T> Merge<T>(this IObservable<IObservable<T>> sources)\n        {\n            return new MergeObservable<T>(sources, false);\n        }\n\n        public static IObservable<T> Merge<T>(this IObservable<IObservable<T>> sources, int maxConcurrent)\n        {\n            return new MergeObservable<T>(sources, maxConcurrent, false);\n        }\n\n        public static IObservable<TResult> Zip<TLeft, TRight, TResult>(this IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)\n        {\n            return new ZipObservable<TLeft, TRight, TResult>(left, right, selector);\n        }\n\n        public static IObservable<IList<T>> Zip<T>(this IEnumerable<IObservable<T>> sources)\n        {\n            return Zip(sources.ToArray());\n        }\n\n        public static IObservable<IList<T>> Zip<T>(params IObservable<T>[] sources)\n        {\n            return new ZipObservable<T>(sources);\n        }\n\n        public static IObservable<TR> Zip<T1, T2, T3, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, ZipFunc<T1, T2, T3, TR> resultSelector)\n        {\n            return new ZipObservable<T1, T2, T3, TR>(source1, source2, source3, resultSelector);\n        }\n\n        public static IObservable<TR> Zip<T1, T2, T3, T4, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, ZipFunc<T1, T2, T3, T4, TR> resultSelector)\n        {\n            return new ZipObservable<T1, T2, T3, T4, TR>(source1, source2, source3, source4, resultSelector);\n        }\n\n        public static IObservable<TR> Zip<T1, T2, T3, T4, T5, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, ZipFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n        {\n            return new ZipObservable<T1, T2, T3, T4, T5, TR>(source1, source2, source3, source4, source5, resultSelector);\n        }\n\n        public static IObservable<TR> Zip<T1, T2, T3, T4, T5, T6, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, ZipFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n        {\n            return new ZipObservable<T1, T2, T3, T4, T5, T6, TR>(source1, source2, source3, source4, source5, source6, resultSelector);\n        }\n\n        public static IObservable<TR> Zip<T1, T2, T3, T4, T5, T6, T7, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, ZipFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n        {\n            return new ZipObservable<T1, T2, T3, T4, T5, T6, T7, TR>(source1, source2, source3, source4, source5, source6, source7, resultSelector);\n        }\n\n        public static IObservable<TResult> CombineLatest<TLeft, TRight, TResult>(this IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)\n        {\n            return new CombineLatestObservable<TLeft, TRight, TResult>(left, right, selector);\n        }\n\n        public static IObservable<IList<T>> CombineLatest<T>(this IEnumerable<IObservable<T>> sources)\n        {\n            return CombineLatest(sources.ToArray());\n        }\n\n        public static IObservable<IList<TSource>> CombineLatest<TSource>(params IObservable<TSource>[] sources)\n        {\n            return new CombineLatestObservable<TSource>(sources);\n        }\n\n        public static IObservable<TR> CombineLatest<T1, T2, T3, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, CombineLatestFunc<T1, T2, T3, TR> resultSelector)\n        {\n            return new CombineLatestObservable<T1, T2, T3, TR>(source1, source2, source3, resultSelector);\n        }\n\n        public static IObservable<TR> CombineLatest<T1, T2, T3, T4, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, CombineLatestFunc<T1, T2, T3, T4, TR> resultSelector)\n        {\n            return new CombineLatestObservable<T1, T2, T3, T4, TR>(source1, source2, source3, source4, resultSelector);\n        }\n\n        public static IObservable<TR> CombineLatest<T1, T2, T3, T4, T5, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, CombineLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n        {\n            return new CombineLatestObservable<T1, T2, T3, T4, T5, TR>(source1, source2, source3, source4, source5, resultSelector);\n        }\n\n        public static IObservable<TR> CombineLatest<T1, T2, T3, T4, T5, T6, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, CombineLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n        {\n            return new CombineLatestObservable<T1, T2, T3, T4, T5, T6, TR>(source1, source2, source3, source4, source5, source6, resultSelector);\n        }\n\n        public static IObservable<TR> CombineLatest<T1, T2, T3, T4, T5, T6, T7, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, CombineLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n        {\n            return new CombineLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR>(source1, source2, source3, source4, source5, source6, source7, resultSelector);\n        }\n\n        public static IObservable<TResult> ZipLatest<TLeft, TRight, TResult>(this IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)\n        {\n            return new ZipLatestObservable<TLeft, TRight, TResult>(left, right, selector);\n        }\n\n        public static IObservable<IList<T>> ZipLatest<T>(this IEnumerable<IObservable<T>> sources)\n        {\n            return ZipLatest(sources.ToArray());\n        }\n\n        public static IObservable<IList<TSource>> ZipLatest<TSource>(params IObservable<TSource>[] sources)\n        {\n            return new ZipLatestObservable<TSource>(sources);\n        }\n\n        public static IObservable<TR> ZipLatest<T1, T2, T3, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, ZipLatestFunc<T1, T2, T3, TR> resultSelector)\n        {\n            return new ZipLatestObservable<T1, T2, T3, TR>(source1, source2, source3, resultSelector);\n        }\n\n        public static IObservable<TR> ZipLatest<T1, T2, T3, T4, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, ZipLatestFunc<T1, T2, T3, T4, TR> resultSelector)\n        {\n            return new ZipLatestObservable<T1, T2, T3, T4, TR>(source1, source2, source3, source4, resultSelector);\n        }\n\n        public static IObservable<TR> ZipLatest<T1, T2, T3, T4, T5, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, ZipLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n        {\n            return new ZipLatestObservable<T1, T2, T3, T4, T5, TR>(source1, source2, source3, source4, source5, resultSelector);\n        }\n\n        public static IObservable<TR> ZipLatest<T1, T2, T3, T4, T5, T6, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, ZipLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n        {\n            return new ZipLatestObservable<T1, T2, T3, T4, T5, T6, TR>(source1, source2, source3, source4, source5, source6, resultSelector);\n        }\n\n        public static IObservable<TR> ZipLatest<T1, T2, T3, T4, T5, T6, T7, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, ZipLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n        {\n            return new ZipLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR>(source1, source2, source3, source4, source5, source6, source7, resultSelector);\n        }\n\n        public static IObservable<T> Switch<T>(this IObservable<IObservable<T>> sources)\n        {\n            return new SwitchObservable<T>(sources);\n        }\n\n        public static IObservable<TResult> WithLatestFrom<TLeft, TRight, TResult>(this IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)\n        {\n            return new WithLatestFromObservable<TLeft, TRight, TResult>(left, right, selector);\n        }\n\n        /// <summary>\n        /// <para>Specialized for single async operations like Task.WhenAll, Zip.Take(1).</para>\n        /// <para>If sequence is empty, return T[0] array.</para>\n        /// </summary>\n        public static IObservable<T[]> WhenAll<T>(params IObservable<T>[] sources)\n        {\n            if (sources.Length == 0) return Observable.Return(new T[0]);\n\n            return new WhenAllObservable<T>(sources);\n        }\n\n        /// <summary>\n        /// <para>Specialized for single async operations like Task.WhenAll, Zip.Take(1).</para>\n        /// </summary>\n        public static IObservable<Unit> WhenAll(params IObservable<Unit>[] sources)\n        {\n            if (sources.Length == 0) return Observable.ReturnUnit();\n\n            return new WhenAllObservable(sources);\n        }\n\n        /// <summary>\n        /// <para>Specialized for single async operations like Task.WhenAll, Zip.Take(1).</para>\n        /// <para>If sequence is empty, return T[0] array.</para>\n        /// </summary>\n        public static IObservable<T[]> WhenAll<T>(this IEnumerable<IObservable<T>> sources)\n        {\n            var array = sources as IObservable<T>[];\n            if (array != null) return WhenAll(array);\n\n            return new WhenAllObservable<T>(sources);\n        }\n\n        /// <summary>\n        /// <para>Specialized for single async operations like Task.WhenAll, Zip.Take(1).</para>\n        /// </summary>\n        public static IObservable<Unit> WhenAll(this IEnumerable<IObservable<Unit>> sources)\n        {\n            var array = sources as IObservable<Unit>[];\n            if (array != null) return WhenAll(array);\n\n            return new WhenAllObservable(sources);\n        }\n\n        public static IObservable<T> StartWith<T>(this IObservable<T> source, T value)\n        {\n            return new StartWithObservable<T>(source, value);\n        }\n\n        public static IObservable<T> StartWith<T>(this IObservable<T> source, Func<T> valueFactory)\n        {\n            return new StartWithObservable<T>(source, valueFactory);\n        }\n\n        public static IObservable<T> StartWith<T>(this IObservable<T> source, params T[] values)\n        {\n            return StartWith(source, Scheduler.DefaultSchedulers.ConstantTimeOperations, values);\n        }\n\n        public static IObservable<T> StartWith<T>(this IObservable<T> source, IEnumerable<T> values)\n        {\n            return StartWith(source, Scheduler.DefaultSchedulers.ConstantTimeOperations, values);\n        }\n\n        public static IObservable<T> StartWith<T>(this IObservable<T> source, IScheduler scheduler, T value)\n        {\n            return Observable.Return(value, scheduler).Concat(source);\n        }\n\n        public static IObservable<T> StartWith<T>(this IObservable<T> source, IScheduler scheduler, IEnumerable<T> values)\n        {\n            var array = values as T[];\n            if (array == null)\n            {\n                array = values.ToArray();\n            }\n\n            return StartWith(source, scheduler, array);\n        }\n\n        public static IObservable<T> StartWith<T>(this IObservable<T> source, IScheduler scheduler, params T[] values)\n        {\n            return values.ToObservable(scheduler).Concat(source);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Concatenate.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 18c56bbfaaeedf445874f4246d42b509\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Concurrency.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        public static IObservable<T> Synchronize<T>(this IObservable<T> source)\n        {\n            return new SynchronizeObservable<T>(source, new object());\n        }\n\n        public static IObservable<T> Synchronize<T>(this IObservable<T> source, object gate)\n        {\n            return new SynchronizeObservable<T>(source, gate);\n        }\n\n        public static IObservable<T> ObserveOn<T>(this IObservable<T> source, IScheduler scheduler)\n        {\n            return new ObserveOnObservable<T>(source, scheduler);\n        }\n\n        public static IObservable<T> SubscribeOn<T>(this IObservable<T> source, IScheduler scheduler)\n        {\n            return new SubscribeOnObservable<T>(source, scheduler);\n        }\n\n        public static IObservable<T> DelaySubscription<T>(this IObservable<T> source, TimeSpan dueTime)\n        {\n            return new DelaySubscriptionObservable<T>(source, dueTime, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<T> DelaySubscription<T>(this IObservable<T> source, TimeSpan dueTime, IScheduler scheduler)\n        {\n            return new DelaySubscriptionObservable<T>(source, dueTime, scheduler);\n        }\n\n        public static IObservable<T> DelaySubscription<T>(this IObservable<T> source, DateTimeOffset dueTime)\n        {\n            return new DelaySubscriptionObservable<T>(source, dueTime, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<T> DelaySubscription<T>(this IObservable<T> source, DateTimeOffset dueTime, IScheduler scheduler)\n        {\n            return new DelaySubscriptionObservable<T>(source, dueTime, scheduler);\n        }\n\n        public static IObservable<T> Amb<T>(params IObservable<T>[] sources)\n        {\n            return Amb((IEnumerable<IObservable<T>>)sources);\n        }\n\n        public static IObservable<T> Amb<T>(IEnumerable<IObservable<T>> sources)\n        {\n            var result = Observable.Never<T>();\n            foreach (var item in sources)\n            {\n                var second = item;\n                result = result.Amb(second);\n            }\n            return result;\n        }\n\n        public static IObservable<T> Amb<T>(this IObservable<T> source, IObservable<T> second)\n        {\n            return new AmbObservable<T>(source, second);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Concurrency.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a31d38ad13dc4644180647afc28c6045\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Conversions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        public static IObservable<T> AsObservable<T>(this IObservable<T> source)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n\n            // optimize, don't double wrap\n            if (source is UniRx.Operators.AsObservableObservable<T>)\n            {\n                return source;\n            }\n\n            return new AsObservableObservable<T>(source);\n        }\n\n        public static IObservable<T> ToObservable<T>(this IEnumerable<T> source)\n        {\n            return ToObservable(source, Scheduler.DefaultSchedulers.Iteration);\n        }\n\n        public static IObservable<T> ToObservable<T>(this IEnumerable<T> source, IScheduler scheduler)\n        {\n            return new ToObservableObservable<T>(source, scheduler);\n        }\n\n        public static IObservable<TResult> Cast<TSource, TResult>(this IObservable<TSource> source)\n        {\n            return new CastObservable<TSource, TResult>(source);\n        }\n\n        /// <summary>\n        /// witness is for type inference.\n        /// </summary>\n        public static IObservable<TResult> Cast<TSource, TResult>(this IObservable<TSource> source, TResult witness)\n        {\n            return new CastObservable<TSource, TResult>(source);\n        }\n\n        public static IObservable<TResult> OfType<TSource, TResult>(this IObservable<TSource> source)\n        {\n            return new OfTypeObservable<TSource, TResult>(source);\n        }\n\n        /// <summary>\n        /// witness is for type inference.\n        /// </summary>\n        public static IObservable<TResult> OfType<TSource, TResult>(this IObservable<TSource> source, TResult witness)\n        {\n            return new OfTypeObservable<TSource, TResult>(source);\n        }\n\n        /// <summary>\n        /// Converting .Select(_ => Unit.Default) sequence.\n        /// </summary>\n        public static IObservable<Unit> AsUnitObservable<T>(this IObservable<T> source)\n        {\n            return new AsUnitObservableObservable<T>(source);\n        }\n\n        /// <summary>\n        /// Same as LastOrDefault().AsUnitObservable().\n        /// </summary>\n        public static IObservable<Unit> AsSingleUnitObservable<T>(this IObservable<T> source)\n        {\n            return new AsSingleUnitObservableObservable<T>(source);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Conversions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e32bd7bbf28014b4ab2873cc8de3dea9\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Creation.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        /// <summary>\n        /// Create anonymous observable. Observer has exception durability. This is recommended for make operator and event like generator. \n        /// </summary>\n        public static IObservable<T> Create<T>(Func<IObserver<T>, IDisposable> subscribe)\n        {\n            if (subscribe == null) throw new ArgumentNullException(\"subscribe\");\n\n            return new CreateObservable<T>(subscribe);\n        }\n\n        /// <summary>\n        /// Create anonymous observable. Observer has exception durability. This is recommended for make operator and event like generator(HotObservable). \n        /// </summary>\n        public static IObservable<T> Create<T>(Func<IObserver<T>, IDisposable> subscribe, bool isRequiredSubscribeOnCurrentThread)\n        {\n            if (subscribe == null) throw new ArgumentNullException(\"subscribe\");\n\n            return new CreateObservable<T>(subscribe, isRequiredSubscribeOnCurrentThread);\n        }\n\n        /// <summary>\n        /// Create anonymous observable. Observer has exception durability. This is recommended for make operator and event like generator. \n        /// </summary>\n        public static IObservable<T> CreateWithState<T, TState>(TState state, Func<TState, IObserver<T>, IDisposable> subscribe)\n        {\n            if (subscribe == null) throw new ArgumentNullException(\"subscribe\");\n\n            return new CreateObservable<T, TState>(state, subscribe);\n        }\n\n        /// <summary>\n        /// Create anonymous observable. Observer has exception durability. This is recommended for make operator and event like generator(HotObservable). \n        /// </summary>\n        public static IObservable<T> CreateWithState<T, TState>(TState state, Func<TState, IObserver<T>, IDisposable> subscribe, bool isRequiredSubscribeOnCurrentThread)\n        {\n            if (subscribe == null) throw new ArgumentNullException(\"subscribe\");\n\n            return new CreateObservable<T, TState>(state, subscribe, isRequiredSubscribeOnCurrentThread);\n        }\n\n        /// <summary>\n        /// Create anonymous observable. Safe means auto detach when error raised in onNext pipeline. This is recommended for make generator (ColdObservable).\n        /// </summary>\n        public static IObservable<T> CreateSafe<T>(Func<IObserver<T>, IDisposable> subscribe)\n        {\n            if (subscribe == null) throw new ArgumentNullException(\"subscribe\");\n\n            return new CreateSafeObservable<T>(subscribe);\n        }\n\n        /// <summary>\n        /// Create anonymous observable. Safe means auto detach when error raised in onNext pipeline. This is recommended for make generator (ColdObservable).\n        /// </summary>\n        public static IObservable<T> CreateSafe<T>(Func<IObserver<T>, IDisposable> subscribe, bool isRequiredSubscribeOnCurrentThread)\n        {\n            if (subscribe == null) throw new ArgumentNullException(\"subscribe\");\n\n            return new CreateSafeObservable<T>(subscribe, isRequiredSubscribeOnCurrentThread);\n        }\n\n        /// <summary>\n        /// Empty Observable. Returns only OnCompleted.\n        /// </summary>\n        public static IObservable<T> Empty<T>()\n        {\n            return Empty<T>(Scheduler.DefaultSchedulers.ConstantTimeOperations);\n        }\n\n        /// <summary>\n        /// Empty Observable. Returns only OnCompleted on specified scheduler.\n        /// </summary>\n        public static IObservable<T> Empty<T>(IScheduler scheduler)\n        {\n            if (scheduler == Scheduler.Immediate)\n            {\n                return ImmutableEmptyObservable<T>.Instance;\n            }\n            else\n            {\n                return new EmptyObservable<T>(scheduler);\n            }\n        }\n\n        /// <summary>\n        /// Empty Observable. Returns only OnCompleted. witness is for type inference.\n        /// </summary>\n        public static IObservable<T> Empty<T>(T witness)\n        {\n            return Empty<T>(Scheduler.DefaultSchedulers.ConstantTimeOperations);\n        }\n\n        /// <summary>\n        /// Empty Observable. Returns only OnCompleted on specified scheduler. witness is for type inference.\n        /// </summary>\n        public static IObservable<T> Empty<T>(IScheduler scheduler, T witness)\n        {\n            return Empty<T>(scheduler);\n        }\n\n        /// <summary>\n        /// Non-Terminating Observable. It's no returns, never finish.\n        /// </summary>\n        public static IObservable<T> Never<T>()\n        {\n            return ImmutableNeverObservable<T>.Instance;\n        }\n\n        /// <summary>\n        /// Non-Terminating Observable. It's no returns, never finish. witness is for type inference.\n        /// </summary>\n        public static IObservable<T> Never<T>(T witness)\n        {\n            return ImmutableNeverObservable<T>.Instance;\n        }\n\n        /// <summary>\n        /// Return single sequence Immediately.\n        /// </summary>\n        public static IObservable<T> Return<T>(T value)\n        {\n            return Return<T>(value, Scheduler.DefaultSchedulers.ConstantTimeOperations);\n        }\n\n        /// <summary>\n        /// Return single sequence on specified scheduler.\n        /// </summary>\n        public static IObservable<T> Return<T>(T value, IScheduler scheduler)\n        {\n            if (scheduler == Scheduler.Immediate)\n            {\n                return new ImmediateReturnObservable<T>(value);\n            }\n            else\n            {\n                return new ReturnObservable<T>(value, scheduler);\n            }\n        }\n\n        /// <summary>\n        /// Return single sequence Immediately, optimized for Unit(no allocate memory).\n        /// </summary>\n        public static IObservable<Unit> Return(Unit value)\n        {\n            return ImmutableReturnUnitObservable.Instance;\n        }\n\n        /// <summary>\n        /// Return single sequence Immediately, optimized for Boolean(no allocate memory).\n        /// </summary>\n        public static IObservable<bool> Return(bool value)\n        {\n            return (value == true)\n                ? (IObservable<bool>)ImmutableReturnTrueObservable.Instance\n                : (IObservable<bool>)ImmutableReturnFalseObservable.Instance;\n        }\n\n        /// <summary>\n        /// Return single sequence Immediately, optimized for Int32.\n        /// </summary>\n        public static IObservable<Int32> Return(int value)\n        {\n            return ImmutableReturnInt32Observable.GetInt32Observable(value);\n        }\n\n        /// <summary>\n        /// Same as Observable.Return(Unit.Default); but no allocate memory.\n        /// </summary>\n        public static IObservable<Unit> ReturnUnit()\n        {\n            return ImmutableReturnUnitObservable.Instance;\n        }\n\n        /// <summary>\n        /// Empty Observable. Returns only onError.\n        /// </summary>\n        public static IObservable<T> Throw<T>(Exception error)\n        {\n            return Throw<T>(error, Scheduler.DefaultSchedulers.ConstantTimeOperations);\n        }\n\n        /// <summary>\n        /// Empty Observable. Returns only onError. witness if for Type inference.\n        /// </summary>\n        public static IObservable<T> Throw<T>(Exception error, T witness)\n        {\n            return Throw<T>(error, Scheduler.DefaultSchedulers.ConstantTimeOperations);\n        }\n\n        /// <summary>\n        /// Empty Observable. Returns only onError on specified scheduler.\n        /// </summary>\n        public static IObservable<T> Throw<T>(Exception error, IScheduler scheduler)\n        {\n            return new ThrowObservable<T>(error, scheduler);\n        }\n\n        /// <summary>\n        /// Empty Observable. Returns only onError on specified scheduler. witness if for Type inference.\n        /// </summary>\n        public static IObservable<T> Throw<T>(Exception error, IScheduler scheduler, T witness)\n        {\n            return Throw<T>(error, scheduler);\n        }\n\n        public static IObservable<int> Range(int start, int count)\n        {\n            return Range(start, count, Scheduler.DefaultSchedulers.Iteration);\n        }\n\n        public static IObservable<int> Range(int start, int count, IScheduler scheduler)\n        {\n            return new RangeObservable(start, count, scheduler);\n        }\n\n        public static IObservable<T> Repeat<T>(T value)\n        {\n            return Repeat(value, Scheduler.DefaultSchedulers.Iteration);\n        }\n\n        public static IObservable<T> Repeat<T>(T value, IScheduler scheduler)\n        {\n            if (scheduler == null) throw new ArgumentNullException(\"scheduler\");\n\n            return new RepeatObservable<T>(value, null, scheduler);\n        }\n\n        public static IObservable<T> Repeat<T>(T value, int repeatCount)\n        {\n            return Repeat(value, repeatCount, Scheduler.DefaultSchedulers.Iteration);\n        }\n\n        public static IObservable<T> Repeat<T>(T value, int repeatCount, IScheduler scheduler)\n        {\n            if (repeatCount < 0) throw new ArgumentOutOfRangeException(\"repeatCount\");\n            if (scheduler == null) throw new ArgumentNullException(\"scheduler\");\n\n            return new RepeatObservable<T>(value, repeatCount, scheduler);\n        }\n\n        public static IObservable<T> Repeat<T>(this IObservable<T> source)\n        {\n            return RepeatInfinite(source).Concat();\n        }\n\n        static IEnumerable<IObservable<T>> RepeatInfinite<T>(IObservable<T> source)\n        {\n            while (true)\n            {\n                yield return source;\n            }\n        }\n\n        /// <summary>\n        /// Same as Repeat() but if arriving contiguous \"OnComplete\" Repeat stops.\n        /// </summary>\n        public static IObservable<T> RepeatSafe<T>(this IObservable<T> source)\n        {\n            return new RepeatSafeObservable<T>(RepeatInfinite(source), source.IsRequiredSubscribeOnCurrentThread());\n        }\n\n        public static IObservable<T> Defer<T>(Func<IObservable<T>> observableFactory)\n        {\n            return new DeferObservable<T>(observableFactory);\n        }\n\n        public static IObservable<T> Start<T>(Func<T> function)\n        {\n            return new StartObservable<T>(function, null, Scheduler.DefaultSchedulers.AsyncConversions);\n        }\n\n        public static IObservable<T> Start<T>(Func<T> function, TimeSpan timeSpan)\n        {\n            return new StartObservable<T>(function, timeSpan, Scheduler.DefaultSchedulers.AsyncConversions);\n        }\n\n        public static IObservable<T> Start<T>(Func<T> function, IScheduler scheduler)\n        {\n            return new StartObservable<T>(function, null, scheduler);\n        }\n\n        public static IObservable<T> Start<T>(Func<T> function, TimeSpan timeSpan, IScheduler scheduler)\n        {\n            return new StartObservable<T>(function, timeSpan, scheduler);\n        }\n\n        public static IObservable<Unit> Start(Action action)\n        {\n            return new StartObservable<Unit>(action, null, Scheduler.DefaultSchedulers.AsyncConversions);\n        }\n\n        public static IObservable<Unit> Start(Action action, TimeSpan timeSpan)\n        {\n            return new StartObservable<Unit>(action, timeSpan, Scheduler.DefaultSchedulers.AsyncConversions);\n        }\n\n        public static IObservable<Unit> Start(Action action, IScheduler scheduler)\n        {\n            return new StartObservable<Unit>(action, null, scheduler);\n        }\n\n        public static IObservable<Unit> Start(Action action, TimeSpan timeSpan, IScheduler scheduler)\n        {\n            return new StartObservable<Unit>(action, timeSpan, scheduler);\n        }\n\n        public static Func<IObservable<T>> ToAsync<T>(Func<T> function)\n        {\n            return ToAsync(function, Scheduler.DefaultSchedulers.AsyncConversions);\n        }\n\n        public static Func<IObservable<T>> ToAsync<T>(Func<T> function, IScheduler scheduler)\n        {\n            return () =>\n            {\n                var subject = new AsyncSubject<T>();\n\n                scheduler.Schedule(() =>\n                {\n                    var result = default(T);\n                    try\n                    {\n                        result = function();\n                    }\n                    catch (Exception exception)\n                    {\n                        subject.OnError(exception);\n                        return;\n                    }\n                    subject.OnNext(result);\n                    subject.OnCompleted();\n                });\n\n                return subject.AsObservable();\n            };\n        }\n\n        public static Func<IObservable<Unit>> ToAsync(Action action)\n        {\n            return ToAsync(action, Scheduler.DefaultSchedulers.AsyncConversions);\n        }\n\n        public static Func<IObservable<Unit>> ToAsync(Action action, IScheduler scheduler)\n        {\n            return () =>\n            {\n                var subject = new AsyncSubject<Unit>();\n\n                scheduler.Schedule(() =>\n                {\n                    try\n                    {\n                        action();\n                    }\n                    catch (Exception exception)\n                    {\n                        subject.OnError(exception);\n                        return;\n                    }\n                    subject.OnNext(Unit.Default);\n                    subject.OnCompleted();\n                });\n\n                return subject.AsObservable();\n            };\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Creation.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e63036d2dba75f64382beed512fd086c\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.ErrorHandling.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        public static IObservable<T> Finally<T>(this IObservable<T> source, Action finallyAction)\n        {\n            return new FinallyObservable<T>(source, finallyAction);\n        }\n\n        public static IObservable<T> Catch<T, TException>(this IObservable<T> source, Func<TException, IObservable<T>> errorHandler)\n            where TException : Exception\n        {\n            return new CatchObservable<T, TException>(source, errorHandler);\n        }\n\n        public static IObservable<TSource> Catch<TSource>(this IEnumerable<IObservable<TSource>> sources)\n        {\n            return new CatchObservable<TSource>(sources);\n        }\n\n        /// <summary>Catch exception and return Observable.Empty.</summary>\n        public static IObservable<TSource> CatchIgnore<TSource>(this IObservable<TSource> source)\n        {\n            return source.Catch<TSource, Exception>(Stubs.CatchIgnore<TSource>);\n        }\n\n        /// <summary>Catch exception and return Observable.Empty.</summary>\n        public static IObservable<TSource> CatchIgnore<TSource, TException>(this IObservable<TSource> source, Action<TException> errorAction)\n            where TException : Exception\n        {\n            var result = source.Catch((TException ex) =>\n            {\n                errorAction(ex);\n                return Observable.Empty<TSource>();\n            });\n            return result;\n        }\n\n        public static IObservable<TSource> Retry<TSource>(this IObservable<TSource> source)\n        {\n            return RepeatInfinite(source).Catch();\n        }\n\n        public static IObservable<TSource> Retry<TSource>(this IObservable<TSource> source, int retryCount)\n        {\n            return System.Linq.Enumerable.Repeat(source, retryCount).Catch();\n        }\n\n        /// <summary>\n        /// <para>Repeats the source observable sequence until it successfully terminates.</para>\n        /// <para>This is same as Retry().</para>\n        /// </summary>\n        public static IObservable<TSource> OnErrorRetry<TSource>(\n            this IObservable<TSource> source)\n        {\n            var result = source.Retry();\n            return result;\n        }\n\n        /// <summary>\n        /// When catched exception, do onError action and repeat observable sequence.\n        /// </summary>\n        public static IObservable<TSource> OnErrorRetry<TSource, TException>(\n            this IObservable<TSource> source, Action<TException> onError)\n            where TException : Exception\n        {\n            return source.OnErrorRetry(onError, TimeSpan.Zero);\n        }\n\n        /// <summary>\n        /// When catched exception, do onError action and repeat observable sequence after delay time.\n        /// </summary>\n        public static IObservable<TSource> OnErrorRetry<TSource, TException>(\n            this IObservable<TSource> source, Action<TException> onError, TimeSpan delay)\n            where TException : Exception\n        {\n            return source.OnErrorRetry(onError, int.MaxValue, delay);\n        }\n\n        /// <summary>\n        /// When catched exception, do onError action and repeat observable sequence during within retryCount.\n        /// </summary>\n        public static IObservable<TSource> OnErrorRetry<TSource, TException>(\n            this IObservable<TSource> source, Action<TException> onError, int retryCount)\n            where TException : Exception\n        {\n            return source.OnErrorRetry(onError, retryCount, TimeSpan.Zero);\n        }\n\n        /// <summary>\n        /// When catched exception, do onError action and repeat observable sequence after delay time during within retryCount.\n        /// </summary>\n        public static IObservable<TSource> OnErrorRetry<TSource, TException>(\n            this IObservable<TSource> source, Action<TException> onError, int retryCount, TimeSpan delay)\n            where TException : Exception\n        {\n            return source.OnErrorRetry(onError, retryCount, delay, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        /// <summary>\n        /// When catched exception, do onError action and repeat observable sequence after delay time(work on delayScheduler) during within retryCount.\n        /// </summary>\n        public static IObservable<TSource> OnErrorRetry<TSource, TException>(\n            this IObservable<TSource> source, Action<TException> onError, int retryCount, TimeSpan delay, IScheduler delayScheduler)\n            where TException : Exception\n        {\n            var result = Observable.Defer(() =>\n            {\n                var dueTime = (delay.Ticks < 0) ? TimeSpan.Zero : delay;\n                var count = 0;\n\n                IObservable<TSource> self = null;\n                self = source.Catch((TException ex) =>\n                {\n                    onError(ex);\n\n                    return (++count < retryCount)\n                        ? (dueTime == TimeSpan.Zero)\n                            ? self.SubscribeOn(Scheduler.CurrentThread)\n                            : self.DelaySubscription(dueTime, delayScheduler).SubscribeOn(Scheduler.CurrentThread)\n                        : Observable.Throw<TSource>(ex);\n                });\n                return self;\n            });\n\n            return result;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.ErrorHandling.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f40cab35efe24e6448ac8455bc7a4eb9\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Events.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        public static IObservable<EventPattern<TEventArgs>> FromEventPattern<TDelegate, TEventArgs>(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler)\n            where TEventArgs : EventArgs\n        {\n            return new FromEventPatternObservable<TDelegate, TEventArgs>(conversion, addHandler, removeHandler);\n        }\n\n        public static IObservable<Unit> FromEvent<TDelegate>(Func<Action, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler)\n        {\n            return new FromEventObservable<TDelegate>(conversion, addHandler, removeHandler);\n        }\n\n        public static IObservable<TEventArgs> FromEvent<TDelegate, TEventArgs>(Func<Action<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler)\n        {\n            return new FromEventObservable<TDelegate, TEventArgs>(conversion, addHandler, removeHandler);\n        }\n\n        public static IObservable<Unit> FromEvent(Action<Action> addHandler, Action<Action> removeHandler)\n        {\n            return new FromEventObservable(addHandler, removeHandler);\n        }\n\n        public static IObservable<T> FromEvent<T>(Action<Action<T>> addHandler, Action<Action<T>> removeHandler)\n        {\n            return new FromEventObservable_<T>(addHandler, removeHandler);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Events.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e591aafff0492c94590cf9702f6c408f\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.FromAsync.cs",
    "content": "﻿using System;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n        public static Func<IObservable<TResult>> FromAsyncPattern<TResult>(Func<AsyncCallback, object, IAsyncResult> begin, Func<IAsyncResult, TResult> end)\n        {\n            return () =>\n            {\n                var subject = new AsyncSubject<TResult>();\n                try\n                {\n                    begin(iar =>\n                    {\n                        TResult result;\n                        try\n                        {\n                            result = end(iar);\n                        }\n                        catch (Exception exception)\n                        {\n                            subject.OnError(exception);\n                            return;\n                        }\n                        subject.OnNext(result);\n                        subject.OnCompleted();\n                    }, null);\n                }\n                catch (Exception exception)\n                {\n                    return Observable.Throw<TResult>(exception, Scheduler.DefaultSchedulers.AsyncConversions);\n                }\n                return subject.AsObservable();\n            };\n        }\n\n        public static Func<T1, IObservable<TResult>> FromAsyncPattern<T1, TResult>(Func<T1, AsyncCallback, object, IAsyncResult> begin, Func<IAsyncResult, TResult> end)\n        {\n            return x =>\n            {\n                var subject = new AsyncSubject<TResult>();\n                try\n                {\n                    begin(x, iar =>\n                    {\n                        TResult result;\n                        try\n                        {\n                            result = end(iar);\n                        }\n                        catch (Exception exception)\n                        {\n                            subject.OnError(exception);\n                            return;\n                        }\n                        subject.OnNext(result);\n                        subject.OnCompleted();\n                    }, null);\n                }\n                catch (Exception exception)\n                {\n                    return Observable.Throw<TResult>(exception, Scheduler.DefaultSchedulers.AsyncConversions);\n                }\n                return subject.AsObservable();\n            };\n        }\n\n        public static Func<T1, T2, IObservable<TResult>> FromAsyncPattern<T1, T2, TResult>(Func<T1, T2, AsyncCallback, object, IAsyncResult> begin, Func<IAsyncResult, TResult> end)\n        {\n            return (x, y) =>\n            {\n                var subject = new AsyncSubject<TResult>();\n                try\n                {\n                    begin(x, y, iar =>\n                    {\n                        TResult result;\n                        try\n                        {\n                            result = end(iar);\n                        }\n                        catch (Exception exception)\n                        {\n                            subject.OnError(exception);\n                            return;\n                        }\n                        subject.OnNext(result);\n                        subject.OnCompleted();\n                    }, null);\n                }\n                catch (Exception exception)\n                {\n                    return Observable.Throw<TResult>(exception, Scheduler.DefaultSchedulers.AsyncConversions);\n                }\n                return subject.AsObservable();\n            };\n        }\n\n        public static Func<IObservable<Unit>> FromAsyncPattern(Func<AsyncCallback, object, IAsyncResult> begin, Action<IAsyncResult> end)\n        {\n            return FromAsyncPattern(begin, iar =>\n            {\n                end(iar);\n                return Unit.Default;\n            });\n        }\n\n        public static Func<T1, IObservable<Unit>> FromAsyncPattern<T1>(Func<T1, AsyncCallback, object, IAsyncResult> begin, Action<IAsyncResult> end)\n        {\n            return FromAsyncPattern(begin, iar =>\n            {\n                end(iar);\n                return Unit.Default;\n            });\n        }\n\n        public static Func<T1, T2, IObservable<Unit>> FromAsyncPattern<T1, T2>(Func<T1, T2, AsyncCallback, object, IAsyncResult> begin, Action<IAsyncResult> end)\n        {\n            return FromAsyncPattern(begin, iar =>\n            {\n                end(iar);\n                return Unit.Default;\n            });\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.FromAsync.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 601f5bb7bb302a14cb46df717729b8c7\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Joins.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace UniRx\n{\n    public static partial class Observable\n    {\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Joins.cs.meta",
    "content": "fileFormatVersion: 2\nguid: dd92425c6c6dec24e9e52677cbc36aa0\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Paging.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UniRx.InternalUtil;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    // Take, Skip, etc..\n    public static partial class Observable\n    {\n        public static IObservable<T> Take<T>(this IObservable<T> source, int count)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (count < 0) throw new ArgumentOutOfRangeException(\"count\");\n\n            if (count == 0) return Empty<T>();\n\n            // optimize .Take(count).Take(count)\n            var take = source as TakeObservable<T>;\n            if (take != null && take.scheduler == null)\n            {\n                return take.Combine(count);\n            }\n\n            return new TakeObservable<T>(source, count);\n        }\n\n        public static IObservable<T> Take<T>(this IObservable<T> source, TimeSpan duration)\n        {\n            return Take(source, duration, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<T> Take<T>(this IObservable<T> source, TimeSpan duration, IScheduler scheduler)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (scheduler == null) throw new ArgumentNullException(\"scheduler\");\n\n            // optimize .Take(duration).Take(duration)\n            var take = source as TakeObservable<T>;\n            if (take != null && take.scheduler == scheduler)\n            {\n                return take.Combine(duration);\n            }\n\n            return new TakeObservable<T>(source, duration, scheduler);\n        }\n\n        public static IObservable<T> TakeWhile<T>(this IObservable<T> source, Func<T, bool> predicate)\n        {\n            return new TakeWhileObservable<T>(source, predicate);\n        }\n\n        public static IObservable<T> TakeWhile<T>(this IObservable<T> source, Func<T, int, bool> predicate)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (predicate == null) throw new ArgumentNullException(\"predicate\");\n\n            return new TakeWhileObservable<T>(source, predicate);\n        }\n\n        public static IObservable<T> TakeUntil<T, TOther>(this IObservable<T> source, IObservable<TOther> other)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (other == null) throw new ArgumentNullException(\"other\");\n\n            return new TakeUntilObservable<T, TOther>(source, other);\n        }\n\n        public static IObservable<T> TakeLast<T>(this IObservable<T> source, int count)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (count < 0) throw new ArgumentOutOfRangeException(\"count\");\n\n            return new TakeLastObservable<T>(source, count);\n        }\n\n        public static IObservable<T> TakeLast<T>(this IObservable<T> source, TimeSpan duration)\n        {\n            return TakeLast<T>(source, duration, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<T> TakeLast<T>(this IObservable<T> source, TimeSpan duration, IScheduler scheduler)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n\n            return new TakeLastObservable<T>(source, duration, scheduler);\n        }\n\n        public static IObservable<T> Skip<T>(this IObservable<T> source, int count)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (count < 0) throw new ArgumentOutOfRangeException(\"count\");\n\n            // optimize .Skip(count).Skip(count)\n            var skip = source as SkipObservable<T>;\n            if (skip != null && skip.scheduler == null)\n            {\n                return skip.Combine(count);\n            }\n\n            return new SkipObservable<T>(source, count);\n        }\n\n        public static IObservable<T> Skip<T>(this IObservable<T> source, TimeSpan duration)\n        {\n            return Skip(source, duration, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<T> Skip<T>(this IObservable<T> source, TimeSpan duration, IScheduler scheduler)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (scheduler == null) throw new ArgumentNullException(\"scheduler\");\n\n            // optimize .Skip(duration).Skip(duration)\n            var skip = source as SkipObservable<T>;\n            if (skip != null && skip.scheduler == scheduler)\n            {\n                return skip.Combine(duration);\n            }\n\n            return new SkipObservable<T>(source, duration, scheduler);\n        }\n\n        public static IObservable<T> SkipWhile<T>(this IObservable<T> source, Func<T, bool> predicate)\n        {\n            return new SkipWhileObservable<T>(source, predicate);\n        }\n\n        public static IObservable<T> SkipWhile<T>(this IObservable<T> source, Func<T, int, bool> predicate)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (predicate == null) throw new ArgumentNullException(\"predicate\");\n\n            return new SkipWhileObservable<T>(source, predicate);\n        }\n\n        public static IObservable<T> SkipUntil<T, TOther>(this IObservable<T> source, IObservable<TOther> other)\n        {\n            return new SkipUntilObservable<T, TOther>(source, other);\n        }\n\n        public static IObservable<IList<T>> Buffer<T>(this IObservable<T> source, int count)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (count <= 0) throw new ArgumentOutOfRangeException(\"count <= 0\");\n\n            return new BufferObservable<T>(source, count, 0);\n        }\n\n        public static IObservable<IList<T>> Buffer<T>(this IObservable<T> source, int count, int skip)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (count <= 0) throw new ArgumentOutOfRangeException(\"count <= 0\");\n            if (skip <= 0) throw new ArgumentOutOfRangeException(\"skip <= 0\");\n\n            return new BufferObservable<T>(source, count, skip);\n        }\n\n        public static IObservable<IList<T>> Buffer<T>(this IObservable<T> source, TimeSpan timeSpan)\n        {\n            return Buffer(source, timeSpan, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<IList<T>> Buffer<T>(this IObservable<T> source, TimeSpan timeSpan, IScheduler scheduler)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n\n            return new BufferObservable<T>(source, timeSpan, timeSpan, scheduler);\n        }\n\n        public static IObservable<IList<T>> Buffer<T>(this IObservable<T> source, TimeSpan timeSpan, int count)\n        {\n            return Buffer(source, timeSpan, count, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<IList<T>> Buffer<T>(this IObservable<T> source, TimeSpan timeSpan, int count, IScheduler scheduler)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n            if (count <= 0) throw new ArgumentOutOfRangeException(\"count <= 0\");\n\n            return new BufferObservable<T>(source, timeSpan, count, scheduler);\n        }\n\n        public static IObservable<IList<T>> Buffer<T>(this IObservable<T> source, TimeSpan timeSpan, TimeSpan timeShift)\n        {\n            return new BufferObservable<T>(source, timeSpan, timeShift, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<IList<T>> Buffer<T>(this IObservable<T> source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n\n            return new BufferObservable<T>(source, timeSpan, timeShift, scheduler);\n        }\n\n        public static IObservable<IList<TSource>> Buffer<TSource, TWindowBoundary>(this IObservable<TSource> source, IObservable<TWindowBoundary> windowBoundaries)\n        {\n            return new BufferObservable<TSource, TWindowBoundary>(source, windowBoundaries);\n        }\n\n        /// <summary>Projects old and new element of a sequence into a new form.</summary>\n        public static IObservable<Pair<T>> Pairwise<T>(this IObservable<T> source)\n        {\n            return new PairwiseObservable<T>(source);\n        }\n\n        /// <summary>Projects old and new element of a sequence into a new form.</summary>\n        public static IObservable<TR> Pairwise<T, TR>(this IObservable<T> source, Func<T, T, TR> selector)\n        {\n            return new PairwiseObservable<T, TR>(source, selector);\n        }\n\n        // first, last, single\n\n        public static IObservable<T> Last<T>(this IObservable<T> source)\n        {\n            return new LastObservable<T>(source, false);\n        }\n        public static IObservable<T> Last<T>(this IObservable<T> source, Func<T, bool> predicate)\n        {\n            return new LastObservable<T>(source, predicate, false);\n        }\n\n        public static IObservable<T> LastOrDefault<T>(this IObservable<T> source)\n        {\n            return new LastObservable<T>(source, true);\n        }\n\n        public static IObservable<T> LastOrDefault<T>(this IObservable<T> source, Func<T, bool> predicate)\n        {\n            return new LastObservable<T>(source, predicate, true);\n        }\n\n        public static IObservable<T> First<T>(this IObservable<T> source)\n        {\n            return new FirstObservable<T>(source, false);\n        }\n        public static IObservable<T> First<T>(this IObservable<T> source, Func<T, bool> predicate)\n        {\n            return new FirstObservable<T>(source, predicate, false);\n        }\n\n        public static IObservable<T> FirstOrDefault<T>(this IObservable<T> source)\n        {\n            return new FirstObservable<T>(source, true);\n        }\n\n        public static IObservable<T> FirstOrDefault<T>(this IObservable<T> source, Func<T, bool> predicate)\n        {\n            return new FirstObservable<T>(source, predicate, true);\n        }\n\n        public static IObservable<T> Single<T>(this IObservable<T> source)\n        {\n            return new SingleObservable<T>(source, false);\n        }\n        public static IObservable<T> Single<T>(this IObservable<T> source, Func<T, bool> predicate)\n        {\n            return new SingleObservable<T>(source, predicate, false);\n        }\n\n        public static IObservable<T> SingleOrDefault<T>(this IObservable<T> source)\n        {\n            return new SingleObservable<T>(source, true);\n        }\n\n        public static IObservable<T> SingleOrDefault<T>(this IObservable<T> source, Func<T, bool> predicate)\n        {\n            return new SingleObservable<T>(source, predicate, true);\n        }\n\n        // Grouping\n\n        public static IObservable<IGroupedObservable<TKey, TSource>> GroupBy<TSource, TKey>(this IObservable<TSource> source, Func<TSource, TKey> keySelector)\n        {\n            return GroupBy(source, keySelector, Stubs<TSource>.Identity);\n        }\n\n        public static IObservable<IGroupedObservable<TKey, TSource>> GroupBy<TSource, TKey>(this IObservable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer)\n        {\n            return GroupBy(source, keySelector, Stubs<TSource>.Identity, comparer);\n        }\n\n        public static IObservable<IGroupedObservable<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IObservable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector)\n        {\n#if !UniRxLibrary\n            var comparer = UnityEqualityComparer.GetDefault<TKey>();\n#else\n            var comparer = EqualityComparer<TKey>.Default;\n#endif\n\n            return GroupBy(source, keySelector, elementSelector, comparer);\n        }\n\n        public static IObservable<IGroupedObservable<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IObservable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer)\n        {\n            return new GroupByObservable<TSource, TKey, TElement>(source, keySelector, elementSelector, null, comparer);\n        }\n\n        public static IObservable<IGroupedObservable<TKey, TSource>> GroupBy<TSource, TKey>(this IObservable<TSource> source, Func<TSource, TKey> keySelector, int capacity)\n        {\n            return GroupBy(source, keySelector, Stubs<TSource>.Identity, capacity);\n        }\n\n        public static IObservable<IGroupedObservable<TKey, TSource>> GroupBy<TSource, TKey>(this IObservable<TSource> source, Func<TSource, TKey> keySelector, int capacity, IEqualityComparer<TKey> comparer)\n        {\n            return GroupBy(source, keySelector, Stubs<TSource>.Identity, capacity, comparer);\n        }\n\n        public static IObservable<IGroupedObservable<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IObservable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, int capacity)\n        {\n#if !UniRxLibrary\n            var comparer = UnityEqualityComparer.GetDefault<TKey>();\n#else\n            var comparer = EqualityComparer<TKey>.Default;\n#endif\n\n            return GroupBy(source, keySelector, elementSelector, capacity, comparer);\n        }\n\n        public static IObservable<IGroupedObservable<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IObservable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, int capacity, IEqualityComparer<TKey> comparer)\n        {\n            return new GroupByObservable<TSource, TKey, TElement>(source, keySelector, elementSelector, capacity, comparer);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Paging.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f4c9428bf00006d408fcfe4c514ee798\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Time.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    // Timer, Interval, etc...\n    public static partial class Observable\n    {\n        public static IObservable<long> Interval(TimeSpan period)\n        {\n            return new TimerObservable(period, period, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<long> Interval(TimeSpan period, IScheduler scheduler)\n        {\n            return new TimerObservable(period, period, scheduler);\n        }\n\n        public static IObservable<long> Timer(TimeSpan dueTime)\n        {\n            return new TimerObservable(dueTime, null, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<long> Timer(DateTimeOffset dueTime)\n        {\n            return new TimerObservable(dueTime, null, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<long> Timer(TimeSpan dueTime, TimeSpan period)\n        {\n            return new TimerObservable(dueTime, period, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<long> Timer(DateTimeOffset dueTime, TimeSpan period)\n        {\n            return new TimerObservable(dueTime, period, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<long> Timer(TimeSpan dueTime, IScheduler scheduler)\n        {\n            return new TimerObservable(dueTime, null, scheduler);\n        }\n\n        public static IObservable<long> Timer(DateTimeOffset dueTime, IScheduler scheduler)\n        {\n            return new TimerObservable(dueTime, null, scheduler);\n        }\n\n        public static IObservable<long> Timer(TimeSpan dueTime, TimeSpan period, IScheduler scheduler)\n        {\n            return new TimerObservable(dueTime, period, scheduler);\n        }\n\n        public static IObservable<long> Timer(DateTimeOffset dueTime, TimeSpan period, IScheduler scheduler)\n        {\n            return new TimerObservable(dueTime, period, scheduler);\n        }\n\n        public static IObservable<Timestamped<TSource>> Timestamp<TSource>(this IObservable<TSource> source)\n        {\n            return Timestamp<TSource>(source, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<Timestamped<TSource>> Timestamp<TSource>(this IObservable<TSource> source, IScheduler scheduler)\n        {\n            return new TimestampObservable<TSource>(source, scheduler);\n        }\n\n        public static IObservable<UniRx.TimeInterval<TSource>> TimeInterval<TSource>(this IObservable<TSource> source)\n        {\n            return TimeInterval(source, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<UniRx.TimeInterval<TSource>> TimeInterval<TSource>(this IObservable<TSource> source, IScheduler scheduler)\n        {\n            return new UniRx.Operators.TimeIntervalObservable<TSource>(source, scheduler);\n        }\n\n        public static IObservable<T> Delay<T>(this IObservable<T> source, TimeSpan dueTime)\n        {\n            return source.Delay(dueTime, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<TSource> Delay<TSource>(this IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)\n        {\n            return new DelayObservable<TSource>(source, dueTime, scheduler);\n        }\n\n        public static IObservable<T> Sample<T>(this IObservable<T> source, TimeSpan interval)\n        {\n            return source.Sample(interval, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<T> Sample<T>(this IObservable<T> source, TimeSpan interval, IScheduler scheduler)\n        {\n            return new SampleObservable<T>(source, interval, scheduler);\n        }\n\n        public static IObservable<TSource> Throttle<TSource>(this IObservable<TSource> source, TimeSpan dueTime)\n        {\n            return source.Throttle(dueTime, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<TSource> Throttle<TSource>(this IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)\n        {\n            return new ThrottleObservable<TSource>(source, dueTime, scheduler);\n        }\n\n        public static IObservable<TSource> ThrottleFirst<TSource>(this IObservable<TSource> source, TimeSpan dueTime)\n        {\n            return source.ThrottleFirst(dueTime, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<TSource> ThrottleFirst<TSource>(this IObservable<TSource> source, TimeSpan dueTime, IScheduler scheduler)\n        {\n            return new ThrottleFirstObservable<TSource>(source, dueTime, scheduler);\n        }\n\n        public static IObservable<T> Timeout<T>(this IObservable<T> source, TimeSpan dueTime)\n        {\n            return source.Timeout(dueTime, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<T> Timeout<T>(this IObservable<T> source, TimeSpan dueTime, IScheduler scheduler)\n        {\n            return new TimeoutObservable<T>(source, dueTime, scheduler);\n        }\n\n        public static IObservable<T> Timeout<T>(this IObservable<T> source, DateTimeOffset dueTime)\n        {\n            return source.Timeout(dueTime, Scheduler.DefaultSchedulers.TimeBasedOperations);\n        }\n\n        public static IObservable<T> Timeout<T>(this IObservable<T> source, DateTimeOffset dueTime, IScheduler scheduler)\n        {\n            return new TimeoutObservable<T>(source, dueTime, scheduler);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.Time.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7da89fcf95f5c364ca62bbb874005d32\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Threading;\nusing UniRx.InternalUtil;\nusing UniRx.Operators;\n\nnamespace UniRx\n{\n    // Standard Query Operators\n\n    // onNext implementation guide. enclose otherFunc but onNext is not catch.\n    // try{ otherFunc(); } catch { onError() }\n    // onNext();\n\n    public static partial class Observable\n    {\n        static readonly TimeSpan InfiniteTimeSpan = new TimeSpan(0, 0, 0, 0, -1); // from .NET 4.5\n\n        public static IObservable<TR> Select<T, TR>(this IObservable<T> source, Func<T, TR> selector)\n        {\n            // sometimes cause \"which no ahead of time (AOT) code was generated.\" on IL2CPP...\n\n            //var select = source as ISelect<T>;\n            //if (select != null)\n            //{\n            //    return select.CombineSelector(selector);\n            //}\n\n            // optimized path\n            var whereObservable = source as UniRx.Operators.WhereObservable<T>;\n            if (whereObservable != null)\n            {\n                return whereObservable.CombineSelector<TR>(selector);\n            }\n\n            return new SelectObservable<T, TR>(source, selector);\n        }\n\n        public static IObservable<TR> Select<T, TR>(this IObservable<T> source, Func<T, int, TR> selector)\n        {\n            return new SelectObservable<T, TR>(source, selector);\n        }\n\n        public static IObservable<T> Where<T>(this IObservable<T> source, Func<T, bool> predicate)\n        {\n            // optimized path\n            var whereObservable = source as UniRx.Operators.WhereObservable<T>;\n            if (whereObservable != null)\n            {\n                return whereObservable.CombinePredicate(predicate);\n            }\n\n            var selectObservable = source as UniRx.Operators.ISelect<T>;\n            if (selectObservable != null)\n            {\n                return selectObservable.CombinePredicate(predicate);\n            }\n\n            return new WhereObservable<T>(source, predicate);\n        }\n\n        public static IObservable<T> Where<T>(this IObservable<T> source, Func<T, int, bool> predicate)\n        {\n            return new WhereObservable<T>(source, predicate);\n        }\n\n        /// <summary>\n        /// Lightweight SelectMany for Single Async Operation.\n        /// </summary>\n        public static IObservable<TR> ContinueWith<T, TR>(this IObservable<T> source, IObservable<TR> other)\n        {\n            return ContinueWith(source, _ => other);\n        }\n\n        /// <summary>\n        /// Lightweight SelectMany for Single Async Operation.\n        /// </summary>\n        public static IObservable<TR> ContinueWith<T, TR>(this IObservable<T> source, Func<T, IObservable<TR>> selector)\n        {\n            return new ContinueWithObservable<T, TR>(source, selector);\n        }\n\n        public static IObservable<TR> SelectMany<T, TR>(this IObservable<T> source, IObservable<TR> other)\n        {\n            return SelectMany(source, _ => other);\n        }\n\n        public static IObservable<TR> SelectMany<T, TR>(this IObservable<T> source, Func<T, IObservable<TR>> selector)\n        {\n            return new SelectManyObservable<T, TR>(source, selector);\n        }\n\n        public static IObservable<TResult> SelectMany<TSource, TResult>(this IObservable<TSource> source, Func<TSource, int, IObservable<TResult>> selector)\n        {\n            return new SelectManyObservable<TSource, TResult>(source, selector);\n        }\n\n        public static IObservable<TR> SelectMany<T, TC, TR>(this IObservable<T> source, Func<T, IObservable<TC>> collectionSelector, Func<T, TC, TR> resultSelector)\n        {\n            return new SelectManyObservable<T, TC, TR>(source, collectionSelector, resultSelector);\n        }\n\n        public static IObservable<TResult> SelectMany<TSource, TCollection, TResult>(this IObservable<TSource> source, Func<TSource, int, IObservable<TCollection>> collectionSelector, Func<TSource, int, TCollection, int, TResult> resultSelector)\n        {\n            return new SelectManyObservable<TSource, TCollection, TResult>(source, collectionSelector, resultSelector);\n        }\n\n        public static IObservable<TResult> SelectMany<TSource, TResult>(this IObservable<TSource> source, Func<TSource, IEnumerable<TResult>> selector)\n        {\n            return new SelectManyObservable<TSource, TResult>(source, selector);\n        }\n\n        public static IObservable<TResult> SelectMany<TSource, TResult>(this IObservable<TSource> source, Func<TSource, int, IEnumerable<TResult>> selector)\n        {\n            return new SelectManyObservable<TSource, TResult>(source, selector);\n        }\n\n        public static IObservable<TResult> SelectMany<TSource, TCollection, TResult>(this IObservable<TSource> source, Func<TSource, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector)\n        {\n            return new SelectManyObservable<TSource, TCollection, TResult>(source, collectionSelector, resultSelector);\n        }\n\n        public static IObservable<TResult> SelectMany<TSource, TCollection, TResult>(this IObservable<TSource> source, Func<TSource, int, IEnumerable<TCollection>> collectionSelector, Func<TSource, int, TCollection, int, TResult> resultSelector)\n        {\n            return new SelectManyObservable<TSource, TCollection, TResult>(source, collectionSelector, resultSelector);\n        }\n\n        public static IObservable<T[]> ToArray<T>(this IObservable<T> source)\n        {\n            return new ToArrayObservable<T>(source);\n        }\n\n        public static IObservable<IList<T>> ToList<T>(this IObservable<T> source)\n        {\n            return new ToListObservable<T>(source);\n        }\n\n        public static IObservable<T> Do<T>(this IObservable<T> source, IObserver<T> observer)\n        {\n            return new DoObserverObservable<T>(source, observer);\n        }\n\n        public static IObservable<T> Do<T>(this IObservable<T> source, Action<T> onNext)\n        {\n            return new DoObservable<T>(source, onNext, Stubs.Throw, Stubs.Nop);\n        }\n\n        public static IObservable<T> Do<T>(this IObservable<T> source, Action<T> onNext, Action<Exception> onError)\n        {\n            return new DoObservable<T>(source, onNext, onError, Stubs.Nop);\n        }\n\n        public static IObservable<T> Do<T>(this IObservable<T> source, Action<T> onNext, Action onCompleted)\n        {\n            return new DoObservable<T>(source, onNext, Stubs.Throw, onCompleted);\n        }\n\n        public static IObservable<T> Do<T>(this IObservable<T> source, Action<T> onNext, Action<Exception> onError, Action onCompleted)\n        {\n            return new DoObservable<T>(source, onNext, onError, onCompleted);\n        }\n\n        public static IObservable<T> DoOnError<T>(this IObservable<T> source, Action<Exception> onError)\n        {\n            return new DoOnErrorObservable<T>(source, onError);\n        }\n\n        public static IObservable<T> DoOnCompleted<T>(this IObservable<T> source, Action onCompleted)\n        {\n            return new DoOnCompletedObservable<T>(source, onCompleted);\n        }\n\n        public static IObservable<T> DoOnTerminate<T>(this IObservable<T> source, Action onTerminate)\n        {\n            return new DoOnTerminateObservable<T>(source, onTerminate);\n        }\n\n        public static IObservable<T> DoOnSubscribe<T>(this IObservable<T> source, Action onSubscribe)\n        {\n            return new DoOnSubscribeObservable<T>(source, onSubscribe);\n        }\n\n        public static IObservable<T> DoOnCancel<T>(this IObservable<T> source, Action onCancel)\n        {\n            return new DoOnCancelObservable<T>(source, onCancel);\n        }\n\n        public static IObservable<Notification<T>> Materialize<T>(this IObservable<T> source)\n        {\n            return new MaterializeObservable<T>(source);\n        }\n\n        public static IObservable<T> Dematerialize<T>(this IObservable<Notification<T>> source)\n        {\n            return new DematerializeObservable<T>(source);\n        }\n\n        public static IObservable<T> DefaultIfEmpty<T>(this IObservable<T> source)\n        {\n            return new DefaultIfEmptyObservable<T>(source, default(T));\n        }\n\n        public static IObservable<T> DefaultIfEmpty<T>(this IObservable<T> source, T defaultValue)\n        {\n            return new DefaultIfEmptyObservable<T>(source, defaultValue);\n        }\n\n        public static IObservable<TSource> Distinct<TSource>(this IObservable<TSource> source)\n        {\n#if !UniRxLibrary\n            var comparer = UnityEqualityComparer.GetDefault<TSource>();\n#else\n            var comparer = EqualityComparer<TSource>.Default;\n#endif\n\n            return new DistinctObservable<TSource>(source, comparer);\n        }\n\n        public static IObservable<TSource> Distinct<TSource>(this IObservable<TSource> source, IEqualityComparer<TSource> comparer)\n        {\n            return new DistinctObservable<TSource>(source, comparer);\n        }\n\n        public static IObservable<TSource> Distinct<TSource, TKey>(this IObservable<TSource> source, Func<TSource, TKey> keySelector)\n        {\n#if !UniRxLibrary\n            var comparer = UnityEqualityComparer.GetDefault<TKey>();\n#else\n            var comparer = EqualityComparer<TKey>.Default;\n#endif\n\n            return new DistinctObservable<TSource, TKey>(source, keySelector, comparer);\n        }\n\n        public static IObservable<TSource> Distinct<TSource, TKey>(this IObservable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer)\n        {\n            return new DistinctObservable<TSource, TKey>(source, keySelector, comparer);\n        }\n\n        public static IObservable<T> DistinctUntilChanged<T>(this IObservable<T> source)\n        {\n#if !UniRxLibrary\n            var comparer = UnityEqualityComparer.GetDefault<T>();\n#else\n            var comparer = EqualityComparer<T>.Default;\n#endif\n\n            return new DistinctUntilChangedObservable<T>(source, comparer);\n        }\n\n        public static IObservable<T> DistinctUntilChanged<T>(this IObservable<T> source, IEqualityComparer<T> comparer)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n\n            return new DistinctUntilChangedObservable<T>(source, comparer);\n        }\n\n        public static IObservable<T> DistinctUntilChanged<T, TKey>(this IObservable<T> source, Func<T, TKey> keySelector)\n        {\n#if !UniRxLibrary\n            var comparer = UnityEqualityComparer.GetDefault<TKey>();\n#else\n            var comparer = EqualityComparer<TKey>.Default;\n#endif\n\n            return new DistinctUntilChangedObservable<T, TKey>(source, keySelector, comparer);\n        }\n\n        public static IObservable<T> DistinctUntilChanged<T, TKey>(this IObservable<T> source, Func<T, TKey> keySelector, IEqualityComparer<TKey> comparer)\n        {\n            if (source == null) throw new ArgumentNullException(\"source\");\n\n            return new DistinctUntilChangedObservable<T, TKey>(source, keySelector, comparer);\n        }\n\n        public static IObservable<T> IgnoreElements<T>(this IObservable<T> source)\n        {\n            return new IgnoreElementsObservable<T>(source);\n        }\n\n        public static IObservable<Unit> ForEachAsync<T>(this IObservable<T> source, Action<T> onNext)\n        {\n            return new ForEachAsyncObservable<T>(source, onNext);\n        }\n\n        public static IObservable<Unit> ForEachAsync<T>(this IObservable<T> source, Action<T, int> onNext)\n        {\n            return new ForEachAsyncObservable<T>(source, onNext);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a2dd1c80d4559fd4ca9ef62f20d031ab\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observer.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing UniRx.InternalUtil;\n\nnamespace UniRx\n{\n    public static class Observer\n    {\n        internal static IObserver<T> CreateSubscribeObserver<T>(Action<T> onNext, Action<Exception> onError, Action onCompleted)\n        {\n            // need compare for avoid iOS AOT\n            if (onNext == Stubs<T>.Ignore)\n            {\n                return new Subscribe_<T>(onError, onCompleted);\n            }\n            else\n            {\n                return new Subscribe<T>(onNext, onError, onCompleted);\n            }\n        }\n\n        internal static IObserver<T> CreateSubscribeWithStateObserver<T, TState>(TState state, Action<T, TState> onNext, Action<Exception, TState> onError, Action<TState> onCompleted)\n        {\n            return new Subscribe<T, TState>(state, onNext, onError, onCompleted);\n        }\n\n        internal static IObserver<T> CreateSubscribeWithState2Observer<T, TState1, TState2>(TState1 state1, TState2 state2, Action<T, TState1, TState2> onNext, Action<Exception, TState1, TState2> onError, Action<TState1, TState2> onCompleted)\n        {\n            return new Subscribe<T, TState1, TState2>(state1, state2, onNext, onError, onCompleted);\n        }\n\n        internal static IObserver<T> CreateSubscribeWithState3Observer<T, TState1, TState2, TState3>(TState1 state1, TState2 state2, TState3 state3, Action<T, TState1, TState2, TState3> onNext, Action<Exception, TState1, TState2, TState3> onError, Action<TState1, TState2, TState3> onCompleted)\n        {\n            return new Subscribe<T, TState1, TState2, TState3>(state1, state2, state3, onNext, onError, onCompleted);\n        }\n\n        public static IObserver<T> Create<T>(Action<T> onNext)\n        {\n            return Create<T>(onNext, UniRx.Stubs.Throw, UniRx.Stubs.Nop);\n        }\n\n        public static IObserver<T> Create<T>(Action<T> onNext, Action<Exception> onError)\n        {\n            return Create<T>(onNext, onError, UniRx.Stubs.Nop);\n        }\n\n        public static IObserver<T> Create<T>(Action<T> onNext, Action onCompleted)\n        {\n            return Create<T>(onNext, UniRx.Stubs.Throw, onCompleted);\n        }\n\n        public static IObserver<T> Create<T>(Action<T> onNext, Action<Exception> onError, Action onCompleted)\n        {\n            // need compare for avoid iOS AOT\n            if (onNext == Stubs<T>.Ignore)\n            {\n                return new EmptyOnNextAnonymousObserver<T>(onError, onCompleted);\n            }\n            else\n            {\n                return new AnonymousObserver<T>(onNext, onError, onCompleted);\n            }\n        }\n\n        public static IObserver<T> CreateAutoDetachObserver<T>(IObserver<T> observer, IDisposable disposable)\n        {\n            return new AutoDetachObserver<T>(observer, disposable);\n        }\n\n        class AnonymousObserver<T> : IObserver<T>\n        {\n            readonly Action<T> onNext;\n            readonly Action<Exception> onError;\n            readonly Action onCompleted;\n\n            int isStopped = 0;\n\n            public AnonymousObserver(Action<T> onNext, Action<Exception> onError, Action onCompleted)\n            {\n                this.onNext = onNext;\n                this.onError = onError;\n                this.onCompleted = onCompleted;\n            }\n\n            public void OnNext(T value)\n            {\n                if (isStopped == 0)\n                {\n                    onNext(value);\n                }\n            }\n\n            public void OnError(Exception error)\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onError(error);\n                }\n            }\n\n\n            public void OnCompleted()\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onCompleted();\n                }\n            }\n        }\n\n        class EmptyOnNextAnonymousObserver<T> : IObserver<T>\n        {\n            readonly Action<Exception> onError;\n            readonly Action onCompleted;\n\n            int isStopped = 0;\n\n            public EmptyOnNextAnonymousObserver(Action<Exception> onError, Action onCompleted)\n            {\n                this.onError = onError;\n                this.onCompleted = onCompleted;\n            }\n\n            public void OnNext(T value)\n            {\n            }\n\n            public void OnError(Exception error)\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onError(error);\n                }\n            }\n\n            public void OnCompleted()\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onCompleted();\n                }\n            }\n        }\n\n        // same as AnonymousObserver...\n        class Subscribe<T> : IObserver<T>\n        {\n            readonly Action<T> onNext;\n            readonly Action<Exception> onError;\n            readonly Action onCompleted;\n\n            int isStopped = 0;\n\n            public Subscribe(Action<T> onNext, Action<Exception> onError, Action onCompleted)\n            {\n                this.onNext = onNext;\n                this.onError = onError;\n                this.onCompleted = onCompleted;\n            }\n\n            public void OnNext(T value)\n            {\n                if (isStopped == 0)\n                {\n                    onNext(value);\n                }\n            }\n\n            public void OnError(Exception error)\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onError(error);\n                }\n            }\n\n\n            public void OnCompleted()\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onCompleted();\n                }\n            }\n        }\n\n        // same as EmptyOnNextAnonymousObserver...\n        class Subscribe_<T> : IObserver<T>\n        {\n            readonly Action<Exception> onError;\n            readonly Action onCompleted;\n\n            int isStopped = 0;\n\n            public Subscribe_(Action<Exception> onError, Action onCompleted)\n            {\n                this.onError = onError;\n                this.onCompleted = onCompleted;\n            }\n\n            public void OnNext(T value)\n            {\n            }\n\n            public void OnError(Exception error)\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onError(error);\n                }\n            }\n\n            public void OnCompleted()\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onCompleted();\n                }\n            }\n        }\n\n        // with state\n        class Subscribe<T, TState> : IObserver<T>\n        {\n            readonly TState state;\n            readonly Action<T, TState> onNext;\n            readonly Action<Exception, TState> onError;\n            readonly Action<TState> onCompleted;\n\n            int isStopped = 0;\n\n            public Subscribe(TState state, Action<T, TState> onNext, Action<Exception, TState> onError, Action<TState> onCompleted)\n            {\n                this.state = state;\n                this.onNext = onNext;\n                this.onError = onError;\n                this.onCompleted = onCompleted;\n            }\n\n            public void OnNext(T value)\n            {\n                if (isStopped == 0)\n                {\n                    onNext(value, state);\n                }\n            }\n\n            public void OnError(Exception error)\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onError(error, state);\n                }\n            }\n\n\n            public void OnCompleted()\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onCompleted(state);\n                }\n            }\n        }\n\n        class Subscribe<T, TState1, TState2> : IObserver<T>\n        {\n            readonly TState1 state1;\n            readonly TState2 state2;\n            readonly Action<T, TState1, TState2> onNext;\n            readonly Action<Exception, TState1, TState2> onError;\n            readonly Action<TState1, TState2> onCompleted;\n\n            int isStopped = 0;\n\n            public Subscribe(TState1 state1, TState2 state2, Action<T, TState1, TState2> onNext, Action<Exception, TState1, TState2> onError, Action<TState1, TState2> onCompleted)\n            {\n                this.state1 = state1;\n                this.state2 = state2;\n                this.onNext = onNext;\n                this.onError = onError;\n                this.onCompleted = onCompleted;\n            }\n\n            public void OnNext(T value)\n            {\n                if (isStopped == 0)\n                {\n                    onNext(value, state1, state2);\n                }\n            }\n\n            public void OnError(Exception error)\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onError(error, state1, state2);\n                }\n            }\n\n            public void OnCompleted()\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onCompleted(state1, state2);\n                }\n            }\n        }\n\n        class Subscribe<T, TState1, TState2, TState3> : IObserver<T>\n        {\n            readonly TState1 state1;\n            readonly TState2 state2;\n            readonly TState3 state3;\n            readonly Action<T, TState1, TState2, TState3> onNext;\n            readonly Action<Exception, TState1, TState2, TState3> onError;\n            readonly Action<TState1, TState2, TState3> onCompleted;\n\n            int isStopped = 0;\n\n            public Subscribe(TState1 state1, TState2 state2, TState3 state3, Action<T, TState1, TState2, TState3> onNext, Action<Exception, TState1, TState2, TState3> onError, Action<TState1, TState2, TState3> onCompleted)\n            {\n                this.state1 = state1;\n                this.state2 = state2;\n                this.state3 = state3;\n                this.onNext = onNext;\n                this.onError = onError;\n                this.onCompleted = onCompleted;\n            }\n\n            public void OnNext(T value)\n            {\n                if (isStopped == 0)\n                {\n                    onNext(value, state1, state2, state3);\n                }\n            }\n\n            public void OnError(Exception error)\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onError(error, state1, state2, state3);\n                }\n            }\n\n\n            public void OnCompleted()\n            {\n                if (Interlocked.Increment(ref isStopped) == 1)\n                {\n                    onCompleted(state1, state2, state3);\n                }\n            }\n        }\n\n        class AutoDetachObserver<T> : UniRx.Operators.OperatorObserverBase<T, T>\n        {\n            public AutoDetachObserver(IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    public static partial class ObserverExtensions\n    {\n        public static IObserver<T> Synchronize<T>(this IObserver<T> observer)\n        {\n            return new UniRx.Operators.SynchronizedObserver<T>(observer, new object());\n        }\n\n        public static IObserver<T> Synchronize<T>(this IObserver<T> observer, object gate)\n        {\n            return new UniRx.Operators.SynchronizedObserver<T>(observer, gate);\n        }\n    }\n\n    public static partial class ObservableExtensions\n    {\n        public static IDisposable Subscribe<T>(this IObservable<T> source)\n        {\n            return source.Subscribe(UniRx.InternalUtil.ThrowObserver<T>.Instance);\n        }\n\n        public static IDisposable Subscribe<T>(this IObservable<T> source, Action<T> onNext)\n        {\n            return source.Subscribe(Observer.CreateSubscribeObserver(onNext, Stubs.Throw, Stubs.Nop));\n        }\n\n        public static IDisposable Subscribe<T>(this IObservable<T> source, Action<T> onNext, Action<Exception> onError)\n        {\n            return source.Subscribe(Observer.CreateSubscribeObserver(onNext, onError, Stubs.Nop));\n        }\n\n        public static IDisposable Subscribe<T>(this IObservable<T> source, Action<T> onNext, Action onCompleted)\n        {\n            return source.Subscribe(Observer.CreateSubscribeObserver(onNext, Stubs.Throw, onCompleted));\n        }\n\n        public static IDisposable Subscribe<T>(this IObservable<T> source, Action<T> onNext, Action<Exception> onError, Action onCompleted)\n        {\n            return source.Subscribe(Observer.CreateSubscribeObserver(onNext, onError, onCompleted));\n        }\n\n        public static IDisposable SubscribeWithState<T, TState>(this IObservable<T> source, TState state, Action<T, TState> onNext)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithStateObserver(state, onNext, Stubs<TState>.Throw, Stubs<TState>.Ignore));\n        }\n\n        public static IDisposable SubscribeWithState<T, TState>(this IObservable<T> source, TState state, Action<T, TState> onNext, Action<Exception, TState> onError)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithStateObserver(state, onNext, onError, Stubs<TState>.Ignore));\n        }\n\n        public static IDisposable SubscribeWithState<T, TState>(this IObservable<T> source, TState state, Action<T, TState> onNext, Action<TState> onCompleted)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithStateObserver(state, onNext, Stubs<TState>.Throw, onCompleted));\n        }\n\n        public static IDisposable SubscribeWithState<T, TState>(this IObservable<T> source, TState state, Action<T, TState> onNext, Action<Exception, TState> onError, Action<TState> onCompleted)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithStateObserver(state, onNext, onError, onCompleted));\n        }\n\n        public static IDisposable SubscribeWithState2<T, TState1, TState2>(this IObservable<T> source, TState1 state1, TState2 state2, Action<T, TState1, TState2> onNext)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithState2Observer(state1, state2, onNext, Stubs<TState1, TState2>.Throw, Stubs<TState1, TState2>.Ignore));\n        }\n\n        public static IDisposable SubscribeWithState2<T, TState1, TState2>(this IObservable<T> source, TState1 state1, TState2 state2, Action<T, TState1, TState2> onNext, Action<Exception, TState1, TState2> onError)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithState2Observer(state1, state2, onNext, onError, Stubs<TState1, TState2>.Ignore));\n        }\n\n        public static IDisposable SubscribeWithState2<T, TState1, TState2>(this IObservable<T> source, TState1 state1, TState2 state2, Action<T, TState1, TState2> onNext, Action<TState1, TState2> onCompleted)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithState2Observer(state1, state2, onNext, Stubs<TState1, TState2>.Throw, onCompleted));\n        }\n\n        public static IDisposable SubscribeWithState2<T, TState1, TState2>(this IObservable<T> source, TState1 state1, TState2 state2, Action<T, TState1, TState2> onNext, Action<Exception, TState1, TState2> onError, Action<TState1, TState2> onCompleted)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithState2Observer(state1, state2, onNext, onError, onCompleted));\n        }\n\n        public static IDisposable SubscribeWithState3<T, TState1, TState2, TState3>(this IObservable<T> source, TState1 state1, TState2 state2, TState3 state3, Action<T, TState1, TState2, TState3> onNext)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithState3Observer(state1, state2, state3, onNext, Stubs<TState1, TState2, TState3>.Throw, Stubs<TState1, TState2, TState3>.Ignore));\n        }\n\n        public static IDisposable SubscribeWithState3<T, TState1, TState2, TState3>(this IObservable<T> source, TState1 state1, TState2 state2, TState3 state3, Action<T, TState1, TState2, TState3> onNext, Action<Exception, TState1, TState2, TState3> onError)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithState3Observer(state1, state2, state3, onNext, onError, Stubs<TState1, TState2, TState3>.Ignore));\n        }\n\n        public static IDisposable SubscribeWithState3<T, TState1, TState2, TState3>(this IObservable<T> source, TState1 state1, TState2 state2, TState3 state3, Action<T, TState1, TState2, TState3> onNext, Action<TState1, TState2, TState3> onCompleted)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithState3Observer(state1, state2, state3, onNext, Stubs<TState1, TState2, TState3>.Throw, onCompleted));\n        }\n\n        public static IDisposable SubscribeWithState3<T, TState1, TState2, TState3>(this IObservable<T> source, TState1 state1, TState2 state2, TState3 state3, Action<T, TState1, TState2, TState3> onNext, Action<Exception, TState1, TState2, TState3> onError, Action<TState1, TState2, TState3> onCompleted)\n        {\n            return source.Subscribe(Observer.CreateSubscribeWithState3Observer(state1, state2, state3, onNext, onError, onCompleted));\n        }\n    }\n\n    internal static class Stubs\n    {\n        public static readonly Action Nop = () => { };\n        public static readonly Action<Exception> Throw = ex => { ex.Throw(); };\n\n        // marker for CatchIgnore and Catch avoid iOS AOT problem.\n        public static IObservable<TSource> CatchIgnore<TSource>(Exception ex)\n        {\n            return Observable.Empty<TSource>();\n        }\n    }\n\n    internal static class Stubs<T>\n    {\n        public static readonly Action<T> Ignore = (T t) => { };\n        public static readonly Func<T, T> Identity = (T t) => t;\n        public static readonly Action<Exception, T> Throw = (ex, _) => { ex.Throw(); };\n    }\n\n    internal static class Stubs<T1, T2>\n    {\n        public static readonly Action<T1, T2> Ignore = (x, y) => { };\n        public static readonly Action<Exception, T1, T2> Throw = (ex, _, __) => { ex.Throw(); };\n    }\n\n\n    internal static class Stubs<T1, T2, T3>\n    {\n        public static readonly Action<T1, T2, T3> Ignore = (x, y, z) => { };\n        public static readonly Action<Exception, T1, T2, T3> Throw = (ex, _, __, ___) => { ex.Throw(); };\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Observer.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 57d25c3f6fa1d334e89c384393252b8a\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Aggregate.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class AggregateObservable<TSource> : OperatorObservableBase<TSource>\n    {\n        readonly IObservable<TSource> source;\n        readonly Func<TSource, TSource, TSource> accumulator;\n\n        public AggregateObservable(IObservable<TSource> source, Func<TSource, TSource, TSource> accumulator)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.accumulator = accumulator;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TSource> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Aggregate(this, observer, cancel));\n        }\n\n        class Aggregate : OperatorObserverBase<TSource, TSource>\n        {\n            readonly AggregateObservable<TSource> parent;\n            TSource accumulation;\n            bool seenValue;\n\n            public Aggregate(AggregateObservable<TSource> parent, IObserver<TSource> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.seenValue = false;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                if (!seenValue)\n                {\n                    seenValue = true;\n                    accumulation = value;\n                }\n                else\n                {\n                    try\n                    {\n                        accumulation = parent.accumulator(accumulation, value);\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); }\n                        finally { Dispose(); }\n                        return;\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (!seenValue)\n                {\n                    throw new InvalidOperationException(\"Sequence contains no elements.\");\n                }\n\n                observer.OnNext(accumulation);\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class AggregateObservable<TSource, TAccumulate> : OperatorObservableBase<TAccumulate>\n    {\n        readonly IObservable<TSource> source;\n        readonly TAccumulate seed;\n        readonly Func<TAccumulate, TSource, TAccumulate> accumulator;\n\n        public AggregateObservable(IObservable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> accumulator)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.seed = seed;\n            this.accumulator = accumulator;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TAccumulate> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Aggregate(this, observer, cancel));\n        }\n\n        class Aggregate : OperatorObserverBase<TSource, TAccumulate>\n        {\n            readonly AggregateObservable<TSource, TAccumulate> parent;\n            TAccumulate accumulation;\n\n            public Aggregate(AggregateObservable<TSource, TAccumulate> parent, IObserver<TAccumulate> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.accumulation = parent.seed;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                try\n                {\n                    accumulation = parent.accumulator(accumulation, value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                observer.OnNext(accumulation);\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class AggregateObservable<TSource, TAccumulate, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TSource> source;\n        readonly TAccumulate seed;\n        readonly Func<TAccumulate, TSource, TAccumulate> accumulator;\n        readonly Func<TAccumulate, TResult> resultSelector;\n\n        public AggregateObservable(IObservable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> accumulator, Func<TAccumulate, TResult> resultSelector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.seed = seed;\n            this.accumulator = accumulator;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Aggregate(this, observer, cancel));\n        }\n\n        class Aggregate : OperatorObserverBase<TSource, TResult>\n        {\n            readonly AggregateObservable<TSource, TAccumulate, TResult> parent;\n            TAccumulate accumulation;\n\n            public Aggregate(AggregateObservable<TSource, TAccumulate, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.accumulation = parent.seed;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                try\n                {\n                    accumulation = parent.accumulator(accumulation, value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                TResult result;\n                try\n                {\n                    result = parent.resultSelector(accumulation);\n                }\n                catch (Exception ex)\n                {\n                    OnError(ex);\n                    return;\n                }\n\n                observer.OnNext(result);\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Aggregate.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f777fc54ecf275349a3f007e760705b3\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Amb.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class AmbObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IObservable<T> second;\n\n        public AmbObservable(IObservable<T> source, IObservable<T> second)\n            : base(source.IsRequiredSubscribeOnCurrentThread() || second.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.second = second;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new AmbOuterObserver(this, observer, cancel).Run();\n        }\n\n        class AmbOuterObserver : OperatorObserverBase<T, T>\n        {\n            enum AmbState\n            {\n                Left, Right, Neither\n            }\n\n            readonly AmbObservable<T> parent;\n            readonly object gate = new object();\n            SingleAssignmentDisposable leftSubscription;\n            SingleAssignmentDisposable rightSubscription;\n            AmbState choice = AmbState.Neither;\n\n            public AmbOuterObserver(AmbObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                leftSubscription = new SingleAssignmentDisposable();\n                rightSubscription = new SingleAssignmentDisposable();\n                var d = StableCompositeDisposable.Create(leftSubscription, rightSubscription);\n\n                var left = new Amb();\n                left.targetDisposable = d;\n                left.targetObserver = new AmbDecisionObserver(this, AmbState.Left, rightSubscription, left);\n\n                var right = new Amb();\n                right.targetDisposable = d;\n                right.targetObserver = new AmbDecisionObserver(this, AmbState.Right, leftSubscription, right);\n\n                leftSubscription.Disposable = parent.source.Subscribe(left);\n                rightSubscription.Disposable = parent.second.Subscribe(right);\n\n                return d;\n            }\n\n            public override void OnNext(T value)\n            {\n                // no use\n            }\n\n            public override void OnError(Exception error)\n            {\n                // no use\n            }\n\n            public override void OnCompleted()\n            {\n                // no use\n            }\n\n            class Amb : IObserver<T>\n            {\n                public IObserver<T> targetObserver;\n                public IDisposable targetDisposable;\n\n                public void OnNext(T value)\n                {\n                    targetObserver.OnNext(value);\n                }\n\n                public void OnError(Exception error)\n                {\n                    try\n                    {\n                        targetObserver.OnError(error);\n                    }\n                    finally\n                    {\n                        targetObserver = UniRx.InternalUtil.EmptyObserver<T>.Instance;\n                        targetDisposable.Dispose();\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    try\n                    {\n                        targetObserver.OnCompleted();\n                    }\n                    finally\n                    {\n                        targetObserver = UniRx.InternalUtil.EmptyObserver<T>.Instance;\n                        targetDisposable.Dispose();\n                    }\n                }\n            }\n\n            class AmbDecisionObserver : IObserver<T>\n            {\n                readonly AmbOuterObserver parent;\n                readonly AmbState me;\n                readonly IDisposable otherSubscription;\n                readonly Amb self;\n\n                public AmbDecisionObserver(AmbOuterObserver parent, AmbState me, IDisposable otherSubscription, Amb self)\n                {\n                    this.parent = parent;\n                    this.me = me;\n                    this.otherSubscription = otherSubscription;\n                    this.self = self;\n                }\n\n                public void OnNext(T value)\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.choice == AmbState.Neither)\n                        {\n                            parent.choice = me;\n                            otherSubscription.Dispose();\n                            self.targetObserver = parent.observer;\n                        }\n\n                        if (parent.choice == me) self.targetObserver.OnNext(value);\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.choice == AmbState.Neither)\n                        {\n                            parent.choice = me;\n                            otherSubscription.Dispose();\n                            self.targetObserver = parent.observer;\n                        }\n\n                        if (parent.choice == me)\n                        {\n                            self.targetObserver.OnError(error);\n                        }\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.choice == AmbState.Neither)\n                        {\n                            parent.choice = me;\n                            otherSubscription.Dispose();\n                            self.targetObserver = parent.observer;\n                        }\n\n                        if (parent.choice == me)\n                        {\n                            self.targetObserver.OnCompleted();\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Amb.cs.meta",
    "content": "fileFormatVersion: 2\nguid: ad1a22922a735ee479baf0e179648532\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/AsObservable.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class AsObservableObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n\n        public AsObservableObservable(IObservable<T> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new AsObservable(observer, cancel));\n        }\n\n        class AsObservable : OperatorObserverBase<T, T>\n        {\n            public AsObservable(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/AsObservable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9e4851fd48b2b42469d71b311254877b\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/AsSingleUnitObservable.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class AsSingleUnitObservableObservable<T> : OperatorObservableBase<Unit>\n    {\n        readonly IObservable<T> source;\n\n        public AsSingleUnitObservableObservable(IObservable<T> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Unit> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new AsSingleUnitObservable(observer, cancel));\n        }\n\n        class AsSingleUnitObservable : OperatorObserverBase<T, Unit>\n        {\n            public AsSingleUnitObservable(IObserver<Unit> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                observer.OnNext(Unit.Default);\n\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/AsSingleUnitObservable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 3b5e05dba2d3aca4e9c3a6312bef8690\ntimeCreated: 1462636004\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/AsUnitObservable.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class AsUnitObservableObservable<T> : OperatorObservableBase<Unit>\n    {\n        readonly IObservable<T> source;\n\n        public AsUnitObservableObservable(IObservable<T> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Unit> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new AsUnitObservable(observer, cancel));\n        }\n\n        class AsUnitObservable : OperatorObserverBase<T, Unit>\n        {\n            public AsUnitObservable(IObserver<Unit> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(Unit.Default);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/AsUnitObservable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 236f5f407bf92c949844fcaf450af450\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Buffer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class BufferObservable<T> : OperatorObservableBase<IList<T>>\n    {\n        readonly IObservable<T> source;\n        readonly int count;\n        readonly int skip;\n\n        readonly TimeSpan timeSpan;\n        readonly TimeSpan timeShift;\n        readonly IScheduler scheduler;\n\n        public BufferObservable(IObservable<T> source, int count, int skip)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.count = count;\n            this.skip = skip;\n        }\n\n        public BufferObservable(IObservable<T> source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.timeSpan = timeSpan;\n            this.timeShift = timeShift;\n            this.scheduler = scheduler;\n        }\n\n        public BufferObservable(IObservable<T> source, TimeSpan timeSpan, int count, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.timeSpan = timeSpan;\n            this.count = count;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<IList<T>> observer, IDisposable cancel)\n        {\n            // count,skip\n            if (scheduler == null)\n            {\n                if (skip == 0)\n                {\n                    return new Buffer(this, observer, cancel).Run();\n                }\n                else\n                {\n                    return new Buffer_(this, observer, cancel).Run();\n                }\n            }\n            else\n            {\n                // time + count\n                if (count > 0)\n                {\n                    return new BufferTC(this, observer, cancel).Run();\n                }\n                else\n                {\n                    if (timeSpan == timeShift)\n                    {\n                        return new BufferT(this, observer, cancel).Run();\n                    }\n                    else\n                    {\n                        return new BufferTS(this, observer, cancel).Run();\n                    }\n                }\n            }\n        }\n\n        // count only\n        class Buffer : OperatorObserverBase<T, IList<T>>\n        {\n            readonly BufferObservable<T> parent;\n            List<T> list;\n\n            public Buffer(BufferObservable<T> parent, IObserver<IList<T>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                list = new List<T>(parent.count);\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                list.Add(value);\n                if (list.Count == parent.count)\n                {\n                    observer.OnNext(list);\n                    list = new List<T>(parent.count);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (list.Count > 0)\n                {\n                    observer.OnNext(list);\n                }\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        // count and skip\n        class Buffer_ : OperatorObserverBase<T, IList<T>>\n        {\n            readonly BufferObservable<T> parent;\n            Queue<List<T>> q;\n            int index;\n\n            public Buffer_(BufferObservable<T> parent, IObserver<IList<T>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                q = new Queue<List<T>>();\n                index = -1;\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                index++;\n\n                if (index % parent.skip == 0)\n                {\n                    q.Enqueue(new List<T>(parent.count));\n                }\n\n                var len = q.Count;\n                for (int i = 0; i < len; i++)\n                {\n                    var list = q.Dequeue();\n                    list.Add(value);\n                    if (list.Count == parent.count)\n                    {\n                        observer.OnNext(list);\n                    }\n                    else\n                    {\n                        q.Enqueue(list);\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                foreach (var list in q)\n                {\n                    observer.OnNext(list);\n                }\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        // timespan = timeshift\n        class BufferT : OperatorObserverBase<T, IList<T>>\n        {\n            static readonly T[] EmptyArray = new T[0];\n\n            readonly BufferObservable<T> parent;\n            readonly object gate = new object();\n\n            List<T> list;\n\n            public BufferT(BufferObservable<T> parent, IObserver<IList<T>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                list = new List<T>();\n\n                var timerSubscription = Observable.Interval(parent.timeSpan, parent.scheduler)\n                    .Subscribe(new Buffer(this));\n\n                var sourceSubscription = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(timerSubscription, sourceSubscription);\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    list.Add(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                List<T> currentList;\n                lock (gate)\n                {\n                    currentList = list;\n                }\n                observer.OnNext(currentList);\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n\n            class Buffer : IObserver<long>\n            {\n                BufferT parent;\n\n                public Buffer(BufferT parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnNext(long value)\n                {\n                    var isZero = false;\n                    List<T> currentList;\n                    lock (parent.gate)\n                    {\n                        currentList = parent.list;\n                        if (currentList.Count != 0)\n                        {\n                            parent.list = new List<T>();\n                        }\n                        else\n                        {\n                            isZero = true;\n                        }\n                    }\n\n                    parent.observer.OnNext((isZero) ? (IList<T>)EmptyArray : currentList);\n                }\n\n                public void OnError(Exception error)\n                {\n                }\n\n                public void OnCompleted()\n                {\n                }\n            }\n        }\n\n        // timespan + timeshift\n        class BufferTS : OperatorObserverBase<T, IList<T>>\n        {\n            readonly BufferObservable<T> parent;\n            readonly object gate = new object();\n\n            Queue<IList<T>> q;\n            TimeSpan totalTime;\n            TimeSpan nextShift;\n            TimeSpan nextSpan;\n            SerialDisposable timerD;\n\n            public BufferTS(BufferObservable<T> parent, IObserver<IList<T>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                totalTime = TimeSpan.Zero;\n                nextShift = parent.timeShift;\n                nextSpan = parent.timeSpan;\n\n                q = new Queue<IList<T>>();\n\n                timerD = new SerialDisposable();\n                q.Enqueue(new List<T>());\n                CreateTimer();\n\n                var subscription = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(subscription, timerD);\n            }\n\n            void CreateTimer()\n            {\n                var m = new SingleAssignmentDisposable();\n                timerD.Disposable = m;\n\n                var isSpan = false;\n                var isShift = false;\n                if (nextSpan == nextShift)\n                {\n                    isSpan = true;\n                    isShift = true;\n                }\n                else if (nextSpan < nextShift)\n                    isSpan = true;\n                else\n                    isShift = true;\n\n                var newTotalTime = isSpan ? nextSpan : nextShift;\n                var ts = newTotalTime - totalTime;\n                totalTime = newTotalTime;\n\n                if (isSpan)\n                    nextSpan += parent.timeShift;\n                if (isShift)\n                    nextShift += parent.timeShift;\n\n                m.Disposable = parent.scheduler.Schedule(ts, () =>\n                {\n                    lock (gate)\n                    {\n                        if (isShift)\n                        {\n                            var s = new List<T>();\n                            q.Enqueue(s);\n                        }\n                        if (isSpan)\n                        {\n                            var s = q.Dequeue();\n                            observer.OnNext(s);\n                        }\n                    }\n\n                    CreateTimer();\n                });\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    foreach (var s in q)\n                    {\n                        s.Add(value);\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (gate)\n                {\n                    foreach (var list in q)\n                    {\n                        observer.OnNext(list);\n                    }\n\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n        }\n\n        // timespan + count\n        class BufferTC : OperatorObserverBase<T, IList<T>>\n        {\n            static readonly T[] EmptyArray = new T[0]; // cache\n\n            readonly BufferObservable<T> parent;\n            readonly object gate = new object();\n\n            List<T> list;\n            long timerId;\n            SerialDisposable timerD;\n\n            public BufferTC(BufferObservable<T> parent, IObserver<IList<T>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                list = new List<T>();\n                timerId = 0L;\n                timerD = new SerialDisposable();\n\n                CreateTimer();\n                var subscription = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(subscription, timerD);\n            }\n\n            void CreateTimer()\n            {\n                var currentTimerId = timerId;\n                var timerS = new SingleAssignmentDisposable();\n                timerD.Disposable = timerS; // restart timer(dispose before)\n\n\n                var periodicScheduler = parent.scheduler as ISchedulerPeriodic;\n                if (periodicScheduler != null)\n                {\n                    timerS.Disposable = periodicScheduler.SchedulePeriodic(parent.timeSpan, () => OnNextTick(currentTimerId));\n                }\n                else\n                {\n                    timerS.Disposable = parent.scheduler.Schedule(parent.timeSpan, self => OnNextRecursive(currentTimerId, self));\n                }\n            }\n\n            void OnNextTick(long currentTimerId)\n            {\n                var isZero = false;\n                List<T> currentList;\n                lock (gate)\n                {\n                    if (currentTimerId != timerId) return;\n\n                    currentList = list;\n                    if (currentList.Count != 0)\n                    {\n                        list = new List<T>();\n                    }\n                    else\n                    {\n                        isZero = true;\n                    }\n                }\n\n                observer.OnNext((isZero) ? (IList<T>)EmptyArray : currentList);\n            }\n\n            void OnNextRecursive(long currentTimerId, Action<TimeSpan> self)\n            {\n                var isZero = false;\n                List<T> currentList;\n                lock (gate)\n                {\n                    if (currentTimerId != timerId) return;\n\n                    currentList = list;\n                    if (currentList.Count != 0)\n                    {\n                        list = new List<T>();\n                    }\n                    else\n                    {\n                        isZero = true;\n                    }\n                }\n\n                observer.OnNext((isZero) ? (IList<T>)EmptyArray : currentList);\n                self(parent.timeSpan);\n            }\n\n            public override void OnNext(T value)\n            {\n                List<T> currentList = null;\n                lock (gate)\n                {\n                    list.Add(value);\n                    if (list.Count == parent.count)\n                    {\n                        currentList = list;\n                        list = new List<T>();\n                        timerId++;\n                        CreateTimer();\n                    }\n                }\n                if (currentList != null)\n                {\n                    observer.OnNext(currentList);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                List<T> currentList;\n                lock (gate)\n                {\n                    timerId++;\n                    currentList = list;\n                }\n                observer.OnNext(currentList);\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class BufferObservable<TSource, TWindowBoundary> : OperatorObservableBase<IList<TSource>>\n    {\n        readonly IObservable<TSource> source;\n        readonly IObservable<TWindowBoundary> windowBoundaries;\n\n        public BufferObservable(IObservable<TSource> source, IObservable<TWindowBoundary> windowBoundaries)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.windowBoundaries = windowBoundaries;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<IList<TSource>> observer, IDisposable cancel)\n        {\n            return new Buffer(this, observer, cancel).Run();\n        }\n\n        class Buffer : OperatorObserverBase<TSource, IList<TSource>>\n        {\n            static readonly TSource[] EmptyArray = new TSource[0]; // cache\n\n            readonly BufferObservable<TSource, TWindowBoundary> parent;\n            object gate = new object();\n            List<TSource> list;\n\n            public Buffer(BufferObservable<TSource, TWindowBoundary> parent, IObserver<IList<TSource>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                list = new List<TSource>();\n\n                var sourceSubscription = parent.source.Subscribe(this);\n                var windowSubscription = parent.windowBoundaries.Subscribe(new Buffer_(this));\n\n                return StableCompositeDisposable.Create(sourceSubscription, windowSubscription);\n            }\n\n            public override void OnNext(TSource value)\n            {\n                lock (gate)\n                {\n                    list.Add(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (gate)\n                {\n                    var currentList = list;\n                    list = new List<TSource>(); // safe\n                    observer.OnNext(currentList);\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n\n            class Buffer_ : IObserver<TWindowBoundary>\n            {\n                readonly Buffer parent;\n\n                public Buffer_(Buffer parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnNext(TWindowBoundary value)\n                {\n                    var isZero = false;\n                    List<TSource> currentList;\n                    lock (parent.gate)\n                    {\n                        currentList = parent.list;\n                        if (currentList.Count != 0)\n                        {\n                            parent.list = new List<TSource>();\n                        }\n                        else\n                        {\n                            isZero = true;\n                        }\n                    }\n                    if (isZero)\n                    {\n                        parent.observer.OnNext(EmptyArray);\n                    }\n                    else\n                    {\n                        parent.observer.OnNext(currentList);\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    parent.OnError(error);\n                }\n\n                public void OnCompleted()\n                {\n                    parent.OnCompleted();\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Buffer.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4137aec9640d3ea41a740d677026aa8c\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Cast.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class CastObservable<TSource, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TSource> source;\n\n        public CastObservable(IObservable<TSource> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Cast(observer, cancel));\n        }\n\n        class Cast : OperatorObserverBase<TSource, TResult>\n        {\n            public Cast(IObserver<TResult> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(TSource value)\n            {\n                var castValue = default(TResult);\n                try\n                {\n                    castValue = (TResult)(object)value;\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                observer.OnNext(castValue);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Cast.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e70ae559c9b927742acbff91d50b3b22\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Catch.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class CatchObservable<T, TException> : OperatorObservableBase<T>\n        where TException : Exception\n    {\n        readonly IObservable<T> source;\n        readonly Func<TException, IObservable<T>> errorHandler;\n\n        public CatchObservable(IObservable<T> source, Func<TException, IObservable<T>> errorHandler)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.errorHandler = errorHandler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Catch(this, observer, cancel).Run();\n        }\n\n        class Catch : OperatorObserverBase<T, T>\n        {\n            readonly CatchObservable<T, TException> parent;\n            SingleAssignmentDisposable sourceSubscription;\n            SingleAssignmentDisposable exceptionSubscription;\n\n            public Catch(CatchObservable<T, TException> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                this.sourceSubscription = new SingleAssignmentDisposable();\n                this.exceptionSubscription = new SingleAssignmentDisposable();\n\n                this.sourceSubscription.Disposable = parent.source.Subscribe(this);\n                return StableCompositeDisposable.Create(sourceSubscription, exceptionSubscription);\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                var e = error as TException;\n                if (e != null)\n                {\n                    IObservable<T> next;\n                    try\n                    {\n                        if (parent.errorHandler == Stubs.CatchIgnore<T>)\n                        {\n                            next = Observable.Empty<T>(); // for avoid iOS AOT\n                        }\n                        else\n                        {\n                            next = parent.errorHandler(e);\n                        }\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); } finally { Dispose(); };\n                        return;\n                    }\n\n                    exceptionSubscription.Disposable = next.Subscribe(observer);\n                }\n                else\n                {\n                    try { observer.OnError(error); } finally { Dispose(); };\n                    return;\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n        }\n    }\n\n\n    internal class CatchObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IEnumerable<IObservable<T>> sources;\n\n        public CatchObservable(IEnumerable<IObservable<T>> sources)\n            : base(true)\n        {\n            this.sources = sources;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Catch(this, observer, cancel).Run();\n        }\n\n        class Catch : OperatorObserverBase<T, T>\n        {\n            readonly CatchObservable<T> parent;\n            readonly object gate = new object();\n            bool isDisposed;\n            IEnumerator<IObservable<T>> e;\n            SerialDisposable subscription;\n            Exception lastException;\n            Action nextSelf;\n\n            public Catch(CatchObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                isDisposed = false;\n                e = parent.sources.GetEnumerator();\n                subscription = new SerialDisposable();\n\n                var schedule = Scheduler.DefaultSchedulers.TailRecursion.Schedule(RecursiveRun);\n\n                return StableCompositeDisposable.Create(schedule, subscription, Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        this.isDisposed = true;\n                        this.e.Dispose();\n                    }\n                }));\n            }\n\n            void RecursiveRun(Action self)\n            {\n                lock (gate)\n                {\n                    nextSelf = self;\n                    if (isDisposed) return;\n\n                    var current = default(IObservable<T>);\n                    var hasNext = false;\n                    var ex = default(Exception);\n\n                    try\n                    {\n                        hasNext = e.MoveNext();\n                        if (hasNext)\n                        {\n                            current = e.Current;\n                            if (current == null) throw new InvalidOperationException(\"sequence is null.\");\n                        }\n                        else\n                        {\n                            e.Dispose();\n                        }\n                    }\n                    catch (Exception exception)\n                    {\n                        ex = exception;\n                        e.Dispose();\n                    }\n\n                    if (ex != null)\n                    {\n                        try { observer.OnError(ex); }\n                        finally { Dispose(); }\n                        return;\n                    }\n\n                    if (!hasNext)\n                    {\n                        if (lastException != null)\n                        {\n                            try { observer.OnError(lastException); }\n                            finally { Dispose(); }\n                        }\n                        else\n                        {\n                            try { observer.OnCompleted(); }\n                            finally { Dispose(); }\n                        }\n                        return;\n                    }\n\n                    var source = current;\n                    var d = new SingleAssignmentDisposable();\n                    subscription.Disposable = d;\n                    d.Disposable = source.Subscribe(this);\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                lastException = error;\n                nextSelf();\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n                return;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Catch.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 404a684db151ca34f8258c6fb373db8d\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/CombineLatest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Operators\n{\n    public delegate TR CombineLatestFunc<T1, T2, T3, TR>(T1 arg1, T2 arg2, T3 arg3);\n    public delegate TR CombineLatestFunc<T1, T2, T3, T4, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);\n    public delegate TR CombineLatestFunc<T1, T2, T3, T4, T5, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);\n    public delegate TR CombineLatestFunc<T1, T2, T3, T4, T5, T6, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);\n    public delegate TR CombineLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);\n\n\n    // binary\n    internal class CombineLatestObservable<TLeft, TRight, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TLeft> left;\n        readonly IObservable<TRight> right;\n        readonly Func<TLeft, TRight, TResult> selector;\n\n        public CombineLatestObservable(IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)\n            : base(left.IsRequiredSubscribeOnCurrentThread() || right.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.left = left;\n            this.right = right;\n            this.selector = selector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            return new CombineLatest(this, observer, cancel).Run();\n        }\n\n        class CombineLatest : OperatorObserverBase<TResult, TResult>\n        {\n            readonly CombineLatestObservable<TLeft, TRight, TResult> parent;\n            readonly object gate = new object();\n\n            TLeft leftValue = default(TLeft);\n            bool leftStarted = false;\n            bool leftCompleted = false;\n\n            TRight rightValue = default(TRight);\n            bool rightStarted = false;\n            bool rightCompleted = false;\n\n            public CombineLatest(CombineLatestObservable<TLeft, TRight, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var l = parent.left.Subscribe(new LeftObserver(this));\n                var r = parent.right.Subscribe(new RightObserver(this));\n\n                return StableCompositeDisposable.Create(l, r);\n            }\n\n            // publish in lock\n            public void Publish()\n            {\n                if ((leftCompleted && !leftStarted) || (rightCompleted && !rightStarted))\n                {\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                    return;\n                }\n                else if (!(leftStarted && rightStarted))\n                {\n                    return;\n                }\n\n                TResult v;\n                try\n                {\n                    v = parent.selector(leftValue, rightValue);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                OnNext(v);\n            }\n\n            public override void OnNext(TResult value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n\n            class LeftObserver : IObserver<TLeft>\n            {\n                readonly CombineLatest parent;\n\n                public LeftObserver(CombineLatest parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnNext(TLeft value)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.leftStarted = true;\n                        parent.leftValue = value;\n                        parent.Publish();\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(error);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.leftCompleted = true;\n                        if (parent.rightCompleted) parent.OnCompleted();\n                    }\n                }\n            }\n\n            class RightObserver : IObserver<TRight>\n            {\n                readonly CombineLatest parent;\n\n                public RightObserver(CombineLatest parent)\n                {\n                    this.parent = parent;\n                }\n\n\n                public void OnNext(TRight value)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.rightStarted = true;\n                        parent.rightValue = value;\n                        parent.Publish();\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(error);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.rightCompleted = true;\n                        if (parent.leftCompleted) parent.OnCompleted();\n                    }\n                }\n            }\n        }\n    }\n\n    // array\n    internal class CombineLatestObservable<T> : OperatorObservableBase<IList<T>>\n    {\n        readonly IObservable<T>[] sources;\n\n        public CombineLatestObservable(IObservable<T>[] sources)\n            : base(true)\n        {\n            this.sources = sources;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<IList<T>> observer, IDisposable cancel)\n        {\n            return new CombineLatest(this, observer, cancel).Run();\n        }\n\n        class CombineLatest : OperatorObserverBase<IList<T>, IList<T>>\n        {\n            readonly CombineLatestObservable<T> parent;\n            readonly object gate = new object();\n\n            int length;\n            T[] values;\n            bool[] isStarted;\n            bool[] isCompleted;\n            bool isAllValueStarted;\n\n            public CombineLatest(CombineLatestObservable<T> parent, IObserver<IList<T>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                length = parent.sources.Length;\n                values = new T[length];\n                isStarted = new bool[length];\n                isCompleted = new bool[length];\n                isAllValueStarted = false;\n\n                var disposables = new IDisposable[length];\n                for (int i = 0; i < length; i++)\n                {\n                    var source = parent.sources[i];\n                    disposables[i] = source.Subscribe(new CombineLatestObserver(this, i));\n                }\n\n                return StableCompositeDisposable.CreateUnsafe(disposables);\n            }\n\n            // publish is in the lock\n            void Publish(int index)\n            {\n                isStarted[index] = true;\n\n                if (isAllValueStarted)\n                {\n                    OnNext(new List<T>(values));\n                    return;\n                }\n\n                var allValueStarted = true;\n                for (int i = 0; i < length; i++)\n                {\n                    if (!isStarted[i])\n                    {\n                        allValueStarted = false;\n                        break;\n                    }\n                }\n\n                isAllValueStarted = allValueStarted;\n\n                if (isAllValueStarted)\n                {\n                    OnNext(new List<T>(values));\n                    return;\n                }\n                else\n                {\n                    var allCompletedWithoutSelf = true;\n                    for (int i = 0; i < length; i++)\n                    {\n                        if (i == index) continue;\n                        if (!isCompleted[i])\n                        {\n                            allCompletedWithoutSelf = false;\n                            break;\n                        }\n                    }\n\n                    if (allCompletedWithoutSelf)\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                        return;\n                    }\n                    else\n                    {\n                        return;\n                    }\n                }\n            }\n\n            public override void OnNext(IList<T> value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n\n            class CombineLatestObserver : IObserver<T>\n            {\n                readonly CombineLatest parent;\n                readonly int index;\n\n                public CombineLatestObserver(CombineLatest parent, int index)\n                {\n                    this.parent = parent;\n                    this.index = index;\n                }\n\n                public void OnNext(T value)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.values[index] = value;\n                        parent.Publish(index);\n                    }\n                }\n\n                public void OnError(Exception ex)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(ex);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.isCompleted[index] = true;\n\n                        var allTrue = true;\n                        for (int i = 0; i < parent.length; i++)\n                        {\n                            if (!parent.isCompleted[i])\n                            {\n                                allTrue = false;\n                                break;\n                            }\n                        }\n\n                        if (allTrue)\n                        {\n                            parent.OnCompleted();\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // generated from UniRx.Console.CombineLatestGenerator.tt\n    #region NTH\n\n    internal class CombineLatestObservable<T1, T2, T3, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        CombineLatestFunc<T1, T2, T3, TR> resultSelector;\n\n        public CombineLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n              CombineLatestFunc<T1, T2, T3, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new CombineLatest(3, this, observer, cancel).Run();\n        }\n\n        class CombineLatest : NthCombineLatestObserverBase<TR>\n        {\n            readonly CombineLatestObservable<T1, T2, T3, TR> parent;\n            readonly object gate = new object();\n            CombineLatestObserver<T1> c1;\n            CombineLatestObserver<T2> c2;\n            CombineLatestObserver<T3> c3;\n\n            public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new CombineLatestObserver<T1>(gate, this, 0);\n                c2 = new CombineLatestObserver<T2>(gate, this, 1);\n                c3 = new CombineLatestObserver<T3>(gate, this, 2);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n\n                return StableCompositeDisposable.Create(s1, s2, s3);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class CombineLatestObservable<T1, T2, T3, T4, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        CombineLatestFunc<T1, T2, T3, T4, TR> resultSelector;\n\n        public CombineLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n              CombineLatestFunc<T1, T2, T3, T4, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new CombineLatest(4, this, observer, cancel).Run();\n        }\n\n        class CombineLatest : NthCombineLatestObserverBase<TR>\n        {\n            readonly CombineLatestObservable<T1, T2, T3, T4, TR> parent;\n            readonly object gate = new object();\n            CombineLatestObserver<T1> c1;\n            CombineLatestObserver<T2> c2;\n            CombineLatestObserver<T3> c3;\n            CombineLatestObserver<T4> c4;\n\n            public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, T4, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new CombineLatestObserver<T1>(gate, this, 0);\n                c2 = new CombineLatestObserver<T2>(gate, this, 1);\n                c3 = new CombineLatestObserver<T3>(gate, this, 2);\n                c4 = new CombineLatestObserver<T4>(gate, this, 3);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n                var s4 = parent.source4.Subscribe(c4);\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class CombineLatestObservable<T1, T2, T3, T4, T5, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        IObservable<T5> source5;\n        CombineLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector;\n\n        public CombineLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n            IObservable<T5> source5,\n              CombineLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                source5.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.source5 = source5;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new CombineLatest(5, this, observer, cancel).Run();\n        }\n\n        class CombineLatest : NthCombineLatestObserverBase<TR>\n        {\n            readonly CombineLatestObservable<T1, T2, T3, T4, T5, TR> parent;\n            readonly object gate = new object();\n            CombineLatestObserver<T1> c1;\n            CombineLatestObserver<T2> c2;\n            CombineLatestObserver<T3> c3;\n            CombineLatestObserver<T4> c4;\n            CombineLatestObserver<T5> c5;\n\n            public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, T4, T5, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new CombineLatestObserver<T1>(gate, this, 0);\n                c2 = new CombineLatestObserver<T2>(gate, this, 1);\n                c3 = new CombineLatestObserver<T3>(gate, this, 2);\n                c4 = new CombineLatestObserver<T4>(gate, this, 3);\n                c5 = new CombineLatestObserver<T5>(gate, this, 4);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n                var s4 = parent.source4.Subscribe(c4);\n                var s5 = parent.source5.Subscribe(c5);\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, s5);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class CombineLatestObservable<T1, T2, T3, T4, T5, T6, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        IObservable<T5> source5;\n        IObservable<T6> source6;\n        CombineLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector;\n\n        public CombineLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n            IObservable<T5> source5,\n            IObservable<T6> source6,\n              CombineLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                source5.IsRequiredSubscribeOnCurrentThread() ||\n                source6.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.source5 = source5;\n            this.source6 = source6;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new CombineLatest(6, this, observer, cancel).Run();\n        }\n\n        class CombineLatest : NthCombineLatestObserverBase<TR>\n        {\n            readonly CombineLatestObservable<T1, T2, T3, T4, T5, T6, TR> parent;\n            readonly object gate = new object();\n            CombineLatestObserver<T1> c1;\n            CombineLatestObserver<T2> c2;\n            CombineLatestObserver<T3> c3;\n            CombineLatestObserver<T4> c4;\n            CombineLatestObserver<T5> c5;\n            CombineLatestObserver<T6> c6;\n\n            public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, T4, T5, T6, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new CombineLatestObserver<T1>(gate, this, 0);\n                c2 = new CombineLatestObserver<T2>(gate, this, 1);\n                c3 = new CombineLatestObserver<T3>(gate, this, 2);\n                c4 = new CombineLatestObserver<T4>(gate, this, 3);\n                c5 = new CombineLatestObserver<T5>(gate, this, 4);\n                c6 = new CombineLatestObserver<T6>(gate, this, 5);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n                var s4 = parent.source4.Subscribe(c4);\n                var s5 = parent.source5.Subscribe(c5);\n                var s6 = parent.source6.Subscribe(c6);\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class CombineLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        IObservable<T5> source5;\n        IObservable<T6> source6;\n        IObservable<T7> source7;\n        CombineLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector;\n\n        public CombineLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n            IObservable<T5> source5,\n            IObservable<T6> source6,\n            IObservable<T7> source7,\n              CombineLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                source5.IsRequiredSubscribeOnCurrentThread() ||\n                source6.IsRequiredSubscribeOnCurrentThread() ||\n                source7.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.source5 = source5;\n            this.source6 = source6;\n            this.source7 = source7;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new CombineLatest(7, this, observer, cancel).Run();\n        }\n\n        class CombineLatest : NthCombineLatestObserverBase<TR>\n        {\n            readonly CombineLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent;\n            readonly object gate = new object();\n            CombineLatestObserver<T1> c1;\n            CombineLatestObserver<T2> c2;\n            CombineLatestObserver<T3> c3;\n            CombineLatestObserver<T4> c4;\n            CombineLatestObserver<T5> c5;\n            CombineLatestObserver<T6> c6;\n            CombineLatestObserver<T7> c7;\n\n            public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new CombineLatestObserver<T1>(gate, this, 0);\n                c2 = new CombineLatestObserver<T2>(gate, this, 1);\n                c3 = new CombineLatestObserver<T3>(gate, this, 2);\n                c4 = new CombineLatestObserver<T4>(gate, this, 3);\n                c5 = new CombineLatestObserver<T5>(gate, this, 4);\n                c6 = new CombineLatestObserver<T6>(gate, this, 5);\n                c7 = new CombineLatestObserver<T7>(gate, this, 6);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n                var s4 = parent.source4.Subscribe(c4);\n                var s5 = parent.source5.Subscribe(c5);\n                var s6 = parent.source6.Subscribe(c6);\n                var s7 = parent.source7.Subscribe(c7);\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6, s7);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    #endregion\n\n    // Nth infrastructure\n\n    internal interface ICombineLatestObservable\n    {\n        void Publish(int index);\n        void Fail(Exception error);\n        void Done(int index);\n    }\n\n    internal abstract class NthCombineLatestObserverBase<T> : OperatorObserverBase<T, T>, ICombineLatestObservable\n    {\n        readonly int length;\n        bool isAllValueStarted;\n        readonly bool[] isStarted;\n        readonly bool[] isCompleted;\n\n        public NthCombineLatestObserverBase(int length, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n        {\n            this.length = length;\n            this.isAllValueStarted = false;\n            this.isStarted = new bool[length];\n            this.isCompleted = new bool[length];\n        }\n\n        public abstract T GetResult();\n\n        // operators in lock\n        public void Publish(int index)\n        {\n            isStarted[index] = true;\n\n            if (isAllValueStarted)\n            {\n                var result = default(T);\n                try\n                {\n                    result = GetResult();\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n                OnNext(result);\n                return;\n            }\n\n            var allValueStarted = true;\n            for (int i = 0; i < length; i++)\n            {\n                if (!isStarted[i])\n                {\n                    allValueStarted = false;\n                    break;\n                }\n            }\n\n            isAllValueStarted = allValueStarted;\n\n            if (isAllValueStarted)\n            {\n                var result = default(T);\n                try\n                {\n                    result = GetResult();\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n                OnNext(result);\n                return;\n            }\n            else\n            {\n                var allCompletedWithoutSelf = true;\n                for (int i = 0; i < length; i++)\n                {\n                    if (i == index) continue;\n                    if (!isCompleted[i])\n                    {\n                        allCompletedWithoutSelf = false;\n                        break;\n                    }\n                }\n\n                if (allCompletedWithoutSelf)\n                {\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                    return;\n                }\n                else\n                {\n                    return;\n                }\n            }\n        }\n\n        public void Done(int index)\n        {\n            isCompleted[index] = true;\n\n            var allTrue = true;\n            for (int i = 0; i < length; i++)\n            {\n                if (!isCompleted[i])\n                {\n                    allTrue = false;\n                    break;\n                }\n            }\n\n            if (allTrue)\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n\n        public void Fail(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n    }\n\n    // Nth\n    internal class CombineLatestObserver<T> : IObserver<T>\n    {\n        readonly object gate;\n        readonly ICombineLatestObservable parent;\n        readonly int index;\n        T value;\n\n        public T Value { get { return value; } }\n\n        public CombineLatestObserver(object gate, ICombineLatestObservable parent, int index)\n        {\n            this.gate = gate;\n            this.parent = parent;\n            this.index = index;\n        }\n\n        public void OnNext(T value)\n        {\n            lock (gate)\n            {\n                this.value = value;\n                parent.Publish(index);\n            }\n        }\n\n        public void OnError(Exception error)\n        {\n            lock (gate)\n            {\n                parent.Fail(error);\n            }\n        }\n\n        public void OnCompleted()\n        {\n            lock (gate)\n            {\n                parent.Done(index);\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/CombineLatest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 64910ffa78510ee48b3a395ee5b2cfe1\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Concat.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    // needs to more improvement\n\n    internal class ConcatObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IEnumerable<IObservable<T>> sources;\n\n        public ConcatObservable(IEnumerable<IObservable<T>> sources)\n            : base(true)\n        {\n            this.sources = sources;\n        }\n\n        public IObservable<T> Combine(IEnumerable<IObservable<T>> combineSources)\n        {\n            return new ConcatObservable<T>(CombineSources(this.sources, combineSources));\n        }\n\n        static IEnumerable<IObservable<T>> CombineSources(IEnumerable<IObservable<T>> first, IEnumerable<IObservable<T>> second)\n        {\n            foreach (var item in first)\n            {\n                yield return item;\n            }\n            foreach (var item in second)\n            {\n                yield return item;\n            }\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Concat(this, observer, cancel).Run();\n        }\n\n        class Concat : OperatorObserverBase<T, T>\n        {\n            readonly ConcatObservable<T> parent;\n            readonly object gate = new object();\n\n            bool isDisposed;\n            IEnumerator<IObservable<T>> e;\n            SerialDisposable subscription;\n            Action nextSelf;\n\n            public Concat(ConcatObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                isDisposed = false;\n                e = parent.sources.GetEnumerator();\n                subscription = new SerialDisposable();\n\n                var schedule = Scheduler.DefaultSchedulers.TailRecursion.Schedule(RecursiveRun);\n\n                return StableCompositeDisposable.Create(schedule, subscription, Disposable.Create(() =>\n               {\n                   lock (gate)\n                   {\n                       this.isDisposed = true;\n                       this.e.Dispose();\n                   }\n               }));\n            }\n\n            void RecursiveRun(Action self)\n            {\n                lock (gate)\n                {\n                    this.nextSelf = self;\n                    if (isDisposed) return;\n\n                    var current = default(IObservable<T>);\n                    var hasNext = false;\n                    var ex = default(Exception);\n\n                    try\n                    {\n                        hasNext = e.MoveNext();\n                        if (hasNext)\n                        {\n                            current = e.Current;\n                            if (current == null) throw new InvalidOperationException(\"sequence is null.\");\n                        }\n                        else\n                        {\n                            e.Dispose();\n                        }\n                    }\n                    catch (Exception exception)\n                    {\n                        ex = exception;\n                        e.Dispose();\n                    }\n\n                    if (ex != null)\n                    {\n                        try { observer.OnError(ex); }\n                        finally { Dispose(); }\n                        return;\n                    }\n\n                    if (!hasNext)\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                        return;\n                    }\n\n                    var source = current;\n                    var d = new SingleAssignmentDisposable();\n                    subscription.Disposable = d;\n                    d.Disposable = source.Subscribe(this);\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                this.nextSelf();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Concat.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 740c2691a7e434f439abfdcac75ea809\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ContinueWith.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class ContinueWithObservable<TSource, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TSource> source;\n        readonly Func<TSource, IObservable<TResult>> selector;\n\n        public ContinueWithObservable(IObservable<TSource> source, Func<TSource, IObservable<TResult>> selector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.selector = selector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            return new ContinueWith(this, observer, cancel).Run();\n        }\n\n        class ContinueWith : OperatorObserverBase<TSource, TResult>\n        {\n            readonly ContinueWithObservable<TSource, TResult> parent;\n            readonly SerialDisposable serialDisposable = new SerialDisposable();\n\n            bool seenValue;\n            TSource lastValue;\n\n            public ContinueWith(ContinueWithObservable<TSource, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var sourceDisposable = new SingleAssignmentDisposable();\n                serialDisposable.Disposable = sourceDisposable;\n\n                sourceDisposable.Disposable = parent.source.Subscribe(this);\n                return serialDisposable;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                this.seenValue = true;\n                this.lastValue = value;\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); };\n            }\n\n            public override void OnCompleted()\n            {\n                if (seenValue)\n                {\n                    try\n\t                {\n\t\t                var v = parent.selector(lastValue);\n\t\t                // dispose source subscription\n\t\t                serialDisposable.Disposable = v.Subscribe(observer);\n\t                }\n\t                catch (Exception error)\n\t                {\n\t\t                OnError(error);\n\t                }\n                }\n                else\n                {\n                    try { observer.OnCompleted(); } finally { Dispose(); };\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ContinueWith.cs.meta",
    "content": "fileFormatVersion: 2\nguid: bea59b3eb246d244a99183eeb7f3bad4\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Create.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class CreateObservable<T> : OperatorObservableBase<T>\n    {\n        readonly Func<IObserver<T>, IDisposable> subscribe;\n\n        public CreateObservable(Func<IObserver<T>, IDisposable> subscribe)\n            : base(true) // fail safe\n        {\n            this.subscribe = subscribe;\n        }\n\n        public CreateObservable(Func<IObserver<T>, IDisposable> subscribe, bool isRequiredSubscribeOnCurrentThread)\n            : base(isRequiredSubscribeOnCurrentThread)\n        {\n            this.subscribe = subscribe;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            observer = new Create(observer, cancel);\n            return subscribe(observer) ?? Disposable.Empty;\n        }\n\n        class Create : OperatorObserverBase<T, T>\n        {\n            public Create(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class CreateObservable<T, TState> : OperatorObservableBase<T>\n    {\n        readonly TState state;\n        readonly Func<TState, IObserver<T>, IDisposable> subscribe;\n\n        public CreateObservable(TState state, Func<TState, IObserver<T>, IDisposable> subscribe)\n            : base(true) // fail safe\n        {\n            this.state = state;\n            this.subscribe = subscribe;\n        }\n\n        public CreateObservable(TState state, Func<TState, IObserver<T>, IDisposable> subscribe, bool isRequiredSubscribeOnCurrentThread)\n            : base(isRequiredSubscribeOnCurrentThread)\n        {\n            this.state = state;\n            this.subscribe = subscribe;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            observer = new Create(observer, cancel);\n            return subscribe(state, observer) ?? Disposable.Empty;\n        }\n\n        class Create : OperatorObserverBase<T, T>\n        {\n            public Create(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class CreateSafeObservable<T> : OperatorObservableBase<T>\n    {\n        readonly Func<IObserver<T>, IDisposable> subscribe;\n\n        public CreateSafeObservable(Func<IObserver<T>, IDisposable> subscribe)\n            : base(true) // fail safe\n        {\n            this.subscribe = subscribe;\n        }\n\n        public CreateSafeObservable(Func<IObserver<T>, IDisposable> subscribe, bool isRequiredSubscribeOnCurrentThread)\n            : base(isRequiredSubscribeOnCurrentThread)\n        {\n            this.subscribe = subscribe;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            observer = new CreateSafe(observer, cancel);\n            return subscribe(observer) ?? Disposable.Empty;\n        }\n\n        class CreateSafe : OperatorObserverBase<T, T>\n        {\n            public CreateSafe(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose(); // safe\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Create.cs.meta",
    "content": "fileFormatVersion: 2\nguid: cae9e62bf5eb3dc4e9d93cf6ff606052\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/DefaultIfEmpty.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class DefaultIfEmptyObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly T defaultValue;\n\n        public DefaultIfEmptyObservable(IObservable<T> source, T defaultValue)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.defaultValue = defaultValue;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new DefaultIfEmpty(this, observer, cancel));\n        }\n\n        class DefaultIfEmpty : OperatorObserverBase<T, T>\n        {\n            readonly DefaultIfEmptyObservable<T> parent;\n            bool hasValue;\n\n            public DefaultIfEmpty(DefaultIfEmptyObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.hasValue = false;\n            }\n\n            public override void OnNext(T value)\n            {\n                hasValue = true;\n                observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (!hasValue)\n                {\n                    observer.OnNext(parent.defaultValue);\n                }\n\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/DefaultIfEmpty.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 551075cda284fbc489824d153743b1e6\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Defer.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class DeferObservable<T> : OperatorObservableBase<T>\n    {\n        readonly Func<IObservable<T>> observableFactory;\n\n        public DeferObservable(Func<IObservable<T>> observableFactory)\n            : base(false)\n        {\n            this.observableFactory = observableFactory;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            observer = new Defer(observer, cancel);\n\n            IObservable<T> source;\n            try\n            {\n                source = observableFactory();\n            }\n            catch (Exception ex)\n            {\n                source = Observable.Throw<T>(ex);\n            }\n\n            return source.Subscribe(observer);\n        }\n\n        class Defer : OperatorObserverBase<T, T>\n        {\n            public Defer(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Defer.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 15ca418b98836d943864b1e8b82f6658\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Delay.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Operators\n{\n    internal class DelayObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly TimeSpan dueTime;\n        readonly IScheduler scheduler;\n\n        public DelayObservable(IObservable<T> source, TimeSpan dueTime, IScheduler scheduler) \n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.dueTime = dueTime;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Delay(this, observer, cancel).Run();\n        }\n\n        class Delay : OperatorObserverBase<T, T>\n        {\n            readonly DelayObservable<T> parent;\n            readonly object gate = new object();\n            bool hasFailed;\n            bool running;\n            bool active;\n            Exception exception;\n            Queue<Timestamped<T>> queue;\n            bool onCompleted;\n            DateTimeOffset completeAt;\n            IDisposable sourceSubscription;\n            TimeSpan delay;\n            bool ready;\n            SerialDisposable cancelable;\n\n            public Delay(DelayObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                cancelable = new SerialDisposable();\n\n                active = false;\n                running = false;\n                queue = new Queue<Timestamped<T>>();\n                onCompleted = false;\n                completeAt = default(DateTimeOffset);\n                hasFailed = false;\n                exception = default(Exception);\n                ready = true;\n                delay = Scheduler.Normalize(parent.dueTime);\n\n                var _sourceSubscription = new SingleAssignmentDisposable();\n                sourceSubscription = _sourceSubscription; // assign to field\n                _sourceSubscription.Disposable = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(sourceSubscription, cancelable);\n            }\n\n            public override void OnNext(T value)\n            {\n                var next = parent.scheduler.Now.Add(delay);\n                var shouldRun = false;\n\n                lock (gate)\n                {\n                    queue.Enqueue(new Timestamped<T>(value, next));\n\n                    shouldRun = ready && !active;\n                    active = true;\n                }\n\n                if (shouldRun)\n                {\n                    cancelable.Disposable = parent.scheduler.Schedule(delay, DrainQueue);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                sourceSubscription.Dispose();\n\n                var shouldRun = false;\n\n                lock (gate)\n                {\n                    queue.Clear();\n\n                    exception = error;\n                    hasFailed = true;\n\n                    shouldRun = !running;\n                }\n\n                if (shouldRun)\n                {\n                    try { base.observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                sourceSubscription.Dispose();\n\n                var next = parent.scheduler.Now.Add(delay);\n                var shouldRun = false;\n\n                lock (gate)\n                {\n                    completeAt = next;\n                    onCompleted = true;\n\n                    shouldRun = ready && !active;\n                    active = true;\n                }\n\n                if (shouldRun)\n                {\n                    cancelable.Disposable = parent.scheduler.Schedule(delay, DrainQueue);\n                }\n            }\n\n            void DrainQueue(Action<TimeSpan> recurse)\n            {\n                lock (gate)\n                {\n                    if (hasFailed) return;\n                    running = true;\n                }\n\n                var shouldYield = false;\n\n                while (true)\n                {\n                    var hasFailed = false;\n                    var error = default(Exception);\n\n                    var hasValue = false;\n                    var value = default(T);\n                    var hasCompleted = false;\n\n                    var shouldRecurse = false;\n                    var recurseDueTime = default(TimeSpan);\n\n                    lock (gate)\n                    {\n                        if (hasFailed)\n                        {\n                            error = exception;\n                            hasFailed = true;\n                            running = false;\n                        }\n                        else\n                        {\n                            if (queue.Count > 0)\n                            {\n                                var nextDue = queue.Peek().Timestamp;\n\n                                if (nextDue.CompareTo(parent.scheduler.Now) <= 0 && !shouldYield)\n                                {\n                                    value = queue.Dequeue().Value;\n                                    hasValue = true;\n                                }\n                                else\n                                {\n                                    shouldRecurse = true;\n                                    recurseDueTime = Scheduler.Normalize(nextDue.Subtract(parent.scheduler.Now));\n                                    running = false;\n                                }\n                            }\n                            else if (onCompleted)\n                            {\n                                if (completeAt.CompareTo(parent.scheduler.Now) <= 0 && !shouldYield)\n                                {\n                                    hasCompleted = true;\n                                }\n                                else\n                                {\n                                    shouldRecurse = true;\n                                    recurseDueTime = Scheduler.Normalize(completeAt.Subtract(parent.scheduler.Now));\n                                    running = false;\n                                }\n                            }\n                            else\n                            {\n                                running = false;\n                                active = false;\n                            }\n                        }\n                    }\n\n                    if (hasValue)\n                    {\n                        base.observer.OnNext(value);\n                        shouldYield = true;\n                    }\n                    else\n                    {\n                        if (hasCompleted)\n                        {\n                            try { base.observer.OnCompleted(); } finally { Dispose(); }\n                        }\n                        else if (hasFailed)\n                        {\n                            try { base.observer.OnError(error); } finally { Dispose(); }\n                        }\n                        else if (shouldRecurse)\n                        {\n                            recurse(recurseDueTime);\n                        }\n\n                        return;\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Delay.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2af9c507ce062994a904e4b5565b49c0\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/DelaySubscription.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class DelaySubscriptionObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IScheduler scheduler;\n        readonly TimeSpan? dueTimeT;\n        readonly DateTimeOffset? dueTimeD;\n\n        public DelaySubscriptionObservable(IObservable<T> source,TimeSpan dueTime, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.scheduler = scheduler;\n            this.dueTimeT = dueTime;\n        }\n\n        public DelaySubscriptionObservable(IObservable<T> source, DateTimeOffset dueTime, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.scheduler = scheduler;\n            this.dueTimeD = dueTime;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (dueTimeT != null)\n            {\n                var d = new MultipleAssignmentDisposable();\n                var dt = Scheduler.Normalize(dueTimeT.Value);\n\n                d.Disposable = scheduler.Schedule(dt, () =>\n                {\n                    d.Disposable = source.Subscribe(observer);\n                });\n\n                return d;\n            }\n            else\n            {\n                var d = new MultipleAssignmentDisposable();\n\n                d.Disposable = scheduler.Schedule(dueTimeD.Value, () =>\n                {\n                    d.Disposable = source.Subscribe(observer);\n                });\n\n                return d;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/DelaySubscription.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4f532fc776d5298439cb8f03d52e1211\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Dematerialize.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class DematerializeObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<Notification<T>> source;\n\n        public DematerializeObservable(IObservable<Notification<T>> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Dematerialize(this, observer, cancel).Run();\n        }\n\n        class Dematerialize : OperatorObserverBase<Notification<T>, T>\n        {\n            readonly DematerializeObservable<T> parent;\n\n            public Dematerialize(DematerializeObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this); \n            }\n\n            public override void OnNext(Notification<T> value)\n            {\n                switch (value.Kind)\n                {\n                    case NotificationKind.OnNext:\n                        observer.OnNext(value.Value);\n                        break;\n                    case NotificationKind.OnError:\n                        try { observer.OnError(value.Exception); }\n                        finally { Dispose(); }\n                        break;\n                    case NotificationKind.OnCompleted:\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                        break;\n                    default:\n                        break;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Dematerialize.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 80682be7e41afb44581208534f226d38\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Distinct.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class DistinctObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IEqualityComparer<T> comparer;\n\n        public DistinctObservable(IObservable<T> source, IEqualityComparer<T> comparer)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.comparer = comparer;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Distinct(this, observer, cancel));\n        }\n\n        class Distinct : OperatorObserverBase<T, T>\n        {\n            readonly HashSet<T> hashSet;\n\n            public Distinct(DistinctObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                hashSet = (parent.comparer == null)\n                    ? new HashSet<T>()\n                    : new HashSet<T>(parent.comparer);\n            }\n\n            public override void OnNext(T value)\n            {\n                var key = default(T);\n                var isAdded = false;\n                try\n                {\n                    key = value;\n                    isAdded = hashSet.Add(key);\n                }\n                catch (Exception exception)\n                {\n                    try { observer.OnError(exception); } finally { Dispose(); }\n                    return;\n                }\n\n                if (isAdded)\n                {\n                    observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class DistinctObservable<T, TKey> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IEqualityComparer<TKey> comparer;\n        readonly Func<T, TKey> keySelector;\n\n        public DistinctObservable(IObservable<T> source, Func<T, TKey> keySelector, IEqualityComparer<TKey> comparer)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.comparer = comparer;\n            this.keySelector = keySelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Distinct(this, observer, cancel));\n        }\n\n        class Distinct : OperatorObserverBase<T, T>\n        {\n            readonly DistinctObservable<T, TKey> parent;\n            readonly HashSet<TKey> hashSet;\n\n            public Distinct(DistinctObservable<T, TKey> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n                hashSet = (parent.comparer == null)\n                    ? new HashSet<TKey>()\n                    : new HashSet<TKey>(parent.comparer);\n            }\n\n            public override void OnNext(T value)\n            {\n                var key = default(TKey);\n                var isAdded = false;\n                try\n                {\n                    key = parent.keySelector(value);\n                    isAdded = hashSet.Add(key);\n                }\n                catch (Exception exception)\n                {\n                    try { observer.OnError(exception); } finally { Dispose(); }\n                    return;\n                }\n\n                if (isAdded)\n                {\n                    observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Distinct.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 376a7ed430bff5c4b860af4d23ab6b79\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/DistinctUntilChanged.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class DistinctUntilChangedObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IEqualityComparer<T> comparer;\n\n        public DistinctUntilChangedObservable(IObservable<T> source, IEqualityComparer<T> comparer)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.comparer = comparer;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new DistinctUntilChanged(this, observer, cancel));\n        }\n\n        class DistinctUntilChanged : OperatorObserverBase<T, T>\n        {\n            readonly DistinctUntilChangedObservable<T> parent;\n            bool isFirst = true;\n            T prevKey = default(T);\n\n            public DistinctUntilChanged(DistinctUntilChangedObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                T currentKey;\n                try\n                {\n                    currentKey = value;\n                }\n                catch (Exception exception)\n                {\n                    try { observer.OnError(exception); } finally { Dispose(); }\n                    return;\n                }\n\n                var sameKey = false;\n                if (isFirst)\n                {\n                    isFirst = false;\n                }\n                else\n                {\n                    try\n                    {\n                        sameKey = parent.comparer.Equals(currentKey, prevKey);\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); } finally { Dispose(); }\n                        return;\n                    }\n                }\n\n                if (!sameKey)\n                {\n                    prevKey = currentKey;\n                    observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class DistinctUntilChangedObservable<T, TKey> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IEqualityComparer<TKey> comparer;\n        readonly Func<T, TKey> keySelector;\n\n        public DistinctUntilChangedObservable(IObservable<T> source, Func<T, TKey> keySelector, IEqualityComparer<TKey> comparer)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.comparer = comparer;\n            this.keySelector = keySelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new DistinctUntilChanged(this, observer, cancel));\n        }\n\n        class DistinctUntilChanged : OperatorObserverBase<T, T>\n        {\n            readonly DistinctUntilChangedObservable<T, TKey> parent;\n            bool isFirst = true;\n            TKey prevKey = default(TKey);\n\n            public DistinctUntilChanged(DistinctUntilChangedObservable<T, TKey> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                TKey currentKey;\n                try\n                {\n                    currentKey = parent.keySelector(value);\n                }\n                catch (Exception exception)\n                {\n                    try { observer.OnError(exception); } finally { Dispose(); }\n                    return;\n                }\n\n                var sameKey = false;\n                if (isFirst)\n                {\n                    isFirst = false;\n                }\n                else\n                {\n                    try\n                    {\n                        sameKey = parent.comparer.Equals(currentKey, prevKey);\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); } finally { Dispose(); }\n                        return;\n                    }\n                }\n\n                if (!sameKey)\n                {\n                    prevKey = currentKey;\n                    observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/DistinctUntilChanged.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a09c4b58f60c22342871c30eaf589f6c\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Do.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Operators\n{\n    // Do, DoOnError, DoOnCompleted, DoOnTerminate, DoOnSubscribe, DoOnCancel\n\n    internal class DoObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Action<T> onNext;\n        readonly Action<Exception> onError;\n        readonly Action onCompleted;\n\n        public DoObservable(IObservable<T> source, Action<T> onNext, Action<Exception> onError, Action onCompleted)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.onNext = onNext;\n            this.onError = onError;\n            this.onCompleted = onCompleted;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Do(this, observer, cancel).Run();\n        }\n\n        class Do : OperatorObserverBase<T, T>\n        {\n            readonly DoObservable<T> parent;\n\n            public Do(DoObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    parent.onNext(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); };\n                    return;\n                }\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try\n                {\n                    parent.onError(error);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); };\n                    return;\n                }\n                try { observer.OnError(error); } finally { Dispose(); };\n            }\n\n            public override void OnCompleted()\n            {\n                try\n                {\n                    parent.onCompleted();\n                }\n                catch (Exception ex)\n                {\n                    base.observer.OnError(ex);\n                    Dispose();\n                    return;\n                }\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n        }\n    }\n\n    internal class DoObserverObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IObserver<T> observer;\n\n        public DoObserverObservable(IObservable<T> source, IObserver<T> observer)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.observer = observer;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Do(this, observer, cancel).Run();\n        }\n\n        class Do : OperatorObserverBase<T, T>\n        {\n            readonly DoObserverObservable<T> parent;\n\n            public Do(DoObserverObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    parent.observer.OnNext(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try\n                {\n                    parent.observer.OnError(error);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try\n                {\n                    parent.observer.OnCompleted();\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class DoOnErrorObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Action<Exception> onError;\n\n        public DoOnErrorObservable(IObservable<T> source, Action<Exception> onError)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.onError = onError;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new DoOnError(this, observer, cancel).Run();\n        }\n\n        class DoOnError : OperatorObserverBase<T, T>\n        {\n            readonly DoOnErrorObservable<T> parent;\n\n            public DoOnError(DoOnErrorObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try\n                {\n                    parent.onError(error);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class DoOnCompletedObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Action onCompleted;\n\n        public DoOnCompletedObservable(IObservable<T> source, Action onCompleted)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.onCompleted = onCompleted;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new DoOnCompleted(this, observer, cancel).Run();\n        }\n\n        class DoOnCompleted : OperatorObserverBase<T, T>\n        {\n            readonly DoOnCompletedObservable<T> parent;\n\n            public DoOnCompleted(DoOnCompletedObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try\n                {\n                    parent.onCompleted();\n                }\n                catch (Exception ex)\n                {\n                    base.observer.OnError(ex);\n                    Dispose();\n                    return;\n                }\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n        }\n    }\n\n    internal class DoOnTerminateObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Action onTerminate;\n\n        public DoOnTerminateObservable(IObservable<T> source, Action onTerminate)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.onTerminate = onTerminate;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new DoOnTerminate(this, observer, cancel).Run();\n        }\n\n        class DoOnTerminate : OperatorObserverBase<T, T>\n        {\n            readonly DoOnTerminateObservable<T> parent;\n\n            public DoOnTerminate(DoOnTerminateObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try\n                {\n                    parent.onTerminate();\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n                try { observer.OnError(error); } finally { Dispose(); };\n            }\n\n            public override void OnCompleted()\n            {\n                try\n                {\n                    parent.onTerminate();\n                }\n                catch (Exception ex)\n                {\n                    base.observer.OnError(ex);\n                    Dispose();\n                    return;\n                }\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n        }\n    }\n\n    internal class DoOnSubscribeObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Action onSubscribe;\n\n        public DoOnSubscribeObservable(IObservable<T> source, Action onSubscribe)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.onSubscribe = onSubscribe;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new DoOnSubscribe(this, observer, cancel).Run();\n        }\n\n        class DoOnSubscribe : OperatorObserverBase<T, T>\n        {\n            readonly DoOnSubscribeObservable<T> parent;\n\n            public DoOnSubscribe(DoOnSubscribeObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                try\n                {\n                    parent.onSubscribe();\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return Disposable.Empty;\n                }\n\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class DoOnCancelObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Action onCancel;\n\n        public DoOnCancelObservable(IObservable<T> source, Action onCancel)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.onCancel = onCancel;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new DoOnCancel(this, observer, cancel).Run();\n        }\n\n        class DoOnCancel : OperatorObserverBase<T, T>\n        {\n            readonly DoOnCancelObservable<T> parent;\n            bool isCompletedCall = false;\n\n            public DoOnCancel(DoOnCancelObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return StableCompositeDisposable.Create(parent.source.Subscribe(this), Disposable.Create(() =>\n                {\n                    if (!isCompletedCall)\n                    {\n                        parent.onCancel();\n                    }\n                }));\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                isCompletedCall = true;\n                try { observer.OnError(error); } finally { Dispose(); };\n            }\n\n            public override void OnCompleted()\n            {\n                isCompletedCall = true;\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Do.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8f99ae8870195e34b8618451a95818e0\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Empty.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class EmptyObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IScheduler scheduler;\n\n        public EmptyObservable(IScheduler scheduler)\n            : base(false)\n        {\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            observer = new Empty(observer, cancel);\n\n            if (scheduler == Scheduler.Immediate)\n            {\n                observer.OnCompleted();\n                return Disposable.Empty;\n            }\n            else\n            {\n                return scheduler.Schedule(observer.OnCompleted);\n            }\n        }\n\n        class Empty : OperatorObserverBase<T, T>\n        {\n            public Empty(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class ImmutableEmptyObservable<T> : IObservable<T>, IOptimizedObservable<T>\n    {\n        internal static ImmutableEmptyObservable<T> Instance = new ImmutableEmptyObservable<T>();\n\n        ImmutableEmptyObservable()\n        {\n\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            observer.OnCompleted();\n            return Disposable.Empty;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Empty.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9e9a7050a289d3a4aa17cba89e085135\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Finally.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class FinallyObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Action finallyAction;\n\n        public FinallyObservable(IObservable<T> source, Action finallyAction)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.finallyAction = finallyAction;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Finally(this, observer, cancel).Run();\n        }\n\n        class Finally : OperatorObserverBase<T, T>\n        {\n            readonly FinallyObservable<T> parent;\n\n            public Finally(FinallyObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                IDisposable subscription;\n                try\n                {\n                    subscription = parent.source.Subscribe(this);\n                }\n                catch\n                {\n                    // This behaviour is not same as .NET Official Rx\n                    parent.finallyAction();\n                    throw;\n                }\n\n                return StableCompositeDisposable.Create(subscription, Disposable.Create(() =>\n                {\n                    parent.finallyAction();\n                }));\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); };\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Finally.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9ce919d8f2acf2b47a932e850e399d3a\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/First.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class FirstObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly bool useDefault;\n        readonly Func<T, bool> predicate;\n\n        public FirstObservable(IObservable<T> source, bool useDefault)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.useDefault = useDefault;\n        }\n\n        public FirstObservable(IObservable<T> source, Func<T, bool> predicate, bool useDefault)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicate = predicate;\n            this.useDefault = useDefault;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (predicate == null)\n            {\n                return source.Subscribe(new First(this, observer, cancel));\n            }\n            else\n            {\n                return source.Subscribe(new First_(this, observer, cancel));\n            }\n        }\n\n        class First : OperatorObserverBase<T, T>\n        {\n            readonly FirstObservable<T> parent;\n            bool notPublished;\n\n            public First(FirstObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.notPublished = true;\n            }\n\n            public override void OnNext(T value)\n            {\n                if (notPublished)\n                {\n                    notPublished = false;\n                    observer.OnNext(value);\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                    return;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (parent.useDefault)\n                {\n                    if (notPublished)\n                    {\n                        observer.OnNext(default(T));\n                    }\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                }\n                else\n                {\n                    if (notPublished)\n                    {\n                        try { observer.OnError(new InvalidOperationException(\"sequence is empty\")); }\n                        finally { Dispose(); }\n                    }\n                    else\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n        }\n\n        // with predicate\n        class First_ : OperatorObserverBase<T, T>\n        {\n            readonly FirstObservable<T> parent;\n            bool notPublished;\n\n            public First_(FirstObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.notPublished = true;\n            }\n\n            public override void OnNext(T value)\n            {\n                if (notPublished)\n                {\n                    bool isPassed;\n                    try\n                    {\n                        isPassed = parent.predicate(value);\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); }\n                        finally { Dispose(); }\n                        return;\n                    }\n\n                    if (isPassed)\n                    {\n                        notPublished = false;\n                        observer.OnNext(value);\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (parent.useDefault)\n                {\n                    if (notPublished)\n                    {\n                        observer.OnNext(default(T));\n                    }\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                }\n                else\n                {\n                    if (notPublished)\n                    {\n                        try { observer.OnError(new InvalidOperationException(\"sequence is empty\")); }\n                        finally { Dispose(); }\n                    }\n                    else\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/First.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8e3093220aeb1d54faa3fca9fe0af6c0\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ForEachAsync.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class ForEachAsyncObservable<T> : OperatorObservableBase<Unit>\n    {\n        readonly IObservable<T> source;\n        readonly Action<T> onNext;\n        readonly Action<T, int> onNextWithIndex;\n\n        public ForEachAsyncObservable(IObservable<T> source, Action<T> onNext)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.onNext = onNext;\n        }\n\n        public ForEachAsyncObservable(IObservable<T> source, Action<T, int> onNext)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.onNextWithIndex = onNext;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Unit> observer, IDisposable cancel)\n        {\n            if (onNext != null)\n            {\n                return source.Subscribe(new ForEachAsync(this, observer, cancel));\n            }\n            else\n            {\n                return source.Subscribe(new ForEachAsync_(this, observer, cancel));\n            }\n        }\n\n        class ForEachAsync : OperatorObserverBase<T, Unit>\n        {\n            readonly ForEachAsyncObservable<T> parent;\n\n            public ForEachAsync(ForEachAsyncObservable<T> parent, IObserver<Unit> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    parent.onNext(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                observer.OnNext(Unit.Default);\n\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n\n        // with index\n        class ForEachAsync_ : OperatorObserverBase<T, Unit>\n        {\n            readonly ForEachAsyncObservable<T> parent;\n            int index = 0;\n\n            public ForEachAsync_(ForEachAsyncObservable<T> parent, IObserver<Unit> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    parent.onNextWithIndex(value, index++);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                observer.OnNext(Unit.Default);\n\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ForEachAsync.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 5b66ecd2e5290bc4eb8c78a1ccc2d009\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/FromEvent.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Operators\n{\n    // FromEvent, FromEventPattern\n\n    internal class FromEventPatternObservable<TDelegate, TEventArgs> : OperatorObservableBase<EventPattern<TEventArgs>>\n        where TEventArgs : EventArgs\n    {\n        readonly Func<EventHandler<TEventArgs>, TDelegate> conversion;\n        readonly Action<TDelegate> addHandler;\n        readonly Action<TDelegate> removeHandler;\n\n        public FromEventPatternObservable(Func<EventHandler<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler)\n            : base(false)\n        {\n            this.conversion = conversion;\n            this.addHandler = addHandler;\n            this.removeHandler = removeHandler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<EventPattern<TEventArgs>> observer, IDisposable cancel)\n        {\n            var fe = new FromEventPattern(this, observer);\n            return fe.Register() ?  fe : Disposable.Empty;\n        }\n\n        class FromEventPattern : IDisposable\n        {\n            readonly FromEventPatternObservable<TDelegate, TEventArgs> parent;\n            readonly IObserver<EventPattern<TEventArgs>> observer;\n            TDelegate handler;\n\n            public FromEventPattern(FromEventPatternObservable<TDelegate, TEventArgs> parent, IObserver<EventPattern<TEventArgs>> observer)\n            {\n                this.parent = parent;\n                this.observer = observer;\n            }\n\n            public bool Register()\n            {\n                handler = parent.conversion(OnNext);\n                try\n                {\n                    parent.addHandler(handler);\n                }\n                catch (Exception ex)\n                {\n                    observer.OnError(ex);\n                    return false;\n                }\n                return true;\n            }\n\n            void OnNext(object sender, TEventArgs eventArgs)\n            {\n                observer.OnNext(new EventPattern<TEventArgs>(sender, eventArgs));\n            }\n\n            public void Dispose()\n            {\n                if (handler != null)\n                {\n                    parent.removeHandler(handler);\n                    handler = default(TDelegate);\n                }\n            }\n        }\n    }\n\n    internal class FromEventObservable<TDelegate> : OperatorObservableBase<Unit>\n    {\n        readonly Func<Action, TDelegate> conversion;\n        readonly Action<TDelegate> addHandler;\n        readonly Action<TDelegate> removeHandler;\n\n        public FromEventObservable(Func<Action, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler)\n            : base(false)\n        {\n            this.conversion = conversion;\n            this.addHandler = addHandler;\n            this.removeHandler = removeHandler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Unit> observer, IDisposable cancel)\n        {\n            var fe = new FromEvent(this, observer);\n            return fe.Register() ?  fe : Disposable.Empty;\n        }\n\n        class FromEvent : IDisposable\n        {\n            readonly FromEventObservable<TDelegate> parent;\n            readonly IObserver<Unit> observer;\n            TDelegate handler;\n\n            public FromEvent(FromEventObservable<TDelegate> parent, IObserver<Unit> observer)\n            {\n                this.parent = parent;\n                this.observer = observer;\n            }\n\n            public bool Register()\n            {\n                handler = parent.conversion(OnNext);\n\n                try\n                {\n                    parent.addHandler(handler);\n                }\n                catch (Exception ex)\n                {\n                    observer.OnError(ex);\n                    return false;\n                }\n                return true;\n            }\n\n            void OnNext()\n            {\n                observer.OnNext(Unit.Default);\n            }\n\n            public void Dispose()\n            {\n                if (handler != null)\n                {\n                    parent.removeHandler(handler);\n                    handler = default(TDelegate);\n                }\n            }\n        }\n    }\n\n    internal class FromEventObservable<TDelegate, TEventArgs> : OperatorObservableBase<TEventArgs>\n    {\n        readonly Func<Action<TEventArgs>, TDelegate> conversion;\n        readonly Action<TDelegate> addHandler;\n        readonly Action<TDelegate> removeHandler;\n\n        public FromEventObservable(Func<Action<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler)\n            : base(false)\n        {\n            this.conversion = conversion;\n            this.addHandler = addHandler;\n            this.removeHandler = removeHandler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TEventArgs> observer, IDisposable cancel)\n        {\n            var fe = new FromEvent(this, observer);\n            return fe.Register() ?  fe : Disposable.Empty;\n        }\n\n        class FromEvent : IDisposable\n        {\n            readonly FromEventObservable<TDelegate, TEventArgs> parent;\n            readonly IObserver<TEventArgs> observer;\n            TDelegate handler;\n\n            public FromEvent(FromEventObservable<TDelegate, TEventArgs> parent, IObserver<TEventArgs> observer)\n            {\n                this.parent = parent;\n                this.observer = observer;\n            }\n\n            public bool Register()\n            {\n                handler = parent.conversion(OnNext);\n\n                try\n                {\n                    parent.addHandler(handler);\n                }\n                catch (Exception ex)\n                {\n                    observer.OnError(ex);\n                    return false;\n                }\n                return true;\n            }\n\n            void OnNext(TEventArgs args)\n            {\n                observer.OnNext(args);\n            }\n\n            public void Dispose()\n            {\n                if (handler != null)\n                {\n                    parent.removeHandler(handler);\n                    handler = default(TDelegate);\n                }\n            }\n        }\n    }\n\n    internal class FromEventObservable : OperatorObservableBase<Unit>\n    {\n        readonly Action<Action> addHandler;\n        readonly Action<Action> removeHandler;\n\n        public FromEventObservable(Action<Action> addHandler, Action<Action> removeHandler)\n            : base(false)\n        {\n            this.addHandler = addHandler;\n            this.removeHandler = removeHandler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Unit> observer, IDisposable cancel)\n        {\n            var fe = new FromEvent(this, observer);\n            return fe.Register() ?  fe : Disposable.Empty;\n        }\n\n        class FromEvent : IDisposable\n        {\n            readonly FromEventObservable parent;\n            readonly IObserver<Unit> observer;\n            Action handler;\n\n            public FromEvent(FromEventObservable parent, IObserver<Unit> observer)\n            {\n                this.parent = parent;\n                this.observer = observer;\n                this.handler = OnNext;\n            }\n\n            public bool Register()\n            {\n                try\n                {\n                    parent.addHandler(handler);\n                }\n                catch (Exception ex)\n                {\n                    observer.OnError(ex);\n                    return false;\n                }\n                return true;\n            }\n\n            void OnNext()\n            {\n                observer.OnNext(Unit.Default);\n            }\n\n            public void Dispose()\n            {\n                if (handler != null)\n                {\n                    parent.removeHandler(handler);\n                    handler = null;\n                }\n            }\n        }\n    }\n\n    internal class FromEventObservable_<T> : OperatorObservableBase<T>\n    {\n        readonly Action<Action<T>> addHandler;\n        readonly Action<Action<T>> removeHandler;\n\n        public FromEventObservable_(Action<Action<T>> addHandler, Action<Action<T>> removeHandler)\n            : base(false)\n        {\n            this.addHandler = addHandler;\n            this.removeHandler = removeHandler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            var fe = new FromEvent(this, observer);\n            return fe.Register() ?  fe : Disposable.Empty;\n        }\n\n        class FromEvent : IDisposable\n        {\n            readonly FromEventObservable_<T> parent;\n            readonly IObserver<T> observer;\n            Action<T> handler;\n\n            public FromEvent(FromEventObservable_<T> parent, IObserver<T> observer)\n            {\n                this.parent = parent;\n                this.observer = observer;\n                this.handler = OnNext;\n            }\n\n            public bool Register()\n            {\n                try\n                {\n                    parent.addHandler(handler);\n                }\n                catch (Exception ex)\n                {\n                    observer.OnError(ex);\n                    return false;\n                }\n                return true;\n            }\n\n            void OnNext(T value)\n            {\n                observer.OnNext(value);\n            }\n\n            public void Dispose()\n            {\n                if (handler != null)\n                {\n                    parent.removeHandler(handler);\n                    handler = null;\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/FromEvent.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 05fcc5083e94e704ca8f059e4e535ffa\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/GroupBy.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class GroupedObservable<TKey, TElement> : IGroupedObservable<TKey, TElement>\n    {\n        readonly TKey key;\n        readonly IObservable<TElement> subject;\n        readonly RefCountDisposable refCount;\n\n        public TKey Key\n        {\n            get { return key; }\n        }\n\n        public GroupedObservable(TKey key, ISubject<TElement> subject, RefCountDisposable refCount)\n        {\n            this.key = key;\n            this.subject = subject;\n            this.refCount = refCount;\n        }\n\n        public IDisposable Subscribe(IObserver<TElement> observer)\n        {\n            var release = refCount.GetDisposable();\n            var subscription = subject.Subscribe(observer);\n            return StableCompositeDisposable.Create(release, subscription);\n        }\n    }\n\n    internal class GroupByObservable<TSource, TKey, TElement> : OperatorObservableBase<IGroupedObservable<TKey, TElement>>\n    {\n        readonly IObservable<TSource> source;\n        readonly Func<TSource, TKey> keySelector;\n        readonly Func<TSource, TElement> elementSelector;\n        readonly int? capacity;\n        readonly IEqualityComparer<TKey> comparer;\n\n        public GroupByObservable(IObservable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, int? capacity, IEqualityComparer<TKey> comparer)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.keySelector = keySelector;\n            this.elementSelector = elementSelector;\n            this.capacity = capacity;\n            this.comparer = comparer;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<IGroupedObservable<TKey, TElement>> observer, IDisposable cancel)\n        {\n            return new GroupBy(this, observer, cancel).Run();\n        }\n\n        class GroupBy : OperatorObserverBase<TSource, IGroupedObservable<TKey, TElement>>\n        {\n            readonly GroupByObservable<TSource, TKey, TElement> parent;\n            readonly Dictionary<TKey, ISubject<TElement>> map;\n            ISubject<TElement> nullKeySubject;\n\n            CompositeDisposable groupDisposable;\n            RefCountDisposable refCountDisposable;\n\n            public GroupBy(GroupByObservable<TSource, TKey, TElement> parent, IObserver<IGroupedObservable<TKey, TElement>> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n                if (parent.capacity.HasValue)\n                {\n                    map = new Dictionary<TKey, ISubject<TElement>>(parent.capacity.Value, parent.comparer);\n                }\n                else\n                {\n                    map = new Dictionary<TKey, ISubject<TElement>>(parent.comparer);\n                }\n            }\n\n            public IDisposable Run()\n            {\n                groupDisposable = new CompositeDisposable();\n                refCountDisposable = new RefCountDisposable(groupDisposable);\n\n                groupDisposable.Add(parent.source.Subscribe(this));\n\n                return refCountDisposable;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                var key = default(TKey);\n                try\n                {\n                    key = parent.keySelector(value);\n                }\n                catch (Exception exception)\n                {\n                    Error(exception);\n                    return;\n                }\n\n                var fireNewMapEntry = false;\n                var writer = default(ISubject<TElement>);\n                try\n                {\n                    if (key == null)\n                    {\n                        if (nullKeySubject == null)\n                        {\n                            nullKeySubject = new Subject<TElement>();\n                            fireNewMapEntry = true;\n                        }\n\n                        writer = nullKeySubject;\n                    }\n                    else\n                    {\n                        if (!map.TryGetValue(key, out writer))\n                        {\n                            writer = new Subject<TElement>();\n                            map.Add(key, writer);\n                            fireNewMapEntry = true;\n                        }\n                    }\n                }\n                catch (Exception exception)\n                {\n                    Error(exception);\n                    return;\n                }\n\n                if (fireNewMapEntry)\n                {\n                    var group = new GroupedObservable<TKey, TElement>(key, writer, refCountDisposable);\n                    observer.OnNext(group);\n                }\n\n                var element = default(TElement);\n                try\n                {\n                    element = parent.elementSelector(value);\n                }\n                catch (Exception exception)\n                {\n                    Error(exception);\n                    return;\n                }\n\n                writer.OnNext(element);\n            }\n\n            public override void OnError(Exception error)\n            {\n                Error(error);\n            }\n\n            public override void OnCompleted()\n            {\n                try\n                {\n                    if (nullKeySubject != null) nullKeySubject.OnCompleted();\n\n                    foreach (var s in map.Values)\n                    {\n                        s.OnCompleted();\n                    }\n\n                    observer.OnCompleted();\n                }\n                finally\n                {\n                    Dispose();\n                }\n            }\n\n            void Error(Exception exception)\n            {\n                try\n                {\n                    if (nullKeySubject != null) nullKeySubject.OnError(exception);\n\n                    foreach (var s in map.Values)\n                    {\n                        s.OnError(exception);\n                    }\n\n                    observer.OnError(exception);\n                }\n                finally\n                {\n                    Dispose();\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/GroupBy.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7345fc4a6df05ca47ab89ec819bccde6\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/IgnoreElements.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class IgnoreElementsObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n\n        public IgnoreElementsObservable(IObservable<T> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new IgnoreElements(observer, cancel));\n        }\n\n        class IgnoreElements : OperatorObserverBase<T, T>\n        {\n            public IgnoreElements(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/IgnoreElements.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d6c8ca210619da74b92cbdb3e8c58127\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Last.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class LastObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly bool useDefault;\n        readonly Func<T, bool> predicate;\n\n        public LastObservable(IObservable<T> source, bool useDefault)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.useDefault = useDefault;\n        }\n\n        public LastObservable(IObservable<T> source, Func<T, bool> predicate, bool useDefault)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicate = predicate;\n            this.useDefault = useDefault;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (predicate == null)\n            {\n                return source.Subscribe(new Last(this, observer, cancel));\n            }\n            else\n            {\n                return source.Subscribe(new Last_(this, observer, cancel));\n            }\n        }\n\n        class Last : OperatorObserverBase<T, T>\n        {\n            readonly LastObservable<T> parent;\n            bool notPublished;\n            T lastValue;\n\n            public Last(LastObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.notPublished = true;\n            }\n\n            public override void OnNext(T value)\n            {\n                notPublished = false;\n                lastValue = value;\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (parent.useDefault)\n                {\n                    if (notPublished)\n                    {\n                        observer.OnNext(default(T));\n                    }\n                    else\n                    {\n                        observer.OnNext(lastValue);\n                    }\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                }\n                else\n                {\n                    if (notPublished)\n                    {\n                        try { observer.OnError(new InvalidOperationException(\"sequence is empty\")); }\n                        finally { Dispose(); }\n                    }\n                    else\n                    {\n                        observer.OnNext(lastValue);\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n        }\n\n        class Last_ : OperatorObserverBase<T, T>\n        {\n            readonly LastObservable<T> parent;\n            bool notPublished;\n            T lastValue;\n\n            public Last_(LastObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.notPublished = true;\n            }\n\n            public override void OnNext(T value)\n            {\n                bool isPassed;\n                try\n                {\n                    isPassed = parent.predicate(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                if (isPassed)\n                {\n                    notPublished = false;\n                    lastValue = value;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (parent.useDefault)\n                {\n                    if (notPublished)\n                    {\n                        observer.OnNext(default(T));\n                    }\n                    else\n                    {\n                        observer.OnNext(lastValue);\n                    }\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                }\n                else\n                {\n                    if (notPublished)\n                    {\n                        try { observer.OnError(new InvalidOperationException(\"sequence is empty\")); }\n                        finally { Dispose(); }\n                    }\n                    else\n                    {\n                        observer.OnNext(lastValue);\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Last.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 696780c8759162d4b996683ec13d7e0b\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Materialize.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class MaterializeObservable<T> : OperatorObservableBase<Notification<T>>\n    {\n        readonly IObservable<T> source;\n\n        public MaterializeObservable(IObservable<T> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Notification<T>> observer, IDisposable cancel)\n        {\n            return new Materialize(this, observer, cancel).Run();\n        }\n\n        class Materialize : OperatorObserverBase<T, Notification<T>>\n        {\n            readonly MaterializeObservable<T> parent;\n\n            public Materialize(MaterializeObservable<T> parent, IObserver<Notification<T>> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                observer.OnNext(Notification.CreateOnNext(value));\n            }\n\n            public override void OnError(Exception error)\n            {\n                observer.OnNext(Notification.CreateOnError<T>(error));\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                observer.OnNext(Notification.CreateOnCompleted<T>());\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Materialize.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 09d3ba9e6d5fe4643bbf0df943652908\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Merge.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class MergeObservable<T> : OperatorObservableBase<T>\n    {\n        private readonly IObservable<IObservable<T>> sources;\n        private readonly int maxConcurrent;\n\n        public MergeObservable(IObservable<IObservable<T>> sources, bool isRequiredSubscribeOnCurrentThread)\n            : base(isRequiredSubscribeOnCurrentThread)\n        {\n            this.sources = sources;\n        }\n\n        public MergeObservable(IObservable<IObservable<T>> sources, int maxConcurrent, bool isRequiredSubscribeOnCurrentThread)\n            : base(isRequiredSubscribeOnCurrentThread)\n        {\n            this.sources = sources;\n            this.maxConcurrent = maxConcurrent;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (maxConcurrent > 0)\n            {\n                return new MergeConcurrentObserver(this, observer, cancel).Run();\n            }\n            else\n            {\n                return new MergeOuterObserver(this, observer, cancel).Run();\n            }\n        }\n\n        class MergeOuterObserver : OperatorObserverBase<IObservable<T>, T>\n        {\n            readonly MergeObservable<T> parent;\n\n            CompositeDisposable collectionDisposable;\n            SingleAssignmentDisposable sourceDisposable;\n            object gate = new object();\n            bool isStopped = false;\n\n            public MergeOuterObserver(MergeObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                collectionDisposable = new CompositeDisposable();\n                sourceDisposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(sourceDisposable);\n\n                sourceDisposable.Disposable = parent.sources.Subscribe(this);\n                return collectionDisposable;\n            }\n\n            public override void OnNext(IObservable<T> value)\n            {\n                var disposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(disposable);\n                var collectionObserver = new Merge(this, disposable);\n                disposable.Disposable = value.Subscribe(collectionObserver);\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); };\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                isStopped = true;\n                if (collectionDisposable.Count == 1)\n                {\n                    lock (gate)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); };\n                    }\n                }\n                else\n                {\n                    sourceDisposable.Dispose();\n                }\n            }\n\n            class Merge : OperatorObserverBase<T, T>\n            {\n                readonly MergeOuterObserver parent;\n                readonly IDisposable cancel;\n\n                public Merge(MergeOuterObserver parent, IDisposable cancel)\n                    : base(parent.observer, cancel)\n                {\n                    this.parent = parent;\n                    this.cancel = cancel;\n                }\n\n                public override void OnNext(T value)\n                {\n                    lock (parent.gate)\n                    {\n                        base.observer.OnNext(value);\n                    }\n                }\n\n                public override void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        try { observer.OnError(error); } finally { Dispose(); };\n                    }\n                }\n\n                public override void OnCompleted()\n                {\n                    parent.collectionDisposable.Remove(cancel);\n                    if (parent.isStopped && parent.collectionDisposable.Count == 1)\n                    {\n                        lock (parent.gate)\n                        {\n                            try { observer.OnCompleted(); } finally { Dispose(); };\n                        }\n                    }\n                }\n            }\n        }\n\n        class MergeConcurrentObserver : OperatorObserverBase<IObservable<T>, T>\n        {\n            readonly MergeObservable<T> parent;\n\n            CompositeDisposable collectionDisposable;\n            SingleAssignmentDisposable sourceDisposable;\n            object gate = new object();\n            bool isStopped = false;\n\n            // concurrency\n            Queue<IObservable<T>> q;\n            int activeCount;\n\n            public MergeConcurrentObserver(MergeObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                q = new Queue<IObservable<T>>();\n                activeCount = 0;\n\n                collectionDisposable = new CompositeDisposable();\n                sourceDisposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(sourceDisposable);\n\n                sourceDisposable.Disposable = parent.sources.Subscribe(this);\n                return collectionDisposable;\n            }\n\n            public override void OnNext(IObservable<T> value)\n            {\n                lock (gate)\n                {\n                    if (activeCount < parent.maxConcurrent)\n                    {\n                        activeCount++;\n                        Subscribe(value);\n                    }\n                    else\n                    {\n                        q.Enqueue(value);\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); };\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (gate)\n                {\n                    isStopped = true;\n                    if (activeCount == 0)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); };\n                    }\n                    else\n                    {\n                        sourceDisposable.Dispose();\n                    }\n                }\n            }\n\n            void Subscribe(IObservable<T> innerSource)\n            {\n                var disposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(disposable);\n                var collectionObserver = new Merge(this, disposable);\n                disposable.Disposable = innerSource.Subscribe(collectionObserver);\n            }\n\n            class Merge : OperatorObserverBase<T, T>\n            {\n                readonly MergeConcurrentObserver parent;\n                readonly IDisposable cancel;\n\n                public Merge(MergeConcurrentObserver parent, IDisposable cancel)\n                    : base(parent.observer, cancel)\n                {\n                    this.parent = parent;\n                    this.cancel = cancel;\n                }\n\n                public override void OnNext(T value)\n                {\n                    lock (parent.gate)\n                    {\n                        base.observer.OnNext(value);\n                    }\n                }\n\n                public override void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        try { observer.OnError(error); } finally { Dispose(); };\n                    }\n                }\n\n                public override void OnCompleted()\n                {\n                    parent.collectionDisposable.Remove(cancel);\n                    lock (parent.gate)\n                    {\n                        if (parent.q.Count > 0)\n                        {\n                            var source = parent.q.Dequeue();\n                            parent.Subscribe(source);\n                        }\n                        else\n                        {\n                            parent.activeCount--;\n                            if (parent.isStopped && parent.activeCount == 0)\n                            {\n                                try { observer.OnCompleted(); } finally { Dispose(); };\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Merge.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 94158fab525468d4e896a62f633257e6\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Never.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class NeverObservable<T> : OperatorObservableBase<T>\n    {\n        public NeverObservable()\n            : base(false)\n        {\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return Disposable.Empty;\n        }\n    }\n\n    internal class ImmutableNeverObservable<T> : IObservable<T>, IOptimizedObservable<T>\n    {\n        internal static ImmutableNeverObservable<T> Instance = new ImmutableNeverObservable<T>();\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            return Disposable.Empty;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Never.cs.meta",
    "content": "fileFormatVersion: 2\nguid: b5db8d5c73883214abaf3715002da256\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ObserveOn.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class ObserveOnObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IScheduler scheduler;\n\n        public ObserveOnObservable(IObservable<T> source, IScheduler scheduler)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            var queueing = scheduler as ISchedulerQueueing;\n            if (queueing == null)\n            {\n                return new ObserveOn(this, observer, cancel).Run();\n            }\n            else\n            {\n                return new ObserveOn_(this, queueing, observer, cancel).Run();\n            }\n        }\n\n        class ObserveOn : OperatorObserverBase<T, T>\n        {\n            class SchedulableAction : IDisposable\n            {\n                public Notification<T> data;\n                public LinkedListNode<SchedulableAction> node;\n                public IDisposable schedule;\n\n                public void Dispose()\n                {\n                    if (schedule != null)\n                        schedule.Dispose();\n                    schedule = null;\n\n                    if (node.List != null)\n                    {\n                        node.List.Remove(node);\n                    }\n                }\n\n                public bool IsScheduled { get { return schedule != null; } }\n            }\n\n            readonly ObserveOnObservable<T> parent;\n            readonly LinkedList<SchedulableAction> actions = new LinkedList<SchedulableAction>();\n            bool isDisposed;\n\n            public ObserveOn(ObserveOnObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                isDisposed = false;\n\n                var sourceDisposable = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(sourceDisposable, Disposable.Create(() =>\n                {\n                    lock (actions)\n                    {\n                        isDisposed = true;\n\n                        while (actions.Count > 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Dispose will both cancel the action (if not already running)\n\t\t\t\t\t\t\t// and remove it from 'actions'\n                            actions.First.Value.Dispose();\n\t\t\t\t\t\t}\n                    }\n                }));\n            }\n\n            public override void OnNext(T value)\n            {\n                QueueAction(new Notification<T>.OnNextNotification(value));\n            }\n\n            public override void OnError(Exception error)\n            {\n                QueueAction(new Notification<T>.OnErrorNotification(error));\n            }\n\n            public override void OnCompleted()\n            {\n                QueueAction(new Notification<T>.OnCompletedNotification());\n            }\n\n            private void QueueAction(Notification<T> data)\n            {\n                var action = new SchedulableAction { data = data };\n                lock (actions)\n                {\n                    if (isDisposed) return;\n\n                    action.node = actions.AddLast(action);\n                    ProcessNext();\n                }\n            }\n\n            private void ProcessNext()\n            {\n                lock (actions)\n                {\n                    if (actions.Count == 0 || isDisposed)\n                        return;\n\n                    var action = actions.First.Value;\n\n                    if (action.IsScheduled)\n                        return;\n\n                    action.schedule = parent.scheduler.Schedule(() =>\n                    {\n                        try\n                        {\n                            switch (action.data.Kind)\n                            {\n                                case NotificationKind.OnNext:\n                                    observer.OnNext(action.data.Value);\n                                    break;\n                                case NotificationKind.OnError:\n                                    observer.OnError(action.data.Exception);\n                                    break;\n                                case NotificationKind.OnCompleted:\n                                    observer.OnCompleted();\n                                    break;\n                            }\n                        }\n                        finally\n                        {\n                            lock (actions)\n                            {\n                                action.Dispose();\n                            }\n\n                            if (action.data.Kind == NotificationKind.OnNext)\n                                ProcessNext();\n                            else\n                                Dispose();\n                        }\n                    });\n                }\n            }\n        }\n\n        class ObserveOn_ : OperatorObserverBase<T, T>\n        {\n            readonly ObserveOnObservable<T> parent;\n            readonly ISchedulerQueueing scheduler;\n            readonly BooleanDisposable isDisposed;\n            readonly Action<T> onNext;\n\n            public ObserveOn_(ObserveOnObservable<T> parent, ISchedulerQueueing scheduler, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.scheduler = scheduler;\n                this.isDisposed = new BooleanDisposable();\n                this.onNext = new Action<T>(OnNext_); // cache delegate\n            }\n\n            public IDisposable Run()\n            {\n                var sourceDisposable = parent.source.Subscribe(this);\n                return StableCompositeDisposable.Create(sourceDisposable, isDisposed);\n            }\n\n            void OnNext_(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            void OnError_(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); };\n            }\n\n            void OnCompleted_(Unit _)\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n\n            public override void OnNext(T value)\n            {\n                scheduler.ScheduleQueueing(isDisposed, value, onNext);\n            }\n\n            public override void OnError(Exception error)\n            {\n                scheduler.ScheduleQueueing(isDisposed, error, OnError_);\n            }\n\n            public override void OnCompleted()\n            {\n                scheduler.ScheduleQueueing(isDisposed, Unit.Default, OnCompleted_);\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ObserveOn.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 39df784f492c7404286d05b09a840705\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/OfType.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class OfTypeObservable<TSource, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TSource> source;\n\n        public OfTypeObservable(IObservable<TSource> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new OfType(observer, cancel));\n        }\n\n        class OfType : OperatorObserverBase<TSource, TResult>\n        {\n            public OfType(IObserver<TResult> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(TSource value)\n            {\n                if (value is TResult)\n                {\n                    var castValue = (TResult)(object)value;\n                    observer.OnNext(castValue);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/OfType.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 981fd4bf7704404459a0deed254a03e5\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/OperatorObservableBase.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    // implements note : all field must be readonly.\n    public abstract class OperatorObservableBase<T> : IObservable<T>, IOptimizedObservable<T>\n    {\n        readonly bool isRequiredSubscribeOnCurrentThread;\n\n        public OperatorObservableBase(bool isRequiredSubscribeOnCurrentThread)\n        {\n            this.isRequiredSubscribeOnCurrentThread = isRequiredSubscribeOnCurrentThread;\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return isRequiredSubscribeOnCurrentThread;\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            var subscription = new SingleAssignmentDisposable();\n\n            // note:\n            // does not make the safe observer, it breaks exception durability.\n            // var safeObserver = Observer.CreateAutoDetachObserver<T>(observer, subscription);\n\n            if (isRequiredSubscribeOnCurrentThread && Scheduler.IsCurrentThreadSchedulerScheduleRequired)\n            {\n                Scheduler.CurrentThread.Schedule(() => subscription.Disposable = SubscribeCore(observer, subscription));\n            }\n            else\n            {\n                subscription.Disposable = SubscribeCore(observer, subscription);\n            }\n\n            return subscription;\n        }\n\n        protected abstract IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel);\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/OperatorObservableBase.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1b94a1a0ae5d509488c6242454216bdb\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/OperatorObserverBase.cs",
    "content": "﻿using System;\nusing System.Threading;\n\nnamespace UniRx.Operators\n{\n    public abstract class OperatorObserverBase<TSource, TResult> : IDisposable, IObserver<TSource>\n    {\n        protected internal volatile IObserver<TResult> observer;\n        IDisposable cancel;\n\n        public OperatorObserverBase(IObserver<TResult> observer, IDisposable cancel)\n        {\n            this.observer = observer;\n            this.cancel = cancel;\n        }\n\n        public abstract void OnNext(TSource value);\n\n        public abstract void OnError(Exception error);\n\n        public abstract void OnCompleted();\n\n        public void Dispose()\n        {\n            observer = UniRx.InternalUtil.EmptyObserver<TResult>.Instance;\n            var target = System.Threading.Interlocked.Exchange(ref cancel, null);\n            if (target != null)\n            {\n                target.Dispose();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/OperatorObserverBase.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 258901a4513be8f4a8bfcca91e70bb12\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/PairWise.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class PairwiseObservable<T, TR> : OperatorObservableBase<TR>\n    {\n        readonly IObservable<T> source;\n        readonly Func<T, T, TR> selector;\n\n        public PairwiseObservable(IObservable<T> source, Func<T, T, TR> selector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.selector = selector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Pairwise(this, observer, cancel));\n        }\n\n        class Pairwise : OperatorObserverBase<T, TR>\n        {\n            readonly PairwiseObservable<T, TR> parent;\n            T prev = default(T);\n            bool isFirst = true;\n\n            public Pairwise(PairwiseObservable<T, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                if (isFirst)\n                {\n                    isFirst = false;\n                    prev = value;\n                    return;\n                }\n\n                TR v;\n                try\n                {\n                    v = parent.selector(prev, value);\n                    prev = value;\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                observer.OnNext(v);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class PairwiseObservable<T> : OperatorObservableBase<Pair<T>>\n    {\n        readonly IObservable<T> source;\n\n        public PairwiseObservable(IObservable<T> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Pair<T>> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Pairwise(observer, cancel));\n        }\n\n        class Pairwise : OperatorObserverBase<T, Pair<T>>\n        {\n            T prev = default(T);\n            bool isFirst = true;\n\n            public Pairwise(IObserver<Pair<T>> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                if (isFirst)\n                {\n                    isFirst = false;\n                    prev = value;\n                    return;\n                }\n\n                var pair = new Pair<T>(prev, value);\n                prev = value;\n                observer.OnNext(pair);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/PairWise.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f66e4871304e6e74d8548d597457e53c\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Range.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class RangeObservable : OperatorObservableBase<int>\n    {\n        readonly int start;\n        readonly int count;\n        readonly IScheduler scheduler;\n\n        public RangeObservable(int start, int count, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread)\n        {\n            if (count < 0) throw new ArgumentOutOfRangeException(\"count < 0\");\n\n            this.start = start;\n            this.count = count;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<int> observer, IDisposable cancel)\n        {\n            observer = new Range(observer, cancel);\n\n            if (scheduler == Scheduler.Immediate)\n            {\n                for (int i = 0; i < count; i++)\n                {\n                    int v = start + i;\n                    observer.OnNext(v);\n                }\n                observer.OnCompleted();\n\n                return Disposable.Empty;\n            }\n            else\n            {\n                var i = 0;\n                return scheduler.Schedule((Action self) =>\n                {\n                    if (i < count)\n                    {\n                        int v = start + i;\n                        observer.OnNext(v);\n                        i++;\n                        self();\n                    }\n                    else\n                    {\n                        observer.OnCompleted();\n                    }\n                });\n            }\n        }\n\n        class Range : OperatorObserverBase<int, int>\n        {\n            public Range(IObserver<int> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(int value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Range.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2249fbe589c8d3042ac201c1ab4be76f\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/RefCount.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class RefCountObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IConnectableObservable<T> source;\n        readonly object gate = new object();\n        int refCount = 0;\n        IDisposable connection;\n\n        public RefCountObservable(IConnectableObservable<T> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new RefCount(this, observer, cancel).Run();\n        }\n\n        class RefCount : OperatorObserverBase<T, T>\n        {\n            readonly RefCountObservable<T> parent;\n\n            public RefCount(RefCountObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var subcription = parent.source.Subscribe(this);\n\n                lock (parent.gate)\n                {\n                    if (++parent.refCount == 1)\n                    {\n                        parent.connection = parent.source.Connect();\n                    }\n                }\n\n                return Disposable.Create(() =>\n                {\n                    subcription.Dispose();\n\n                    lock (parent.gate)\n                    {\n                        if (--parent.refCount == 0)\n                        {\n                            parent.connection.Dispose();\n                        }\n                    }\n                });\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/RefCount.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 17a77b422aa699d4d8cfbf6de804d238\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Repeat.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class RepeatObservable<T> : OperatorObservableBase<T>\n    {\n        readonly T value;\n        readonly int? repeatCount;\n        readonly IScheduler scheduler;\n\n        public RepeatObservable(T value, int? repeatCount, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread)\n        {\n            this.value = value;\n            this.repeatCount = repeatCount;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            observer = new Repeat(observer, cancel);\n\n            if (repeatCount == null)\n            {\n                return scheduler.Schedule((Action self) =>\n                {\n                    observer.OnNext(value);\n                    self();\n                });\n            }\n            else\n            {\n                if (scheduler == Scheduler.Immediate)\n                {\n                    var count = this.repeatCount.Value;\n                    for (int i = 0; i < count; i++)\n                    {\n                        observer.OnNext(value);\n                    }\n                    observer.OnCompleted();\n                    return Disposable.Empty;\n                }\n                else\n                {\n                    var currentCount = this.repeatCount.Value;\n                    return scheduler.Schedule((Action self) =>\n                    {\n                        if (currentCount > 0)\n                        {\n                            observer.OnNext(value);\n                            currentCount--;\n                        }\n\n                        if (currentCount == 0)\n                        {\n                            observer.OnCompleted();\n                            return;\n                        }\n\n                        self();\n                    });\n                }\n            }\n        }\n\n        class Repeat : OperatorObserverBase<T, T>\n        {\n            public Repeat(IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Repeat.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 63930706f2ea6e847866fc6d914b0d2e\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/RepeatSafe.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class RepeatSafeObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IEnumerable<IObservable<T>> sources;\n\n        public RepeatSafeObservable(IEnumerable<IObservable<T>> sources, bool isRequiredSubscribeOnCurrentThread)\n            : base(isRequiredSubscribeOnCurrentThread)\n        {\n            this.sources = sources;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new RepeatSafe(this, observer, cancel).Run();\n        }\n\n        class RepeatSafe : OperatorObserverBase<T, T>\n        {\n            readonly RepeatSafeObservable<T> parent;\n            readonly object gate = new object();\n\n            IEnumerator<IObservable<T>> e;\n            SerialDisposable subscription;\n            Action nextSelf;\n            bool isDisposed;\n            bool isRunNext;\n\n            public RepeatSafe(RepeatSafeObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                isDisposed = false;\n                isRunNext = false;\n                e = parent.sources.GetEnumerator();\n                subscription = new SerialDisposable();\n\n                var schedule = Scheduler.DefaultSchedulers.TailRecursion.Schedule(RecursiveRun);\n\n                return StableCompositeDisposable.Create(schedule, subscription, Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        isDisposed = true;\n                        e.Dispose();\n                    }\n                }));\n            }\n\n            void RecursiveRun(Action self)\n            {\n                lock (gate)\n                {\n                    this.nextSelf = self;\n                    if (isDisposed) return;\n\n                    var current = default(IObservable<T>);\n                    var hasNext = false;\n                    var ex = default(Exception);\n\n                    try\n                    {\n                        hasNext = e.MoveNext();\n                        if (hasNext)\n                        {\n                            current = e.Current;\n                            if (current == null) throw new InvalidOperationException(\"sequence is null.\");\n                        }\n                        else\n                        {\n                            e.Dispose();\n                        }\n                    }\n                    catch (Exception exception)\n                    {\n                        ex = exception;\n                        e.Dispose();\n                    }\n\n                    if (ex != null)\n                    {\n                        try { observer.OnError(ex); }\n                        finally { Dispose(); }\n                        return;\n                    }\n\n                    if (!hasNext)\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                        return;\n                    }\n\n                    var source = e.Current;\n                    var d = new SingleAssignmentDisposable();\n                    subscription.Disposable = d;\n                    d.Disposable = source.Subscribe(this);\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                isRunNext = true;\n                base.observer.OnNext(value);\n            }\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (isRunNext && !isDisposed)\n                {\n                    isRunNext = false;\n                    this.nextSelf();\n                }\n                else\n                {\n                    e.Dispose();\n                    if (!isDisposed)\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/RepeatSafe.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 6458fa5124443dc4bb95ad3d0b743934\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Return.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class ReturnObservable<T> : OperatorObservableBase<T>\n    {\n        readonly T value;\n        readonly IScheduler scheduler;\n\n        public ReturnObservable(T value, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread)\n        {\n            this.value = value;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            observer = new Return(observer, cancel);\n\n            if (scheduler == Scheduler.Immediate)\n            {\n                observer.OnNext(value);\n                observer.OnCompleted();\n                return Disposable.Empty;\n            }\n            else\n            {\n                return scheduler.Schedule(() =>\n                {\n                    observer.OnNext(value);\n                    observer.OnCompleted();\n                });\n            }\n        }\n\n        class Return : OperatorObserverBase<T, T>\n        {\n            public Return(IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class ImmediateReturnObservable<T> : IObservable<T>, IOptimizedObservable<T>\n    {\n        readonly T value;\n\n        public ImmediateReturnObservable(T value)\n        {\n            this.value = value;\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            observer.OnNext(value);\n            observer.OnCompleted();\n            return Disposable.Empty;\n        }\n    }\n\n    internal class ImmutableReturnUnitObservable : IObservable<Unit>, IOptimizedObservable<Unit>\n    {\n        internal static ImmutableReturnUnitObservable Instance = new ImmutableReturnUnitObservable();\n\n        ImmutableReturnUnitObservable()\n        {\n\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        public IDisposable Subscribe(IObserver<Unit> observer)\n        {\n            observer.OnNext(Unit.Default);\n            observer.OnCompleted();\n            return Disposable.Empty;\n        }\n    }\n\n    internal class ImmutableReturnTrueObservable : IObservable<bool>, IOptimizedObservable<bool>\n    {\n        internal static ImmutableReturnTrueObservable Instance = new ImmutableReturnTrueObservable();\n\n        ImmutableReturnTrueObservable()\n        {\n\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        public IDisposable Subscribe(IObserver<bool> observer)\n        {\n            observer.OnNext(true);\n            observer.OnCompleted();\n            return Disposable.Empty;\n        }\n    }\n\n    internal class ImmutableReturnFalseObservable : IObservable<bool>, IOptimizedObservable<bool>\n    {\n        internal static ImmutableReturnFalseObservable Instance = new ImmutableReturnFalseObservable();\n\n        ImmutableReturnFalseObservable()\n        {\n\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        public IDisposable Subscribe(IObserver<bool> observer)\n        {\n            observer.OnNext(false);\n            observer.OnCompleted();\n            return Disposable.Empty;\n        }\n    }\n\n    internal class ImmutableReturnInt32Observable : IObservable<int>, IOptimizedObservable<int>\n    {\n        static ImmutableReturnInt32Observable[] Caches = new ImmutableReturnInt32Observable[]\n        {\n            new ImmutableReturnInt32Observable(-1),\n            new ImmutableReturnInt32Observable(0),\n            new ImmutableReturnInt32Observable(1),\n            new ImmutableReturnInt32Observable(2),\n            new ImmutableReturnInt32Observable(3),\n            new ImmutableReturnInt32Observable(4),\n            new ImmutableReturnInt32Observable(5),\n            new ImmutableReturnInt32Observable(6),\n            new ImmutableReturnInt32Observable(7),\n            new ImmutableReturnInt32Observable(8),\n            new ImmutableReturnInt32Observable(9),\n        };\n\n        public static IObservable<int> GetInt32Observable(int x)\n        {\n            if (-1 <= x && x <= 9)\n            {\n                return Caches[x + 1];\n            }\n\n            return new ImmediateReturnObservable<int>(x);\n        }\n\n        readonly int x;\n\n        ImmutableReturnInt32Observable(int x)\n        {\n            this.x = x;\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        public IDisposable Subscribe(IObserver<int> observer)\n        {\n            observer.OnNext(x);\n            observer.OnCompleted();\n            return Disposable.Empty;\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Return.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 25648117feeec6043bd39468bfab62b7\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Sample.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Operators\n{\n    internal class SampleObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly TimeSpan interval;\n        readonly IScheduler scheduler;\n\n        public SampleObservable(IObservable<T> source, TimeSpan interval, IScheduler scheduler)\n            : base(source.IsRequiredSubscribeOnCurrentThread() || scheduler == Scheduler.CurrentThread)\n        {\n            this.source = source;\n            this.interval = interval;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Sample(this, observer, cancel).Run();\n        }\n\n        class Sample : OperatorObserverBase<T, T>\n        {\n            readonly SampleObservable<T> parent;\n            readonly object gate = new object();\n            T latestValue = default(T);\n            bool isUpdated = false;\n            bool isCompleted = false;\n            SingleAssignmentDisposable sourceSubscription;\n\n            public Sample(SampleObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                sourceSubscription = new SingleAssignmentDisposable();\n                sourceSubscription.Disposable = parent.source.Subscribe(this);\n\n\n                IDisposable scheduling;\n                var periodicScheduler = parent.scheduler as ISchedulerPeriodic;\n                if (periodicScheduler != null)\n                {\n                    scheduling = periodicScheduler.SchedulePeriodic(parent.interval, OnNextTick);\n                }\n                else\n                {\n                    scheduling = parent.scheduler.Schedule(parent.interval, OnNextRecursive);\n                }\n\n                return StableCompositeDisposable.Create(sourceSubscription, scheduling);\n            }\n\n            void OnNextTick()\n            {\n                lock (gate)\n                {\n                    if (isUpdated)\n                    {\n                        var value = latestValue;\n                        isUpdated = false;\n                        observer.OnNext(value);\n                    }\n                    if (isCompleted)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); }\n                    }\n                }\n            }\n\n            void OnNextRecursive(Action<TimeSpan> self)\n            {\n                lock (gate)\n                {\n                    if (isUpdated)\n                    {\n                        var value = latestValue;\n                        isUpdated = false;\n                        observer.OnNext(value);\n                    }\n                    if (isCompleted)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); }\n                    }\n                }\n                self(parent.interval);\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    latestValue = value;\n                    isUpdated = true;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { base.observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (gate)\n                {\n                    isCompleted = true;\n                    sourceSubscription.Dispose();\n                }\n            }\n        }\n    }\n\n    internal class SampleObservable<T, T2> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IObservable<T2> intervalSource;\n\n        public SampleObservable(IObservable<T> source, IObservable<T2> intervalSource)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.intervalSource = intervalSource;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Sample(this, observer, cancel).Run();\n        }\n\n        class Sample : OperatorObserverBase<T, T>\n        {\n            readonly SampleObservable<T, T2> parent;\n            readonly object gate = new object();\n            T latestValue = default(T);\n            bool isUpdated = false;\n            bool isCompleted = false;\n            SingleAssignmentDisposable sourceSubscription;\n\n            public Sample(\n                SampleObservable<T, T2> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                sourceSubscription = new SingleAssignmentDisposable();\n                sourceSubscription.Disposable = parent.source.Subscribe(this);\n\n                var scheduling = this.parent.intervalSource.Subscribe(new SampleTick(this));\n\n                return StableCompositeDisposable.Create(sourceSubscription, scheduling);\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    latestValue = value;\n                    isUpdated = true;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { base.observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (gate)\n                {\n                    isCompleted = true;\n                    sourceSubscription.Dispose();\n                }\n            }\n\n            class SampleTick : IObserver<T2>\n            {\n                readonly Sample parent;\n\n                public SampleTick(Sample parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.isUpdated)\n                        {\n                            parent.isUpdated = false;\n                            parent.observer.OnNext(parent.latestValue);\n                        }\n                        if (parent.isCompleted)\n                        {\n                            try { parent.observer.OnCompleted(); } finally { parent.Dispose(); }\n                        }\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                }\n\n                public void OnNext(T2 _)\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.isUpdated)\n                        {\n                            var value = parent.latestValue;\n                            parent.isUpdated = false;\n                            parent.observer.OnNext(value);\n                        }\n                        if (parent.isCompleted)\n                        {\n                            try { parent.observer.OnCompleted(); } finally { parent.Dispose(); }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Sample.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 414e918f6a4dfc549b2a8c916a6325e1\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Scan.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class ScanObservable<TSource> : OperatorObservableBase<TSource>\n    {\n        readonly IObservable<TSource> source;\n        readonly Func<TSource, TSource, TSource> accumulator;\n\n        public ScanObservable(IObservable<TSource> source, Func<TSource, TSource, TSource> accumulator)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.accumulator = accumulator;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TSource> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Scan(this, observer, cancel));\n        }\n\n        class Scan : OperatorObserverBase<TSource, TSource>\n        {\n            readonly ScanObservable<TSource> parent;\n            TSource accumulation;\n            bool isFirst;\n\n            public Scan(ScanObservable<TSource> parent, IObserver<TSource> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.isFirst = true;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                if (isFirst)\n                {\n                    isFirst = false;\n                    accumulation = value;\n                }\n                else\n                {\n                    try\n                    {\n                        accumulation = parent.accumulator(accumulation, value);\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); }\n                        finally { Dispose(); }\n                        return;\n                    }\n                }\n\n                observer.OnNext(accumulation);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class ScanObservable<TSource, TAccumulate> : OperatorObservableBase<TAccumulate>\n    {\n        readonly IObservable<TSource> source;\n        readonly TAccumulate seed;\n        readonly Func<TAccumulate, TSource, TAccumulate> accumulator;\n\n        public ScanObservable(IObservable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> accumulator)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.seed = seed;\n            this.accumulator = accumulator;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TAccumulate> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Scan(this, observer, cancel));\n        }\n\n        class Scan : OperatorObserverBase<TSource, TAccumulate>\n        {\n            readonly ScanObservable<TSource, TAccumulate> parent;\n            TAccumulate accumulation;\n            bool isFirst;\n\n            public Scan(ScanObservable<TSource, TAccumulate> parent, IObserver<TAccumulate> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.isFirst = true;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                if (isFirst)\n                {\n                    isFirst = false;\n                    accumulation = parent.seed;\n                }\n\n                try\n                {\n                    accumulation = parent.accumulator(accumulation, value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                observer.OnNext(accumulation);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Scan.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 461fecd0ef4d48c4d95aae68c2ca2c1c\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Select.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal interface ISelect<TR>\n    {\n        // IObservable<TR2> CombineSelector<TR2>(Func<TR, TR2> selector);\n        IObservable<TR> CombinePredicate(Func<TR, bool> predicate);\n    }\n\n    internal class SelectObservable<T, TR> : OperatorObservableBase<TR>, ISelect<TR>\n    {\n        readonly IObservable<T> source;\n        readonly Func<T, TR> selector;\n        readonly Func<T, int, TR> selectorWithIndex;\n\n        public SelectObservable(IObservable<T> source, Func<T, TR> selector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.selector = selector;\n        }\n\n        public SelectObservable(IObservable<T> source, Func<T, int, TR> selector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.selectorWithIndex = selector;\n        }\n\n        // sometimes cause \"which no ahead of time (AOT) code was generated.\" on IL2CPP...\n\n        //public IObservable<TR2> CombineSelector<TR2>(Func<TR, TR2> combineSelector)\n        //{\n        //    if (this.selector != null)\n        //    {\n        //        return new Select<T, TR2>(source, x => combineSelector(this.selector(x)));\n        //    }\n        //    else\n        //    {\n        //        return new Select<TR, TR2>(this, combineSelector);\n        //    }\n        //}\n\n        public IObservable<TR> CombinePredicate(Func<TR, bool> predicate)\n        {\n            if (this.selector != null)\n            {\n                return new SelectWhereObservable<T, TR>(this.source, this.selector, predicate);\n            }\n            else\n            {\n                return new WhereObservable<TR>(this, predicate); // can't combine\n            }\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            if (selector != null)\n            {\n                return source.Subscribe(new Select(this, observer, cancel));\n            }\n            else\n            {\n                return source.Subscribe(new Select_(this, observer, cancel));\n            }\n        }\n\n        class Select : OperatorObserverBase<T, TR>\n        {\n            readonly SelectObservable<T, TR> parent;\n\n            public Select(SelectObservable<T, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                var v = default(TR);\n                try\n                {\n                    v = parent.selector(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                observer.OnNext(v);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        // with Index\n        class Select_ : OperatorObserverBase<T, TR>\n        {\n            readonly SelectObservable<T, TR> parent;\n            int index;\n\n            public Select_(SelectObservable<T, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.index = 0;\n            }\n\n            public override void OnNext(T value)\n            {\n                var v = default(TR);\n                try\n                {\n                    v = parent.selectorWithIndex(value, index++);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                observer.OnNext(v);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Select.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 997e36ad7b02b804ea1f03d05e60bed5\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SelectMany.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class SelectManyObservable<TSource, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TSource> source;\n        readonly Func<TSource, IObservable<TResult>> selector;\n        readonly Func<TSource, int, IObservable<TResult>> selectorWithIndex;\n        readonly Func<TSource, IEnumerable<TResult>> selectorEnumerable;\n        readonly Func<TSource, int, IEnumerable<TResult>> selectorEnumerableWithIndex;\n\n        public SelectManyObservable(IObservable<TSource> source, Func<TSource, IObservable<TResult>> selector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.selector = selector;\n        }\n\n        public SelectManyObservable(IObservable<TSource> source, Func<TSource, int, IObservable<TResult>> selector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.selectorWithIndex = selector;\n        }\n\n        public SelectManyObservable(IObservable<TSource> source, Func<TSource, IEnumerable<TResult>> selector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.selectorEnumerable = selector;\n        }\n\n        public SelectManyObservable(IObservable<TSource> source, Func<TSource, int, IEnumerable<TResult>> selector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.selectorEnumerableWithIndex = selector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            if (this.selector != null)\n            {\n                return new SelectManyOuterObserver(this, observer, cancel).Run();\n            }\n            else if (this.selectorWithIndex != null)\n            {\n                return new SelectManyObserverWithIndex(this, observer, cancel).Run();\n            }\n            else if (this.selectorEnumerable != null)\n            {\n                return new SelectManyEnumerableObserver(this, observer, cancel).Run();\n            }\n            else if (this.selectorEnumerableWithIndex != null)\n            {\n                return new SelectManyEnumerableObserverWithIndex(this, observer, cancel).Run();\n            }\n            else\n            {\n                throw new InvalidOperationException();\n            }\n        }\n\n        class SelectManyOuterObserver : OperatorObserverBase<TSource, TResult>\n        {\n            readonly SelectManyObservable<TSource, TResult> parent;\n\n            CompositeDisposable collectionDisposable;\n            SingleAssignmentDisposable sourceDisposable;\n            object gate = new object();\n            bool isStopped = false;\n\n            public SelectManyOuterObserver(SelectManyObservable<TSource, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                collectionDisposable = new CompositeDisposable();\n                sourceDisposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(sourceDisposable);\n\n                sourceDisposable.Disposable = parent.source.Subscribe(this);\n                return collectionDisposable;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                IObservable<TResult> nextObservable;\n                try\n                {\n                    nextObservable = parent.selector(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); };\n                    return;\n                }\n\n                var disposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(disposable);\n                var collectionObserver = new SelectMany(this, disposable);\n                disposable.Disposable = nextObservable.Subscribe(collectionObserver);\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); };\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                isStopped = true;\n                if (collectionDisposable.Count == 1)\n                {\n                    lock (gate)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); };\n                    }\n                }\n                else\n                {\n                    sourceDisposable.Dispose();\n                }\n            }\n\n            class SelectMany : OperatorObserverBase<TResult, TResult>\n            {\n                readonly SelectManyOuterObserver parent;\n                readonly IDisposable cancel;\n\n                public SelectMany(SelectManyOuterObserver parent, IDisposable cancel)\n                    : base(parent.observer, cancel)\n                {\n                    this.parent = parent;\n                    this.cancel = cancel;\n                }\n\n                public override void OnNext(TResult value)\n                {\n                    lock (parent.gate)\n                    {\n                        base.observer.OnNext(value);\n                    }\n                }\n\n                public override void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        try { observer.OnError(error); } finally { Dispose(); };\n                    }\n                }\n\n                public override void OnCompleted()\n                {\n                    parent.collectionDisposable.Remove(cancel);\n                    if (parent.isStopped && parent.collectionDisposable.Count == 1)\n                    {\n                        lock (parent.gate)\n                        {\n                            try { observer.OnCompleted(); } finally { Dispose(); };\n                        }\n                    }\n                }\n            }\n        }\n\n        class SelectManyObserverWithIndex : OperatorObserverBase<TSource, TResult>\n        {\n            readonly SelectManyObservable<TSource, TResult> parent;\n\n            CompositeDisposable collectionDisposable;\n            int index = 0;\n            object gate = new object();\n            bool isStopped = false;\n            SingleAssignmentDisposable sourceDisposable;\n\n            public SelectManyObserverWithIndex(SelectManyObservable<TSource, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                collectionDisposable = new CompositeDisposable();\n                sourceDisposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(sourceDisposable);\n\n                sourceDisposable.Disposable = parent.source.Subscribe(this);\n                return collectionDisposable;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                IObservable<TResult> nextObservable;\n                try\n                {\n                    nextObservable = parent.selectorWithIndex(value, index++);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); };\n                    return;\n                }\n\n                var disposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(disposable);\n                var collectionObserver = new SelectMany(this, disposable);\n                disposable.Disposable = nextObservable.Subscribe(collectionObserver);\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); };\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                isStopped = true;\n                if (collectionDisposable.Count == 1)\n                {\n                    lock (gate)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); };\n                    }\n                }\n                else\n                {\n                    sourceDisposable.Dispose();\n                }\n            }\n\n            class SelectMany : OperatorObserverBase<TResult, TResult>\n            {\n                readonly SelectManyObserverWithIndex parent;\n                readonly IDisposable cancel;\n\n                public SelectMany(SelectManyObserverWithIndex parent, IDisposable cancel)\n                    : base(parent.observer, cancel)\n                {\n                    this.parent = parent;\n                    this.cancel = cancel;\n                }\n\n                public override void OnNext(TResult value)\n                {\n                    lock (parent.gate)\n                    {\n                        base.observer.OnNext(value);\n                    }\n                }\n\n                public override void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        try { observer.OnError(error); } finally { Dispose(); };\n                    }\n                }\n\n                public override void OnCompleted()\n                {\n                    parent.collectionDisposable.Remove(cancel);\n                    if (parent.isStopped && parent.collectionDisposable.Count == 1)\n                    {\n                        lock (parent.gate)\n                        {\n                            try { observer.OnCompleted(); } finally { Dispose(); };\n                        }\n                    }\n                }\n            }\n        }\n\n        class SelectManyEnumerableObserver : OperatorObserverBase<TSource, TResult>\n        {\n            readonly SelectManyObservable<TSource, TResult> parent;\n\n            public SelectManyEnumerableObserver(SelectManyObservable<TSource, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(TSource value)\n            {\n                IEnumerable<TResult> nextEnumerable;\n                try\n                {\n                    nextEnumerable = parent.selectorEnumerable(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); };\n                    return;\n                }\n\n                var e = nextEnumerable.GetEnumerator();\n                try\n                {\n                    var hasNext = true;\n                    while (hasNext)\n                    {\n                        hasNext = false;\n                        var current = default(TResult);\n\n                        try\n                        {\n                            hasNext = e.MoveNext();\n                            if (hasNext)\n                            {\n                                current = e.Current;\n                            }\n                        }\n                        catch (Exception exception)\n                        {\n                            try { observer.OnError(exception); } finally { Dispose(); }\n                            return;\n                        }\n\n                        if (hasNext)\n                        {\n                            observer.OnNext(current);\n                        }\n                    }\n                }\n                finally\n                {\n                    if (e != null)\n                    {\n                        e.Dispose();\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        class SelectManyEnumerableObserverWithIndex : OperatorObserverBase<TSource, TResult>\n        {\n            readonly SelectManyObservable<TSource, TResult> parent;\n            int index = 0;\n\n            public SelectManyEnumerableObserverWithIndex(SelectManyObservable<TSource, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(TSource value)\n            {\n                IEnumerable<TResult> nextEnumerable;\n                try\n                {\n                    nextEnumerable = parent.selectorEnumerableWithIndex(value, index++);\n                }\n                catch (Exception ex)\n                {\n                    OnError(ex);\n                    return;\n                }\n\n                var e = nextEnumerable.GetEnumerator();\n                try\n                {\n                    var hasNext = true;\n                    while (hasNext)\n                    {\n                        hasNext = false;\n                        var current = default(TResult);\n\n                        try\n                        {\n                            hasNext = e.MoveNext();\n                            if (hasNext)\n                            {\n                                current = e.Current;\n                            }\n                        }\n                        catch (Exception exception)\n                        {\n                            try { observer.OnError(exception); } finally { Dispose(); }\n                            return;\n                        }\n\n                        if (hasNext)\n                        {\n                            observer.OnNext(current);\n                        }\n                    }\n                }\n                finally\n                {\n                    if (e != null)\n                    {\n                        e.Dispose();\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n\n    // with resultSelector\n    internal class SelectManyObservable<TSource, TCollection, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TSource> source;\n        readonly Func<TSource, IObservable<TCollection>> collectionSelector;\n        readonly Func<TSource, int, IObservable<TCollection>> collectionSelectorWithIndex;\n        readonly Func<TSource, IEnumerable<TCollection>> collectionSelectorEnumerable;\n        readonly Func<TSource, int, IEnumerable<TCollection>> collectionSelectorEnumerableWithIndex;\n        readonly Func<TSource, TCollection, TResult> resultSelector;\n        readonly Func<TSource, int, TCollection, int, TResult> resultSelectorWithIndex;\n\n        public SelectManyObservable(IObservable<TSource> source, Func<TSource, IObservable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.collectionSelector = collectionSelector;\n            this.resultSelector = resultSelector;\n        }\n\n        public SelectManyObservable(IObservable<TSource> source, Func<TSource, int, IObservable<TCollection>> collectionSelector, Func<TSource, int, TCollection, int, TResult> resultSelector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.collectionSelectorWithIndex = collectionSelector;\n            this.resultSelectorWithIndex = resultSelector;\n        }\n\n        public SelectManyObservable(IObservable<TSource> source, Func<TSource, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.collectionSelectorEnumerable = collectionSelector;\n            this.resultSelector = resultSelector;\n        }\n\n        public SelectManyObservable(IObservable<TSource> source, Func<TSource, int, IEnumerable<TCollection>> collectionSelector, Func<TSource, int, TCollection, int, TResult> resultSelector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.collectionSelectorEnumerableWithIndex = collectionSelector;\n            this.resultSelectorWithIndex = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            if (collectionSelector != null)\n            {\n                return new SelectManyOuterObserver(this, observer, cancel).Run();\n            }\n            else if (collectionSelectorWithIndex != null)\n            {\n                return new SelectManyObserverWithIndex(this, observer, cancel).Run();\n            }\n            else if (collectionSelectorEnumerable != null)\n            {\n                return new SelectManyEnumerableObserver(this, observer, cancel).Run();\n            }\n            else if (collectionSelectorEnumerableWithIndex != null)\n            {\n                return new SelectManyEnumerableObserverWithIndex(this, observer, cancel).Run();\n            }\n            else\n            {\n                throw new InvalidOperationException();\n            }\n        }\n\n        class SelectManyOuterObserver : OperatorObserverBase<TSource, TResult>\n        {\n            readonly SelectManyObservable<TSource, TCollection, TResult> parent;\n\n            CompositeDisposable collectionDisposable;\n            object gate = new object();\n            bool isStopped = false;\n            SingleAssignmentDisposable sourceDisposable;\n\n            public SelectManyOuterObserver(SelectManyObservable<TSource, TCollection, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                collectionDisposable = new CompositeDisposable();\n                sourceDisposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(sourceDisposable);\n\n                sourceDisposable.Disposable = parent.source.Subscribe(this);\n                return collectionDisposable;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                IObservable<TCollection> nextObservable;\n                try\n                {\n                    nextObservable = parent.collectionSelector(value);\n                }\n                catch (Exception ex)\n                {\n                    OnError(ex);\n                    return;\n                }\n\n                var disposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(disposable);\n                var collectionObserver = new SelectMany(this, value, disposable);\n                disposable.Disposable = nextObservable.Subscribe(collectionObserver);\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); };\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                isStopped = true;\n                if (collectionDisposable.Count == 1)\n                {\n                    lock (gate)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); };\n                    }\n                }\n                else\n                {\n                    sourceDisposable.Dispose();\n                }\n            }\n\n            class SelectMany : OperatorObserverBase<TCollection, TResult>\n            {\n                readonly SelectManyOuterObserver parent;\n                readonly TSource sourceValue;\n                readonly IDisposable cancel;\n\n                public SelectMany(SelectManyOuterObserver parent, TSource value, IDisposable cancel)\n                    : base(parent.observer, cancel)\n                {\n                    this.parent = parent;\n                    this.sourceValue = value;\n                    this.cancel = cancel;\n                }\n\n                public override void OnNext(TCollection value)\n                {\n                    TResult resultValue;\n                    try\n                    {\n                        resultValue = parent.parent.resultSelector(sourceValue, value);\n                    }\n                    catch (Exception ex)\n                    {\n                        OnError(ex);\n                        return;\n                    }\n\n                    lock (parent.gate)\n                    {\n                        base.observer.OnNext(resultValue);\n                    }\n                }\n\n                public override void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        try { observer.OnError(error); } finally { Dispose(); };\n                    }\n                }\n\n                public override void OnCompleted()\n                {\n                    parent.collectionDisposable.Remove(cancel);\n                    if (parent.isStopped && parent.collectionDisposable.Count == 1)\n                    {\n                        lock (parent.gate)\n                        {\n                            try { observer.OnCompleted(); } finally { Dispose(); };\n                        }\n                    }\n                }\n            }\n        }\n\n        class SelectManyObserverWithIndex : OperatorObserverBase<TSource, TResult>\n        {\n            readonly SelectManyObservable<TSource, TCollection, TResult> parent;\n\n            CompositeDisposable collectionDisposable;\n            object gate = new object();\n            bool isStopped = false;\n            SingleAssignmentDisposable sourceDisposable;\n            int index = 0;\n\n            public SelectManyObserverWithIndex(SelectManyObservable<TSource, TCollection, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                collectionDisposable = new CompositeDisposable();\n                sourceDisposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(sourceDisposable);\n\n                sourceDisposable.Disposable = parent.source.Subscribe(this);\n                return collectionDisposable;\n            }\n\n            public override void OnNext(TSource value)\n            {\n                var i = index++;\n                IObservable<TCollection> nextObservable;\n                try\n                {\n                    nextObservable = parent.collectionSelectorWithIndex(value, i);\n                }\n                catch (Exception ex)\n                {\n                    OnError(ex);\n                    return;\n                }\n\n                var disposable = new SingleAssignmentDisposable();\n                collectionDisposable.Add(disposable);\n                var collectionObserver = new SelectManyObserver(this, value, i, disposable);\n                disposable.Disposable = nextObservable.Subscribe(collectionObserver);\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); };\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                isStopped = true;\n                if (collectionDisposable.Count == 1)\n                {\n                    lock (gate)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); };\n                    }\n                }\n                else\n                {\n                    sourceDisposable.Dispose();\n                }\n            }\n\n            class SelectManyObserver : OperatorObserverBase<TCollection, TResult>\n            {\n                readonly SelectManyObserverWithIndex parent;\n                readonly TSource sourceValue;\n                readonly int sourceIndex;\n                readonly IDisposable cancel;\n                int index;\n\n                public SelectManyObserver(SelectManyObserverWithIndex parent, TSource value, int index, IDisposable cancel)\n                    : base(parent.observer, cancel)\n                {\n                    this.parent = parent;\n                    this.sourceValue = value;\n                    this.sourceIndex = index;\n                    this.cancel = cancel;\n                }\n\n                public override void OnNext(TCollection value)\n                {\n                    TResult resultValue;\n                    try\n                    {\n                        resultValue = parent.parent.resultSelectorWithIndex(sourceValue, sourceIndex, value, index++);\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); } finally { Dispose(); };\n                        return;\n                    }\n\n                    lock (parent.gate)\n                    {\n                        base.observer.OnNext(resultValue);\n                    }\n                }\n\n                public override void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        try { observer.OnError(error); } finally { Dispose(); };\n                    }\n                }\n\n                public override void OnCompleted()\n                {\n                    parent.collectionDisposable.Remove(cancel);\n                    if (parent.isStopped && parent.collectionDisposable.Count == 1)\n                    {\n                        lock (parent.gate)\n                        {\n                            try { observer.OnCompleted(); } finally { Dispose(); };\n                        }\n                    }\n                }\n            }\n        }\n\n        class SelectManyEnumerableObserver : OperatorObserverBase<TSource, TResult>\n        {\n            readonly SelectManyObservable<TSource, TCollection, TResult> parent;\n\n            public SelectManyEnumerableObserver(SelectManyObservable<TSource, TCollection, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(TSource value)\n            {\n                IEnumerable<TCollection> nextEnumerable;\n                try\n                {\n                    nextEnumerable = parent.collectionSelectorEnumerable(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); };\n                    return;\n                }\n\n                var e = nextEnumerable.GetEnumerator();\n                try\n                {\n                    var hasNext = true;\n                    while (hasNext)\n                    {\n                        hasNext = false;\n                        var current = default(TResult);\n\n                        try\n                        {\n                            hasNext = e.MoveNext();\n                            if (hasNext)\n                            {\n                                current = parent.resultSelector(value, e.Current);\n                            }\n                        }\n                        catch (Exception exception)\n                        {\n                            try { observer.OnError(exception); } finally { Dispose(); }\n                            return;\n                        }\n\n                        if (hasNext)\n                        {\n                            observer.OnNext(current);\n                        }\n                    }\n                }\n                finally\n                {\n                    if (e != null)\n                    {\n                        e.Dispose();\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        class SelectManyEnumerableObserverWithIndex : OperatorObserverBase<TSource, TResult>\n        {\n            readonly SelectManyObservable<TSource, TCollection, TResult> parent;\n            int index = 0;\n\n            public SelectManyEnumerableObserverWithIndex(SelectManyObservable<TSource, TCollection, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(TSource value)\n            {\n                var i = index++;\n                IEnumerable<TCollection> nextEnumerable;\n                try\n                {\n                    nextEnumerable = parent.collectionSelectorEnumerableWithIndex(value, i);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); };\n                    return;\n                }\n\n                var e = nextEnumerable.GetEnumerator();\n                try\n                {\n                    var sequenceI = 0;\n                    var hasNext = true;\n                    while (hasNext)\n                    {\n                        hasNext = false;\n                        var current = default(TResult);\n\n                        try\n                        {\n                            hasNext = e.MoveNext();\n                            if (hasNext)\n                            {\n                                current = parent.resultSelectorWithIndex(value, i, e.Current, sequenceI++);\n                            }\n                        }\n                        catch (Exception exception)\n                        {\n                            try { observer.OnError(exception); } finally { Dispose(); }\n                            return;\n                        }\n\n                        if (hasNext)\n                        {\n                            observer.OnNext(current);\n                        }\n                    }\n                }\n                finally\n                {\n                    if (e != null)\n                    {\n                        e.Dispose();\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SelectMany.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 6496e8557f6066e4380c32935b6f37c3\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SelectWhere.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    // Optimize for .Select().Where()\n\n    internal class SelectWhereObservable<T, TR> : OperatorObservableBase<TR>\n    {\n        readonly IObservable<T> source;\n        readonly Func<T, TR> selector;\n        readonly Func<TR, bool> predicate;\n\n        public SelectWhereObservable(IObservable<T> source, Func<T, TR> selector, Func<TR, bool> predicate)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.selector = selector;\n            this.predicate = predicate;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new SelectWhere(this, observer, cancel));\n        }\n\n        class SelectWhere : OperatorObserverBase<T, TR>\n        {\n            readonly SelectWhereObservable<T, TR> parent;\n\n            public SelectWhere(SelectWhereObservable<T, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                var v = default(TR);\n                try\n                {\n                    v = parent.selector(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                var isPassed = false;\n                try\n                {\n                    isPassed = parent.predicate(v);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                if (isPassed)\n                {\n                    observer.OnNext(v);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SelectWhere.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 6a7561d10967d6b4d9c2a67ffc3b9d85\ntimeCreated: 1468748731\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Single.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class SingleObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly bool useDefault;\n        readonly Func<T, bool> predicate;\n\n        public SingleObservable(IObservable<T> source, bool useDefault)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.useDefault = useDefault;\n        }\n\n        public SingleObservable(IObservable<T> source, Func<T, bool> predicate, bool useDefault)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicate = predicate;\n            this.useDefault = useDefault;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (predicate == null)\n            {\n                return source.Subscribe(new Single(this, observer, cancel));\n            }\n            else\n            {\n                return source.Subscribe(new Single_(this, observer, cancel));\n            }\n        }\n\n        class Single : OperatorObserverBase<T, T>\n        {\n            readonly SingleObservable<T> parent;\n            bool seenValue;\n            T lastValue;\n\n            public Single(SingleObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.seenValue = false;\n            }\n\n            public override void OnNext(T value)\n            {\n                if (seenValue)\n                {\n                    try { observer.OnError(new InvalidOperationException(\"sequence is not single\")); }\n                    finally { Dispose(); }\n                }\n                else\n                {\n                    seenValue = true;\n                    lastValue = value;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (parent.useDefault)\n                {\n                    if (!seenValue)\n                    {\n                        observer.OnNext(default(T));\n                    }\n                    else\n                    {\n                        observer.OnNext(lastValue);\n                    }\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                }\n                else\n                {\n                    if (!seenValue)\n                    {\n                        try { observer.OnError(new InvalidOperationException(\"sequence is empty\")); }\n                        finally { Dispose(); }\n                    }\n                    else\n                    {\n                        observer.OnNext(lastValue);\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n        }\n\n        class Single_ : OperatorObserverBase<T, T>\n        {\n            readonly SingleObservable<T> parent;\n            bool seenValue;\n            T lastValue;\n\n            public Single_(SingleObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.seenValue = false;\n            }\n\n            public override void OnNext(T value)\n            {\n                bool isPassed;\n                try\n                {\n                    isPassed = parent.predicate(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                if (isPassed)\n                {\n                    if (seenValue)\n                    {\n                        try { observer.OnError(new InvalidOperationException(\"sequence is not single\")); }\n                        finally { Dispose(); }\n                        return;\n                    }\n                    else\n                    {\n                        seenValue = true;\n                        lastValue = value;\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (parent.useDefault)\n                {\n                    if (!seenValue)\n                    {\n                        observer.OnNext(default(T));\n                    }\n                    else\n                    {\n                        observer.OnNext(lastValue);\n                    }\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                }\n                else\n                {\n                    if (!seenValue)\n                    {\n                        try { observer.OnError(new InvalidOperationException(\"sequence is empty\")); }\n                        finally { Dispose(); }\n                    }\n                    else\n                    {\n                        observer.OnNext(lastValue);\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Single.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9a50aee929f403f4ea076fc11f71fc53\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Skip.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class SkipObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly int count;\n        readonly TimeSpan duration;\n        internal readonly IScheduler scheduler; // public for optimization check\n\n        public SkipObservable(IObservable<T> source, int count)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.count = count;\n        }\n\n        public SkipObservable(IObservable<T> source, TimeSpan duration, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.duration = duration;\n            this.scheduler = scheduler;\n        }\n\n        // optimize combiner\n\n        public IObservable<T> Combine(int count)\n        {\n            // use sum\n            // xs = 6\n            // xs.Skip(2) = 4\n            // xs.Skip(2).Skip(3) = 1\n\n            return new SkipObservable<T>(source, this.count + count);\n        }\n\n        public IObservable<T> Combine(TimeSpan duration)\n        {\n            // use max\n            // xs = 6s\n            // xs.Skip(2s) = 2s\n            // xs.Skip(2s).Skip(3s) = 3s\n\n            return (duration <= this.duration)\n                ? this\n                : new SkipObservable<T>(source, duration, scheduler);\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (scheduler == null)\n            {\n                return source.Subscribe(new Skip(this, observer, cancel));\n            }\n            else\n            {\n                return new Skip_(this, observer, cancel).Run();\n            }\n        }\n\n        class Skip : OperatorObserverBase<T, T>\n        {\n            int remaining;\n\n            public Skip(SkipObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.remaining = parent.count;\n            }\n\n            public override void OnNext(T value)\n            {\n                if (remaining <= 0)\n                {\n                    base.observer.OnNext(value);\n                }\n                else\n                {\n                    remaining--;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        class Skip_ : OperatorObserverBase<T, T>\n        {\n            readonly SkipObservable<T> parent;\n            volatile bool open;\n\n            public Skip_(SkipObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var d1 = parent.scheduler.Schedule(parent.duration, Tick);\n                var d2 = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(d1, d2);\n            }\n\n            void Tick()\n            {\n                open = true;\n            }\n\n            public override void OnNext(T value)\n            {\n                if (open)\n                {\n                    base.observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); };\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Skip.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1ffcb45c02e14e94bb37c6513b04bb7c\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SkipUntil.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class SkipUntilObservable<T, TOther> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IObservable<TOther> other;\n\n        public SkipUntilObservable(IObservable<T> source, IObservable<TOther> other)\n            : base(source.IsRequiredSubscribeOnCurrentThread() || other.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.other = other;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new SkipUntilOuterObserver(this, observer, cancel).Run();\n        }\n\n        class SkipUntilOuterObserver : OperatorObserverBase<T, T>\n        {\n            readonly SkipUntilObservable<T, TOther> parent;\n\n            public SkipUntilOuterObserver(SkipUntilObservable<T, TOther> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var sourceSubscription = new SingleAssignmentDisposable();\n                var sourceObserver = new SkipUntil(this, sourceSubscription);\n                \n                var otherSubscription = new SingleAssignmentDisposable();\n                var otherObserver = new SkipUntilOther(this, sourceObserver, otherSubscription);\n\n                sourceSubscription.Disposable = parent.source.Subscribe(sourceObserver);\n                otherSubscription.Disposable = parent.other.Subscribe(otherObserver);\n\n                return StableCompositeDisposable.Create(otherSubscription, sourceSubscription);\n            }\n\n            public override void OnNext(T value)\n            {\n            }\n\n            public override void OnError(Exception error)\n            {\n            }\n\n            public override void OnCompleted()\n            {\n            }\n\n            class SkipUntil : IObserver<T>\n            {\n                public volatile IObserver<T> observer;\n                readonly SkipUntilOuterObserver parent;\n                readonly IDisposable subscription;\n\n                public SkipUntil(SkipUntilOuterObserver parent, IDisposable subscription)\n                {\n                    this.parent = parent;\n                    observer = UniRx.InternalUtil.EmptyObserver<T>.Instance;\n                    this.subscription = subscription;\n                }\n\n                public void OnNext(T value)\n                {\n                    observer.OnNext(value);\n                }\n\n                public void OnError(Exception error)\n                {\n                    try { observer.OnError(error); }\n                    finally { parent.Dispose(); }\n                }\n\n                public void OnCompleted()\n                {\n                    try { observer.OnCompleted(); }\n                    finally { subscription.Dispose(); }\n                }\n            }\n\n            class SkipUntilOther : IObserver<TOther>\n            {\n                readonly SkipUntilOuterObserver parent;\n                readonly SkipUntil sourceObserver;\n                readonly IDisposable subscription;\n\n                public SkipUntilOther(SkipUntilOuterObserver parent, SkipUntil sourceObserver, IDisposable subscription)\n                {\n                    this.parent = parent;\n                    this.sourceObserver = sourceObserver;\n                    this.subscription = subscription;\n                }\n\n                public void OnNext(TOther value)\n                {\n                    sourceObserver.observer = parent.observer;\n                    subscription.Dispose();\n                }\n\n                public void OnError(Exception error)\n                {\n                    try { parent.observer.OnError(error); } finally { parent.Dispose(); }\n                }\n\n                public void OnCompleted()\n                {\n                    subscription.Dispose();\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SkipUntil.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 52314487e375f3d44a49bc5ceb90adab\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SkipWhile.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class SkipWhileObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Func<T, bool> predicate;\n        readonly Func<T, int, bool> predicateWithIndex;\n\n        public SkipWhileObservable(IObservable<T> source, Func<T, bool> predicate)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicate = predicate;\n        }\n\n        public SkipWhileObservable(IObservable<T> source, Func<T, int, bool> predicateWithIndex)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicateWithIndex = predicateWithIndex;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (predicate != null)\n            {\n                return new SkipWhile(this, observer, cancel).Run();\n            }\n            else\n            {\n                return new SkipWhile_(this, observer, cancel).Run();\n            }\n        }\n\n        class SkipWhile : OperatorObserverBase<T, T>\n        {\n            readonly SkipWhileObservable<T> parent;\n            bool endSkip = false;\n\n            public SkipWhile(SkipWhileObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                if (!endSkip)\n                {\n                    try\n                    {\n                        endSkip = !parent.predicate(value);\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); } finally { Dispose(); }\n                        return;\n                    }\n\n                    if (!endSkip) return;\n                }\n\n                observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        class SkipWhile_ : OperatorObserverBase<T, T>\n        {\n            readonly SkipWhileObservable<T> parent;\n            bool endSkip = false;\n            int index = 0;\n\n            public SkipWhile_(SkipWhileObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                if (!endSkip)\n                {\n                    try\n                    {\n                        endSkip = !parent.predicateWithIndex(value, index++);\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); } finally { Dispose(); }\n                        return;\n                    }\n\n                    if (!endSkip) return;\n                }\n\n                observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SkipWhile.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4bc7a1e818d05654694d51e883739cca\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Start.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class StartObservable<T> : OperatorObservableBase<T>\n    {\n        readonly Action action;\n        readonly Func<T> function;\n        readonly IScheduler scheduler;\n        readonly TimeSpan? startAfter;\n\n        public StartObservable(Func<T> function, TimeSpan? startAfter, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread)\n        {\n            this.function = function;\n            this.startAfter = startAfter;\n            this.scheduler = scheduler;\n        }\n\n        public StartObservable(Action action, TimeSpan? startAfter, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread)\n        {\n            this.action = action;\n            this.startAfter = startAfter;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (startAfter != null)\n            {\n                return scheduler.Schedule(startAfter.Value, new StartObserver(this, observer, cancel).Run);\n            }\n            else\n            {\n                return scheduler.Schedule(new StartObserver(this, observer, cancel).Run);\n            }\n        }\n\n        class StartObserver : OperatorObserverBase<T, T>\n        {\n            readonly StartObservable<T> parent;\n\n            public StartObserver(StartObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public void Run()\n            {\n                var result = default(T);\n                try\n                {\n                    if (parent.function != null)\n                    {\n                        result = parent.function();\n                    }\n                    else\n                    {\n                        parent.action();\n                    }\n                }\n                catch (Exception exception)\n                {\n                    try { observer.OnError(exception); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                OnNext(result);\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Start.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2b99cac67f8c387439619e01a480c465\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/StartWith.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class StartWithObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly T value;\n        readonly Func<T> valueFactory;\n\n        public StartWithObservable(IObservable<T> source, T value)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.value = value;\n        }\n\n        public StartWithObservable(IObservable<T> source, Func<T> valueFactory)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.valueFactory = valueFactory;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new StartWith(this, observer, cancel).Run();\n        }\n\n        class StartWith : OperatorObserverBase<T, T>\n        {\n            readonly StartWithObservable<T> parent;\n\n            public StartWith(StartWithObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                T t;\n                if (parent.valueFactory == null)\n                {\n                    t = parent.value;\n                }\n                else\n                {\n                    try\n                    {\n                        t = parent.valueFactory();\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); }\n                        finally { Dispose(); }\n                        return Disposable.Empty;\n                    }\n                }\n\n                OnNext(t);\n                return parent.source.Subscribe(base.observer); // good bye StartWithObserver\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/StartWith.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 05df6719453543e458dc3e0d29ac7fa8\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SubscribeOn.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class SubscribeOnObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IScheduler scheduler;\n\n        public SubscribeOnObservable(IObservable<T> source, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            var m = new SingleAssignmentDisposable();\n            var d = new SerialDisposable();\n            d.Disposable = m;\n\n            m.Disposable = scheduler.Schedule(() =>\n            {\n                d.Disposable = new ScheduledDisposable(scheduler, source.Subscribe(observer));\n            });\n\n            return d;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SubscribeOn.cs.meta",
    "content": "fileFormatVersion: 2\nguid: bff34f363b1797c4396815b5b3a4be1c\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Switch.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Operators\n{\n    internal class SwitchObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<IObservable<T>> sources;\n\n        public SwitchObservable(IObservable<IObservable<T>> sources)\n            : base(true)\n        {\n            this.sources = sources;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new SwitchObserver(this, observer, cancel).Run();\n        }\n\n        class SwitchObserver : OperatorObserverBase<IObservable<T>, T>\n        {\n            readonly SwitchObservable<T> parent;\n\n            readonly object gate = new object();\n            readonly SerialDisposable innerSubscription = new SerialDisposable();\n            bool isStopped = false;\n            ulong latest = 0UL;\n            bool hasLatest = false;\n\n            public SwitchObserver(SwitchObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var subscription = parent.sources.Subscribe(this);\n                return StableCompositeDisposable.Create(subscription, innerSubscription);\n            }\n\n            public override void OnNext(IObservable<T> value)\n            {\n                var id = default(ulong);\n                lock (gate)\n                {\n                    id = unchecked(++latest);\n                    hasLatest = true;\n                }\n\n                var d = new SingleAssignmentDisposable();\n                innerSubscription.Disposable = d;\n                d.Disposable = value.Subscribe(new Switch(this, id));\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); }\n                    finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (gate)\n                {\n                    isStopped = true;\n                    if (!hasLatest)\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n\n            class Switch : IObserver<T>\n            {\n                readonly SwitchObserver parent;\n                readonly ulong id;\n\n                public Switch(SwitchObserver observer, ulong id)\n                {\n                    this.parent = observer;\n                    this.id = id;\n                }\n\n                public void OnNext(T value)\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.latest == id)\n                        {\n                            parent.observer.OnNext(value);\n                        }\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.latest == id)\n                        {\n                            parent.observer.OnError(error);\n                        }\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.latest == id)\n                        {\n                            parent.hasLatest = false;\n                            if (parent.isStopped)\n                            {\n                                parent.observer.OnCompleted();\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Switch.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 5e16cdc638ec3bf41bbd380b75991734\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Synchronize.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class SynchronizeObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly object gate;\n\n        public SynchronizeObservable(IObservable<T> source, object gate)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.gate = gate;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Synchronize(this, observer, cancel));\n        }\n\n        class Synchronize : OperatorObserverBase<T, T>\n        {\n            readonly SynchronizeObservable<T> parent;\n\n            public Synchronize(SynchronizeObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (parent.gate)\n                {\n                    base.observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (parent.gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); };\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (parent.gate)\n                {\n                    try { observer.OnCompleted(); } finally { Dispose(); };\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Synchronize.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 31ddcb8477b384b4c9867568f6dc8359\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SynchronizedObserver.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class SynchronizedObserver<T> : IObserver<T>\n    {\n        readonly IObserver<T> observer;\n        readonly object gate;\n\n        public SynchronizedObserver(IObserver<T> observer, object gate)\n        {\n            this.observer = observer;\n            this.gate = gate;\n        }\n\n        public void OnNext(T value)\n        {\n            lock (gate)\n            {\n                observer.OnNext(value);\n            }\n        }\n\n        public void OnError(Exception error)\n        {\n            lock (gate)\n            {\n                observer.OnError(error);\n            }\n        }\n\n        public void OnCompleted()\n        {\n            lock (gate)\n            {\n                observer.OnCompleted();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/SynchronizedObserver.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4fd465af6ee05a64f9115b45b58360b7\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Take.cs",
    "content": "﻿using System;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class TakeObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly int count;\n        readonly TimeSpan duration;\n        internal readonly IScheduler scheduler; // public for optimization check\n\n        public TakeObservable(IObservable<T> source, int count)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.count = count;\n        }\n\n        public TakeObservable(IObservable<T> source, TimeSpan duration, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.duration = duration;\n            this.scheduler = scheduler;\n        }\n\n        // optimize combiner\n\n        public IObservable<T> Combine(int count)\n        {\n            // xs = 6\n            // xs.Take(5) = 5         | xs.Take(3) = 3\n            // xs.Take(5).Take(3) = 3 | xs.Take(3).Take(5) = 3\n\n            // use minimum one\n            return (this.count <= count)\n                ? this\n                : new TakeObservable<T>(source, count);\n        }\n\n        public IObservable<T> Combine(TimeSpan duration)\n        {\n            // xs = 6s\n            // xs.Take(5s) = 5s          | xs.Take(3s) = 3s\n            // xs.Take(5s).Take(3s) = 3s | xs.Take(3s).Take(5s) = 3s\n\n            // use minimum one\n            return (this.duration <= duration)\n                ? this\n                : new TakeObservable<T>(source, duration, scheduler);\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (scheduler == null)\n            {\n                return source.Subscribe(new Take(this, observer, cancel));\n            }\n            else\n            {\n                return new Take_(this, observer, cancel).Run();\n            }\n        }\n\n        class Take : OperatorObserverBase<T, T>\n        {\n            int rest;\n\n            public Take(TakeObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.rest = parent.count;\n            }\n\n            public override void OnNext(T value)\n            {\n                if (rest > 0)\n                {\n                    rest -= 1;\n                    base.observer.OnNext(value);\n                    if (rest == 0)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); };\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        class Take_ : OperatorObserverBase<T, T>\n        {\n            readonly TakeObservable<T> parent;\n            readonly object gate = new object();\n\n            public Take_(TakeObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var d1 = parent.scheduler.Schedule(parent.duration, Tick);\n                var d2 = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(d1, d2);\n            }\n\n            void Tick()\n            {\n                lock (gate)\n                {\n                    try { observer.OnCompleted(); } finally { Dispose(); };\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    base.observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); };\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (gate)\n                {\n                    try { observer.OnCompleted(); } finally { Dispose(); };\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Take.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 5275fc8bb6611984781d8ccd56b9b572\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/TakeLast.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.Operators;\n\nnamespace UniRx.Operators\n{\n    internal class TakeLastObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n\n        // count\n        readonly int count;\n\n        // duration\n        readonly TimeSpan duration;\n        readonly IScheduler scheduler;\n\n        public TakeLastObservable(IObservable<T> source, int count)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.count = count;\n        }\n\n        public TakeLastObservable(IObservable<T> source, TimeSpan duration, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.duration = duration;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (scheduler == null)\n            {\n                return new TakeLast(this, observer, cancel).Run();\n            }\n            else\n            {\n                return new TakeLast_(this, observer, cancel).Run();\n            }\n        }\n\n        // count\n        class TakeLast : OperatorObserverBase<T, T>\n        {\n            readonly TakeLastObservable<T> parent;\n            readonly Queue<T> q;\n\n            public TakeLast(TakeLastObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.q = new Queue<T>();\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                q.Enqueue(value);\n                if (q.Count > parent.count)\n                {\n                    q.Dequeue();\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                foreach (var item in q)\n                {\n                    observer.OnNext(item);\n                }\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        // time\n        class TakeLast_ : OperatorObserverBase<T, T>\n        {\n            DateTimeOffset startTime;\n            readonly TakeLastObservable<T> parent;\n            readonly Queue<TimeInterval<T>> q;\n\n            public TakeLast_(TakeLastObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.q = new Queue<TimeInterval<T>>();\n            }\n\n            public IDisposable Run()\n            {\n                startTime = parent.scheduler.Now;\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                var now = parent.scheduler.Now;\n                var elapsed = now - startTime;\n                q.Enqueue(new TimeInterval<T>(value, elapsed));\n                Trim(elapsed);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); };\n            }\n\n            public override void OnCompleted()\n            {\n                var now = parent.scheduler.Now;\n                var elapsed = now - startTime;\n                Trim(elapsed);\n\n                foreach (var item in q)\n                {\n                    observer.OnNext(item.Value);\n                }\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n\n            void Trim(TimeSpan now)\n            {\n                while (q.Count > 0 && now - q.Peek().Interval >= parent.duration)\n                {\n                    q.Dequeue();\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/TakeLast.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8ea2ac59577a3214f9fb66ccc62f2ffd\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/TakeUntil.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class TakeUntilObservable<T, TOther> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IObservable<TOther> other;\n\n        public TakeUntilObservable(IObservable<T> source, IObservable<TOther> other)\n            : base(source.IsRequiredSubscribeOnCurrentThread() || other.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.other = other;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new TakeUntil(this, observer, cancel).Run();\n        }\n\n        class TakeUntil : OperatorObserverBase<T, T>\n        {\n            readonly TakeUntilObservable<T, TOther> parent;\n            object gate = new object();\n\n            public TakeUntil(TakeUntilObservable<T, TOther> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var otherSubscription = new SingleAssignmentDisposable();\n                var otherObserver = new TakeUntilOther(this, otherSubscription);\n                otherSubscription.Disposable = parent.other.Subscribe(otherObserver);\n\n                var sourceSubscription = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(otherSubscription, sourceSubscription);\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (gate)\n                {\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n\n            class TakeUntilOther : IObserver<TOther>\n            {\n                readonly TakeUntil sourceObserver;\n                readonly IDisposable subscription;\n\n                public TakeUntilOther(TakeUntil sourceObserver, IDisposable subscription)\n                {\n                    this.sourceObserver = sourceObserver;\n                    this.subscription = subscription;\n                }\n\n                public void OnNext(TOther value)\n                {\n                    lock (sourceObserver.gate)\n                    {\n                        try\n                        {\n                            sourceObserver.observer.OnCompleted();\n                        }\n                        finally\n                        {\n                            sourceObserver.Dispose();\n                            subscription.Dispose();\n                        }\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (sourceObserver.gate)\n                    {\n                        try\n                        {\n                            sourceObserver.observer.OnError(error);\n                        }\n                        finally\n                        {\n                            sourceObserver.Dispose();\n                            subscription.Dispose();\n                        }\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (sourceObserver.gate)\n                    {\n                        try\n                        {\n                            sourceObserver.observer.OnCompleted();\n                        }\n                        finally\n                        {\n                            sourceObserver.Dispose();\n                            subscription.Dispose();\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/TakeUntil.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 163e3eab299b735418c94e634fecd811\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/TakeWhile.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class TakeWhileObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Func<T, bool> predicate;\n        readonly Func<T, int, bool> predicateWithIndex;\n\n        public TakeWhileObservable(IObservable<T> source, Func<T, bool> predicate)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicate = predicate;\n        }\n\n        public TakeWhileObservable(IObservable<T> source, Func<T, int, bool> predicateWithIndex)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicateWithIndex = predicateWithIndex;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (predicate != null)\n            {\n                return new TakeWhile(this, observer, cancel).Run();\n            }\n            else\n            {\n                return new TakeWhile_(this, observer, cancel).Run();\n            }\n        }\n\n        class TakeWhile : OperatorObserverBase<T, T>\n        {\n            readonly TakeWhileObservable<T> parent;\n\n            public TakeWhile(TakeWhileObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                bool isPassed;\n                try\n                {\n                    isPassed = parent.predicate(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                if (isPassed)\n                {\n                    observer.OnNext(value);\n                }\n                else\n                {\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        class TakeWhile_ : OperatorObserverBase<T, T>\n        {\n            readonly TakeWhileObservable<T> parent;\n            int index = 0;\n\n            public TakeWhile_(TakeWhileObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                return parent.source.Subscribe(this);\n            }\n\n            public override void OnNext(T value)\n            {\n                bool isPassed;\n                try\n                {\n                    isPassed = parent.predicateWithIndex(value, index++);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                if (isPassed)\n                {\n                    observer.OnNext(value);\n                }\n                else\n                {\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/TakeWhile.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d6f2da76023d9734ebb4ed1883fda2bc\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Throttle.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Operators\n{\n    internal class ThrottleObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly TimeSpan dueTime;\n        readonly IScheduler scheduler;\n\n        public ThrottleObservable(IObservable<T> source, TimeSpan dueTime, IScheduler scheduler) \n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.dueTime = dueTime;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new Throttle(this, observer, cancel).Run();\n        }\n\n        class Throttle : OperatorObserverBase<T, T>\n        {\n            readonly ThrottleObservable<T> parent;\n            readonly object gate = new object();\n            T latestValue = default(T);\n            bool hasValue = false;\n            SerialDisposable cancelable;\n            ulong id = 0;\n\n            public Throttle(ThrottleObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                cancelable = new SerialDisposable();\n                var subscription = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(cancelable, subscription);\n            }\n\n            void OnNext(ulong currentid)\n            {\n                lock (gate)\n                {\n                    if (hasValue && id == currentid)\n                    {\n                        observer.OnNext(latestValue);\n                    }\n                    hasValue = false;\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                ulong currentid;\n                lock (gate)\n                {\n                    hasValue = true;\n                    latestValue = value;\n                    id = unchecked(id + 1);\n                    currentid = id;\n                }\n\n                var d = new SingleAssignmentDisposable();\n                cancelable.Disposable = d;\n                d.Disposable = parent.scheduler.Schedule(parent.dueTime, () => OnNext(currentid));\n            }\n\n            public override void OnError(Exception error)\n            {\n                cancelable.Dispose();\n\n                lock (gate)\n                {\n                    hasValue = false;\n                    id = unchecked(id + 1);\n                    try { observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                cancelable.Dispose();\n\n                lock (gate)\n                {\n                    if (hasValue)\n                    {\n                        observer.OnNext(latestValue);\n                    }\n                    hasValue = false;\n                    id = unchecked(id + 1);\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Throttle.cs.meta",
    "content": "fileFormatVersion: 2\nguid: dc296a61927394b4b908b385087f23d0\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ThrottleFirst.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class ThrottleFirstObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly TimeSpan dueTime;\n        readonly IScheduler scheduler;\n\n        public ThrottleFirstObservable(IObservable<T> source, TimeSpan dueTime, IScheduler scheduler) \n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.dueTime = dueTime;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new ThrottleFirst(this, observer, cancel).Run();\n        }\n\n        class ThrottleFirst : OperatorObserverBase<T, T>\n        {\n            readonly ThrottleFirstObservable<T> parent;\n            readonly object gate = new object();\n            bool open = true;\n            SerialDisposable cancelable;\n\n            public ThrottleFirst(ThrottleFirstObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                cancelable = new SerialDisposable();\n                var subscription = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(cancelable, subscription);\n            }\n\n            void OnNext()\n            {\n                lock (gate)\n                {\n                    open = true;\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    if (!open) return;\n                    observer.OnNext(value);\n                    open = false;\n                }\n\n                var d = new SingleAssignmentDisposable();\n                cancelable.Disposable = d;\n                d.Disposable = parent.scheduler.Schedule(parent.dueTime, OnNext);\n            }\n\n            public override void OnError(Exception error)\n            {\n                cancelable.Dispose();\n\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                cancelable.Dispose();\n\n                lock (gate)\n                {\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ThrottleFirst.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 32b6a6efbab897b41a055d830a4d9755\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Throw.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class ThrowObservable<T> : OperatorObservableBase<T>\n    {\n        readonly Exception error;\n        readonly IScheduler scheduler;\n\n        public ThrowObservable(Exception error, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread)\n        {\n            this.error = error;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            observer = new Throw(observer, cancel);\n\n            if (scheduler == Scheduler.Immediate)\n            {\n                observer.OnError(error);\n                return Disposable.Empty;\n            }\n            else\n            {\n                return scheduler.Schedule(() =>\n                {\n                    observer.OnError(error);\n                    observer.OnCompleted();\n                });\n            }\n        }\n\n        class Throw : OperatorObserverBase<T, T>\n        {\n            public Throw(IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Throw.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1e5623719e9b1f1418aa67a63abed4cc\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/TimeInterval.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class TimeIntervalObservable<T> : OperatorObservableBase<UniRx.TimeInterval<T>>\n    {\n        readonly IObservable<T> source;\n        readonly IScheduler scheduler;\n\n        public TimeIntervalObservable(IObservable<T> source, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<UniRx.TimeInterval<T>> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new TimeInterval(this, observer, cancel));\n        }\n\n        class TimeInterval : OperatorObserverBase<T, UniRx.TimeInterval<T>>\n        {\n            readonly TimeIntervalObservable<T> parent;\n            DateTimeOffset lastTime;\n\n            public TimeInterval(TimeIntervalObservable<T> parent, IObserver<UniRx.TimeInterval<T>> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.lastTime = parent.scheduler.Now;\n            }\n\n            public override void OnNext(T value)\n            {\n                var now = parent.scheduler.Now;\n                var span = now.Subtract(lastTime);\n                lastTime = now;\n\n                base.observer.OnNext(new UniRx.TimeInterval<T>(value, span));\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/TimeInterval.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 065e40ebd4bd4a848b58a7a90dac881d\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Timeout.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class TimeoutObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly TimeSpan? dueTime;\n        readonly DateTimeOffset? dueTimeDT;\n        readonly IScheduler scheduler;\n\n        public TimeoutObservable(IObservable<T> source, TimeSpan dueTime, IScheduler scheduler) \n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.dueTime = dueTime;\n            this.scheduler = scheduler;\n        }\n\n        public TimeoutObservable(IObservable<T> source, DateTimeOffset dueTime, IScheduler scheduler) \n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.dueTimeDT = dueTime;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (dueTime != null)\n            {\n                return new Timeout(this, observer, cancel).Run();\n            }\n            else\n            {\n                return new Timeout_(this, observer, cancel).Run();\n            }\n        }\n\n        class Timeout : OperatorObserverBase<T, T>\n        {\n            readonly TimeoutObservable<T> parent;\n            readonly object gate = new object();\n            ulong objectId = 0ul;\n            bool isTimeout = false;\n            SingleAssignmentDisposable sourceSubscription;\n            SerialDisposable timerSubscription;\n\n            public Timeout(TimeoutObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                sourceSubscription = new SingleAssignmentDisposable();\n                timerSubscription = new SerialDisposable();\n                timerSubscription.Disposable = RunTimer(objectId);\n                sourceSubscription.Disposable = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(timerSubscription, sourceSubscription);\n            }\n\n            IDisposable RunTimer(ulong timerId)\n            {\n                return parent.scheduler.Schedule(parent.dueTime.Value, () =>\n                {\n                    lock (gate)\n                    {\n                        if (objectId == timerId)\n                        {\n                            isTimeout = true;\n                        }\n                    }\n                    if (isTimeout)\n                    {\n                        try { observer.OnError(new TimeoutException()); } finally { Dispose(); }\n                    }\n                });\n            }\n\n            public override void OnNext(T value)\n            {\n                ulong useObjectId;\n                bool timeout;\n                lock (gate)\n                {\n                    timeout = isTimeout;\n                    objectId++;\n                    useObjectId = objectId;\n                }\n                if (timeout) return;\n\n                timerSubscription.Disposable = Disposable.Empty; // cancel old timer\n                observer.OnNext(value);\n                timerSubscription.Disposable = RunTimer(useObjectId);\n            }\n\n            public override void OnError(Exception error)\n            {\n                bool timeout;\n                lock (gate)\n                {\n                    timeout = isTimeout;\n                    objectId++;\n                }\n                if (timeout) return;\n\n                timerSubscription.Dispose();\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                bool timeout;\n                lock (gate)\n                {\n                    timeout = isTimeout;\n                    objectId++;\n                }\n                if (timeout) return;\n\n                timerSubscription.Dispose();\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        class Timeout_ : OperatorObserverBase<T, T>\n        {\n            readonly TimeoutObservable<T> parent;\n            readonly object gate = new object();\n            bool isFinished = false;\n            SingleAssignmentDisposable sourceSubscription;\n            IDisposable timerSubscription;\n\n            public Timeout_(TimeoutObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                sourceSubscription = new SingleAssignmentDisposable();\n\n                timerSubscription = parent.scheduler.Schedule(parent.dueTimeDT.Value, OnNext);\n                sourceSubscription.Disposable = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(timerSubscription, sourceSubscription);\n            }\n\n            // in timer\n            void OnNext()\n            {\n                lock (gate)\n                {\n                    if (isFinished) return;\n                    isFinished = true;\n                }\n\n                sourceSubscription.Dispose();\n                try { observer.OnError(new TimeoutException()); } finally { Dispose(); }\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    if (!isFinished) observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    if (isFinished) return;\n                    isFinished = true;\n                    timerSubscription.Dispose();\n                }\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n\n                lock (gate)\n                {\n                    if (!isFinished)\n                    {\n                        isFinished = true;\n                        timerSubscription.Dispose();\n                    }\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Timeout.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a22cd4a86f62fc64384dddb043530703\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Timer.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class TimerObservable : OperatorObservableBase<long>\n    {\n        readonly DateTimeOffset? dueTimeA;\n        readonly TimeSpan? dueTimeB;\n        readonly TimeSpan? period;\n        readonly IScheduler scheduler;\n\n        public TimerObservable(DateTimeOffset dueTime, TimeSpan? period, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread)\n        {\n            this.dueTimeA = dueTime;\n            this.period = period;\n            this.scheduler = scheduler;\n        }\n\n        public TimerObservable(TimeSpan dueTime, TimeSpan? period, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread)\n        {\n            this.dueTimeB = dueTime;\n            this.period = period;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<long> observer, IDisposable cancel)\n        {\n            var timerObserver = new Timer(observer, cancel);\n\n            var dueTime = (dueTimeA != null)\n                ? dueTimeA.Value - scheduler.Now\n                : dueTimeB.Value;\n\n            // one-shot\n            if (period == null)\n            {\n                return scheduler.Schedule(Scheduler.Normalize(dueTime), () =>\n                {\n                    timerObserver.OnNext();\n                    timerObserver.OnCompleted();\n                });\n            }\n            else\n            {\n                var periodicScheduler = scheduler as ISchedulerPeriodic;\n                if (periodicScheduler != null)\n                {\n                    if (dueTime == period.Value)\n                    {\n                        // same(Observable.Interval), run periodic\n                        return periodicScheduler.SchedulePeriodic(Scheduler.Normalize(dueTime), timerObserver.OnNext);\n                    }\n                    else\n                    {\n                        // Schedule Once + Scheudle Periodic\n                        var disposable = new SerialDisposable();\n\n                        disposable.Disposable = scheduler.Schedule(Scheduler.Normalize(dueTime), () =>\n                        {\n                            timerObserver.OnNext(); // run first\n\n                            var timeP = Scheduler.Normalize(period.Value);\n                            disposable.Disposable = periodicScheduler.SchedulePeriodic(timeP, timerObserver.OnNext); // run periodic\n                        });\n\n                        return disposable;\n                    }\n                }\n                else\n                {\n                    var timeP = Scheduler.Normalize(period.Value);\n\n                    return scheduler.Schedule(Scheduler.Normalize(dueTime), self =>\n                    {\n                        timerObserver.OnNext();\n                        self(timeP);\n                    });\n                }\n            }\n        }\n\n        class Timer : OperatorObserverBase<long, long>\n        {\n            long index = 0;\n\n            public Timer(IObserver<long> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public void OnNext()\n            {\n                try\n                {\n                    base.observer.OnNext(index++);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnNext(long value)\n            {\n                // no use.\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Timer.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 6be220be1da39e14ea87b366c149953e\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Timestamp.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class TimestampObservable<T> : OperatorObservableBase<Timestamped<T>>\n    {\n        readonly IObservable<T> source;\n        readonly IScheduler scheduler;\n\n        public TimestampObservable(IObservable<T> source, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Timestamped<T>> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new Timestamp(this, observer, cancel));\n        }\n\n        class Timestamp : OperatorObserverBase<T, Timestamped<T>>\n        {\n            readonly TimestampObservable<T> parent;\n\n            public Timestamp(TimestampObservable<T> parent, IObserver<Timestamped<T>> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(new Timestamped<T>(value, parent.scheduler.Now));\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Timestamp.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d9ec806fec477b243a812e7f609a4453\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ToArray.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class ToArrayObservable<TSource> : OperatorObservableBase<TSource[]>\n    {\n        readonly IObservable<TSource> source;\n\n        public ToArrayObservable(IObservable<TSource> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TSource[]> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new ToArray(observer, cancel));\n        }\n\n        class ToArray : OperatorObserverBase<TSource, TSource[]>\n        {\n            readonly List<TSource> list = new List<TSource>();\n\n            public ToArray(IObserver<TSource[]> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(TSource value)\n            {\n                try\n                {\n                    list.Add(value); // sometimes cause error on multithread\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                TSource[] result;\n                try\n                {\n                    result = list.ToArray();\n                }\n                catch (Exception ex) \n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                base.observer.OnNext(result);\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ToArray.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 38d1f7c869353b542af469b0e3fae89a\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ToList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class ToListObservable<TSource> : OperatorObservableBase<IList<TSource>>\n    {\n        readonly IObservable<TSource> source;\n\n        public ToListObservable(IObservable<TSource> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<IList<TSource>> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new ToList(observer, cancel));\n        }\n\n        class ToList : OperatorObserverBase<TSource, IList<TSource>>\n        {\n            readonly List<TSource> list = new List<TSource>();\n\n            public ToList(IObserver<IList<TSource>> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(TSource value)\n            {\n                try\n                {\n                    list.Add(value); // sometimes cause error on multithread\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                base.observer.OnNext(list);\n                try { observer.OnCompleted(); } finally { Dispose(); };\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ToList.cs.meta",
    "content": "fileFormatVersion: 2\nguid: cee1b9300a644c9458346c1f80f64197\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ToObservable.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class ToObservableObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IEnumerable<T> source;\n        readonly IScheduler scheduler;\n\n        public ToObservableObservable(IEnumerable<T> source, IScheduler scheduler)\n            : base(scheduler == Scheduler.CurrentThread)\n        {\n            this.source = source;\n            this.scheduler = scheduler;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new ToObservable(this, observer, cancel).Run();\n        }\n\n        class ToObservable : OperatorObserverBase<T, T>\n        {\n            readonly ToObservableObservable<T> parent;\n\n            public ToObservable(ToObservableObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var e = default(IEnumerator<T>);\n                try\n                {\n                    e = parent.source.GetEnumerator();\n                }\n                catch (Exception exception)\n                {\n                    OnError(exception);\n                    return Disposable.Empty;\n                }\n\n                if (parent.scheduler == Scheduler.Immediate)\n                {\n                    while (true)\n                    {\n                        bool hasNext;\n                        var current = default(T);\n                        try\n                        {\n                            hasNext = e.MoveNext();\n                            if (hasNext) current = e.Current;\n                        }\n                        catch (Exception ex)\n                        {\n                            e.Dispose();\n                            try { observer.OnError(ex); }\n                            finally { Dispose(); }\n                            break;\n                        }\n\n                        if (hasNext)\n                        {\n                            observer.OnNext(current);\n                        }\n                        else\n                        {\n                            e.Dispose();\n                            try { observer.OnCompleted(); }\n                            finally { Dispose(); }\n                            break;\n                        }\n                    }\n\n                    return Disposable.Empty;\n                }\n\n                var flag = new SingleAssignmentDisposable();\n                flag.Disposable = parent.scheduler.Schedule(self =>\n                {\n                    if (flag.IsDisposed)\n                    {\n                        e.Dispose();\n                        return;\n                    }\n\n                    bool hasNext;\n                    var current = default(T);\n                    try\n                    {\n                        hasNext = e.MoveNext();\n                        if (hasNext) current = e.Current;\n                    }\n                    catch (Exception ex)\n                    {\n                        e.Dispose();\n                        try { observer.OnError(ex); }\n                        finally { Dispose(); }\n                        return;\n                    }\n\n                    if (hasNext)\n                    {\n                        observer.OnNext(current);\n                        self();\n                    }\n                    else\n                    {\n                        e.Dispose();\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                });\n\n                return flag;\n            }\n\n            public override void OnNext(T value)\n            {\n                // do nothing\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ToObservable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7cd3ae084c8ca754f9aceca2e18c3af9\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Wait.cs",
    "content": "﻿using System;\nusing UniRx.InternalUtil;\n\nnamespace UniRx.Operators\n{\n    internal class Wait<T> : IObserver<T>\n    {\n        static readonly TimeSpan InfiniteTimeSpan = new TimeSpan(0, 0, 0, 0, -1); // from .NET 4.5\n\n        readonly IObservable<T> source;\n        readonly TimeSpan timeout;\n\n        System.Threading.ManualResetEvent semaphore;\n\n        bool seenValue = false;\n        T value = default(T);\n        Exception ex = default(Exception);\n\n        public Wait(IObservable<T> source, TimeSpan timeout)\n        {\n            this.source = source;\n            this.timeout = timeout;\n        }\n\n        public T Run()\n        {\n            semaphore = new System.Threading.ManualResetEvent(false);\n            using (source.Subscribe(this))\n            {\n                var waitComplete = (timeout == InfiniteTimeSpan)\n                    ? semaphore.WaitOne()\n                    : semaphore.WaitOne(timeout);\n\n                if (!waitComplete)\n                {\n                    throw new TimeoutException(\"OnCompleted not fired.\");\n                }\n            }\n\n            if (ex != null) ex.Throw();\n            if (!seenValue) throw new InvalidOperationException(\"No Elements.\");\n\n            return value;\n        }\n\n        public void OnNext(T value)\n        {\n            seenValue = true;\n            this.value = value;\n        }\n\n        public void OnError(Exception error)\n        {\n            this.ex = error;\n            semaphore.Set();\n        }\n\n        public void OnCompleted()\n        {\n            semaphore.Set();\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Wait.cs.meta",
    "content": "fileFormatVersion: 2\nguid: ea55c5647aa075b4f894dd37abf5e469\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/WhenAll.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class WhenAllObservable<T> : OperatorObservableBase<T[]>\n    {\n        readonly IObservable<T>[] sources;\n        readonly IEnumerable<IObservable<T>> sourcesEnumerable;\n\n        public WhenAllObservable(IObservable<T>[] sources)\n            : base(false)\n        {\n            this.sources = sources;\n        }\n\n        public WhenAllObservable(IEnumerable<IObservable<T>> sources)\n            : base(false)\n        {\n            this.sourcesEnumerable = sources;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T[]> observer, IDisposable cancel)\n        {\n            if (sources != null)\n            {\n                return new WhenAll(this.sources, observer, cancel).Run();\n            }\n            else\n            {\n                var xs = sourcesEnumerable as IList<IObservable<T>>;\n                if (xs == null)\n                {\n                    xs = new List<IObservable<T>>(sourcesEnumerable); // materialize observables\n                }\n                return new WhenAll_(xs, observer, cancel).Run();\n            }\n        }\n\n        class WhenAll : OperatorObserverBase<T[], T[]>\n        {\n            readonly IObservable<T>[] sources;\n            readonly object gate = new object();\n            int completedCount;\n            int length;\n            T[] values;\n\n            public WhenAll(IObservable<T>[] sources, IObserver<T[]> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.sources = sources;\n            }\n\n            public IDisposable Run()\n            {\n                length = sources.Length;\n\n                // fail safe...\n                if (length == 0)\n                {\n                    OnNext(new T[0]);\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                    return Disposable.Empty;\n                }\n\n                completedCount = 0;\n                values = new T[length];\n\n                var subscriptions = new IDisposable[length];\n                for (int index = 0; index < length; index++)\n                {\n                    var source = sources[index];\n                    var observer = new WhenAllCollectionObserver(this, index);\n                    subscriptions[index] = source.Subscribe(observer);\n                }\n\n                return StableCompositeDisposable.CreateUnsafe(subscriptions);\n            }\n\n            public override void OnNext(T[] value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n\n            class WhenAllCollectionObserver : IObserver<T>\n            {\n                readonly WhenAll parent;\n                readonly int index;\n                bool isCompleted = false;\n\n                public WhenAllCollectionObserver(WhenAll parent, int index)\n                {\n                    this.parent = parent;\n                    this.index = index;\n                }\n\n                public void OnNext(T value)\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            parent.values[index] = value;\n                        }\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            parent.OnError(error);\n                        }\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            isCompleted = true;\n                            parent.completedCount++;\n                            if (parent.completedCount == parent.length)\n                            {\n                                parent.OnNext(parent.values);\n                                parent.OnCompleted();\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAll_ : OperatorObserverBase<T[], T[]>\n        {\n            readonly IList<IObservable<T>> sources;\n            readonly object gate = new object();\n            int completedCount;\n            int length;\n            T[] values;\n\n            public WhenAll_(IList<IObservable<T>> sources, IObserver<T[]> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.sources = sources;\n            }\n\n            public IDisposable Run()\n            {\n                length = sources.Count;\n\n                // fail safe...\n                if (length == 0)\n                {\n                    OnNext(new T[0]);\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                    return Disposable.Empty;\n                }\n\n                completedCount = 0;\n                values = new T[length];\n\n                var subscriptions = new IDisposable[length];\n                for (int index = 0; index < length; index++)\n                {\n                    var source = sources[index];\n                    var observer = new WhenAllCollectionObserver(this, index);\n                    subscriptions[index] = source.Subscribe(observer);\n                }\n\n                return StableCompositeDisposable.CreateUnsafe(subscriptions);\n            }\n\n            public override void OnNext(T[] value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n\n            class WhenAllCollectionObserver : IObserver<T>\n            {\n                readonly WhenAll_ parent;\n                readonly int index;\n                bool isCompleted = false;\n\n                public WhenAllCollectionObserver(WhenAll_ parent, int index)\n                {\n                    this.parent = parent;\n                    this.index = index;\n                }\n\n                public void OnNext(T value)\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            parent.values[index] = value;\n                        }\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            parent.OnError(error);\n                        }\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            isCompleted = true;\n                            parent.completedCount++;\n                            if (parent.completedCount == parent.length)\n                            {\n                                parent.OnNext(parent.values);\n                                parent.OnCompleted();\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    internal class WhenAllObservable : OperatorObservableBase<Unit>\n    {\n        readonly IObservable<Unit>[] sources;\n        readonly IEnumerable<IObservable<Unit>> sourcesEnumerable;\n\n        public WhenAllObservable(IObservable<Unit>[] sources)\n            : base(false)\n        {\n            this.sources = sources;\n        }\n\n        public WhenAllObservable(IEnumerable<IObservable<Unit>> sources)\n            : base(false)\n        {\n            this.sourcesEnumerable = sources;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Unit> observer, IDisposable cancel)\n        {\n            if (sources != null)\n            {\n                return new WhenAll(this.sources, observer, cancel).Run();\n            }\n            else\n            {\n                var xs = sourcesEnumerable as IList<IObservable<Unit>>;\n                if (xs == null)\n                {\n                    xs = new List<IObservable<Unit>>(sourcesEnumerable); // materialize observables\n                }\n                return new WhenAll_(xs, observer, cancel).Run();\n            }\n        }\n\n        class WhenAll : OperatorObserverBase<Unit, Unit>\n        {\n            readonly IObservable<Unit>[] sources;\n            readonly object gate = new object();\n            int completedCount;\n            int length;\n\n            public WhenAll(IObservable<Unit>[] sources, IObserver<Unit> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.sources = sources;\n            }\n\n            public IDisposable Run()\n            {\n                length = sources.Length;\n\n                // fail safe...\n                if (length == 0)\n                {\n                    OnNext(Unit.Default);\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                    return Disposable.Empty;\n                }\n\n                completedCount = 0;\n\n                var subscriptions = new IDisposable[length];\n                for (int index = 0; index < sources.Length; index++)\n                {\n                    var source = sources[index];\n                    var observer = new WhenAllCollectionObserver(this);\n                    subscriptions[index] = source.Subscribe(observer);\n                }\n\n                return StableCompositeDisposable.CreateUnsafe(subscriptions);\n            }\n\n            public override void OnNext(Unit value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n\n            class WhenAllCollectionObserver : IObserver<Unit>\n            {\n                readonly WhenAll parent;\n                bool isCompleted = false;\n\n                public WhenAllCollectionObserver(WhenAll parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnNext(Unit value)\n                {\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            parent.OnError(error);\n                        }\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            isCompleted = true;\n                            parent.completedCount++;\n                            if (parent.completedCount == parent.length)\n                            {\n                                parent.OnNext(Unit.Default);\n                                parent.OnCompleted();\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAll_ : OperatorObserverBase<Unit, Unit>\n        {\n            readonly IList<IObservable<Unit>> sources;\n            readonly object gate = new object();\n            int completedCount;\n            int length;\n\n            public WhenAll_(IList<IObservable<Unit>> sources, IObserver<Unit> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.sources = sources;\n            }\n\n            public IDisposable Run()\n            {\n                length = sources.Count;\n\n                // fail safe...\n                if (length == 0)\n                {\n                    OnNext(Unit.Default);\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                    return Disposable.Empty;\n                }\n\n                completedCount = 0;\n\n                var subscriptions = new IDisposable[length];\n                for (int index = 0; index < length; index++)\n                {\n                    var source = sources[index];\n                    var observer = new WhenAllCollectionObserver(this);\n                    subscriptions[index] = source.Subscribe(observer);\n                }\n\n                return StableCompositeDisposable.CreateUnsafe(subscriptions);\n            }\n\n            public override void OnNext(Unit value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n\n            class WhenAllCollectionObserver : IObserver<Unit>\n            {\n                readonly WhenAll_ parent;\n                bool isCompleted = false;\n\n                public WhenAllCollectionObserver(WhenAll_ parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnNext(Unit value)\n                {\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            parent.OnError(error);\n                        }\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        if (!isCompleted)\n                        {\n                            isCompleted = true;\n                            parent.completedCount++;\n                            if (parent.completedCount == parent.length)\n                            {\n                                parent.OnNext(Unit.Default);\n                                parent.OnCompleted();\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/WhenAll.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 0af8ada83db8f8a408ee6e9aa994fbbd\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Where.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class WhereObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly Func<T, bool> predicate;\n        readonly Func<T, int, bool> predicateWithIndex;\n\n        public WhereObservable(IObservable<T> source, Func<T, bool> predicate)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicate = predicate;\n        }\n\n        public WhereObservable(IObservable<T> source, Func<T, int, bool> predicateWithIndex)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicateWithIndex = predicateWithIndex;\n        }\n\n        // Optimize for .Where().Where()\n\n        public IObservable<T> CombinePredicate(Func<T, bool> combinePredicate)\n        {\n            if (this.predicate != null)\n            {\n                return new WhereObservable<T>(source, x => this.predicate(x) && combinePredicate(x));\n            }\n            else\n            {\n                return new WhereObservable<T>(this, combinePredicate);\n            }\n        }\n\n        // Optimize for .Where().Select()\n\n        public IObservable<TR> CombineSelector<TR>(Func<T, TR> selector)\n        {\n            if (this.predicate != null)\n            {\n                return new WhereSelectObservable<T, TR>(source, predicate, selector);\n            }\n            else\n            {\n                return new SelectObservable<T, TR>(this, selector); // can't combine\n            }\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            if (predicate != null)\n            {\n                return source.Subscribe(new Where(this, observer, cancel));\n            }\n            else\n            {\n                return source.Subscribe(new Where_(this, observer, cancel));\n            }\n        }\n\n        class Where : OperatorObserverBase<T, T>\n        {\n            readonly WhereObservable<T> parent;\n\n            public Where(WhereObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                var isPassed = false;\n                try\n                {\n                    isPassed = parent.predicate(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                if (isPassed)\n                {\n                    observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n\n        class Where_ : OperatorObserverBase<T, T>\n        {\n            readonly WhereObservable<T> parent;\n            int index;\n\n            public Where_(WhereObservable<T> parent, IObserver<T> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.index = 0;\n            }\n\n            public override void OnNext(T value)\n            {\n                var isPassed = false;\n                try\n                {\n                    isPassed = parent.predicateWithIndex(value, index++);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                if (isPassed)\n                {\n                    observer.OnNext(value);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Where.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a035699dbe9572548afa47c460bad078\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/WhereSelect.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    // Optimize for .Where().Select()\n\n    internal class WhereSelectObservable<T, TR> : OperatorObservableBase<TR>\n    {\n        readonly IObservable<T> source;\n        readonly Func<T, bool> predicate;\n        readonly Func<T, TR> selector;\n\n        public WhereSelectObservable(IObservable<T> source, Func<T, bool> predicate, Func<T, TR> selector)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.predicate = predicate;\n            this.selector = selector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new WhereSelect(this, observer, cancel));\n        }\n\n        class WhereSelect : OperatorObserverBase<T, TR>\n        {\n            readonly WhereSelectObservable<T, TR> parent;\n\n            public WhereSelect(WhereSelectObservable<T, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public override void OnNext(T value)\n            {\n                var isPassed = false;\n                try\n                {\n                    isPassed = parent.predicate(value);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); } finally { Dispose(); }\n                    return;\n                }\n\n                if (isPassed)\n                {\n                    var v = default(TR);\n                    try\n                    {\n                        v = parent.selector(value);\n                    }\n                    catch (Exception ex)\n                    {\n                        try { observer.OnError(ex); } finally { Dispose(); }\n                        return;\n                    }\n\n                    observer.OnNext(v);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/WhereSelect.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f7453a184d42aa34c854977496f381b9\ntimeCreated: 1468743755\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/WithLatestFrom.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Operators\n{\n    internal class WithLatestFromObservable<TLeft, TRight, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TLeft> left;\n        readonly IObservable<TRight> right;\n        readonly Func<TLeft, TRight, TResult> selector;\n\n        public WithLatestFromObservable(IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)\n            : base(left.IsRequiredSubscribeOnCurrentThread() || right.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.left = left;\n            this.right = right;\n            this.selector = selector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            return new WithLatestFrom(this, observer, cancel).Run();\n        }\n\n        class WithLatestFrom : OperatorObserverBase<TResult, TResult>\n        {\n            readonly WithLatestFromObservable<TLeft, TRight, TResult> parent;\n            readonly object gate = new object();\n\n            volatile bool hasLatest;\n            TRight latestValue = default(TRight);\n\n            public WithLatestFrom(WithLatestFromObservable<TLeft, TRight, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var l = parent.left.Subscribe(new LeftObserver(this));\n                var rSubscription = new SingleAssignmentDisposable();\n                rSubscription.Disposable  = parent.right.Subscribe(new RightObserver(this, rSubscription));\n\n                return StableCompositeDisposable.Create(l, rSubscription);\n            }\n\n            public override void OnNext(TResult value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n\n            class LeftObserver : IObserver<TLeft>\n            {\n                readonly WithLatestFrom parent;\n\n                public LeftObserver(WithLatestFrom parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnNext(TLeft value)\n                {\n                    if (parent.hasLatest)\n                    {\n                        var result = default(TResult);\n                        try\n                        {\n                            result = parent.parent.selector(value, parent.latestValue);\n                        }\n                        catch (Exception ex)\n                        {\n                            lock (parent.gate)\n                            {\n                                parent.OnError(ex);\n                            }\n                            return;\n                        }\n\n                        lock (parent.gate)\n                        {\n                            parent.OnNext(result);\n                        }\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(error);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnCompleted();\n                    }\n                }\n            }\n\n            class RightObserver : IObserver<TRight>\n            {\n                readonly WithLatestFrom parent;\n                readonly IDisposable selfSubscription;\n\n                public RightObserver(WithLatestFrom parent, IDisposable subscription)\n                {\n                    this.parent = parent;\n                    this.selfSubscription = subscription;\n                }\n\n                public void OnNext(TRight value)\n                {\n                    parent.latestValue = value;\n                    parent.hasLatest = true;\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(error);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    selfSubscription.Dispose();\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/WithLatestFrom.cs.meta",
    "content": "fileFormatVersion: 2\nguid: eb0bc7125d343ed45bb7e36ff1a53362\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Zip.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    public delegate TR ZipFunc<T1, T2, T3, TR>(T1 arg1, T2 arg2, T3 arg3);\n    public delegate TR ZipFunc<T1, T2, T3, T4, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);\n    public delegate TR ZipFunc<T1, T2, T3, T4, T5, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);\n    public delegate TR ZipFunc<T1, T2, T3, T4, T5, T6, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);\n    public delegate TR ZipFunc<T1, T2, T3, T4, T5, T6, T7, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);\n\n    // binary\n    internal class ZipObservable<TLeft, TRight, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TLeft> left;\n        readonly IObservable<TRight> right;\n        readonly Func<TLeft, TRight, TResult> selector;\n\n        public ZipObservable(IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)\n            : base(left.IsRequiredSubscribeOnCurrentThread() || right.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.left = left;\n            this.right = right;\n            this.selector = selector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            return new Zip(this, observer, cancel).Run();\n        }\n\n        class Zip : OperatorObserverBase<TResult, TResult>\n        {\n            readonly ZipObservable<TLeft, TRight, TResult> parent;\n\n            readonly object gate = new object();\n            readonly Queue<TLeft> leftQ = new Queue<TLeft>();\n            bool leftCompleted = false;\n            readonly Queue<TRight> rightQ = new Queue<TRight>();\n            bool rightCompleted = false;\n\n            public Zip(ZipObservable<TLeft, TRight, TResult> parent, IObserver<TResult> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var l = parent.left.Subscribe(new LeftZipObserver(this));\n                var r = parent.right.Subscribe(new RightZipObserver(this));\n\n                return StableCompositeDisposable.Create(l, r, Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        leftQ.Clear();\n                        rightQ.Clear();\n                    }\n                }));\n            }\n\n            // dequeue is in the lock\n            void Dequeue()\n            {\n                TLeft lv;\n                TRight rv;\n                TResult v;\n\n                if (leftQ.Count != 0 && rightQ.Count != 0)\n                {\n                    lv = leftQ.Dequeue();\n                    rv = rightQ.Dequeue();\n                }\n                else if (leftCompleted || rightCompleted)\n                {\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                    return;\n                }\n                else\n                {\n                    return;\n                }\n\n                try\n                {\n                    v = parent.selector(lv, rv);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                OnNext(v);\n            }\n\n            public override void OnNext(TResult value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n\n            class LeftZipObserver : IObserver<TLeft>\n            {\n                readonly Zip parent;\n\n                public LeftZipObserver(Zip parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnNext(TLeft value)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.leftQ.Enqueue(value);\n                        parent.Dequeue();\n                    }\n                }\n\n                public void OnError(Exception ex)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(ex);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.leftCompleted = true;\n                        if (parent.rightCompleted) parent.OnCompleted();\n                    }\n                }\n            }\n\n            class RightZipObserver : IObserver<TRight>\n            {\n                readonly Zip parent;\n\n                public RightZipObserver(Zip parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnNext(TRight value)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.rightQ.Enqueue(value);\n                        parent.Dequeue();\n                    }\n                }\n\n                public void OnError(Exception ex)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(ex);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.rightCompleted = true;\n                        if (parent.leftCompleted) parent.OnCompleted();\n                    }\n                }\n            }\n        }\n    }\n\n    // array\n    internal class ZipObservable<T> : OperatorObservableBase<IList<T>>\n    {\n        readonly IObservable<T>[] sources;\n\n        public ZipObservable(IObservable<T>[] sources)\n            : base(true)\n        {\n            this.sources = sources;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<IList<T>> observer, IDisposable cancel)\n        {\n            return new Zip(this, observer, cancel).Run();\n        }\n\n        class Zip : OperatorObserverBase<IList<T>, IList<T>>\n        {\n            readonly ZipObservable<T> parent;\n            readonly object gate = new object();\n\n            Queue<T>[] queues;\n            bool[] isDone;\n            int length;\n\n            public Zip(ZipObservable<T> parent, IObserver<IList<T>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                length = parent.sources.Length;\n                queues = new Queue<T>[length];\n                isDone = new bool[length];\n\n                for (int i = 0; i < length; i++)\n                {\n                    queues[i] = new Queue<T>();\n                }\n\n                var disposables = new IDisposable[length + 1];\n                for (int i = 0; i < length; i++)\n                {\n                    var source = parent.sources[i];\n                    disposables[i] = source.Subscribe(new ZipObserver(this, i));\n                }\n\n                disposables[length] = Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        for (int i = 0; i < length; i++)\n                        {\n                            var q = queues[i];\n                            q.Clear();\n                        }\n                    }\n                });\n\n                return StableCompositeDisposable.CreateUnsafe(disposables);\n            }\n\n            // dequeue is in the lock\n            void Dequeue(int index)\n            {\n                var allQueueHasValue = true;\n                for (int i = 0; i < length; i++)\n                {\n                    if (queues[i].Count == 0)\n                    {\n                        allQueueHasValue = false;\n                        break;\n                    }\n                }\n\n                if (!allQueueHasValue)\n                {\n                    var allCompletedWithoutSelf = true;\n                    for (int i = 0; i < length; i++)\n                    {\n                        if (i == index) continue;\n                        if (!isDone[i])\n                        {\n                            allCompletedWithoutSelf = false;\n                            break;\n                        }\n                    }\n\n                    if (allCompletedWithoutSelf)\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                        return;\n                    }\n                    else\n                    {\n                        return;\n                    }\n                }\n\n                var array = new T[length];\n                for (int i = 0; i < length; i++)\n                {\n                    array[i] = queues[i].Dequeue();\n                }\n\n                OnNext(array);\n            }\n\n            public override void OnNext(IList<T> value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n\n            class ZipObserver : IObserver<T>\n            {\n                readonly Zip parent;\n                readonly int index;\n\n                public ZipObserver(Zip parent, int index)\n                {\n                    this.parent = parent;\n                    this.index = index;\n                }\n\n                public void OnNext(T value)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.queues[index].Enqueue(value);\n                        parent.Dequeue(index);\n                    }\n                }\n\n                public void OnError(Exception ex)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(ex);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.isDone[index] = true;\n                        var allTrue = true;\n                        for (int i = 0; i < parent.length; i++)\n                        {\n                            if (!parent.isDone[i])\n                            {\n                                allTrue = false;\n                                break;\n                            }\n                        }\n\n                        if (allTrue)\n                        {\n                            parent.OnCompleted();\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Generated from UniRx.Console.ZipGenerator.tt\n    #region NTH\n\n    internal class ZipObservable<T1, T2, T3, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        ZipFunc<T1, T2, T3, TR> resultSelector;\n\n        public ZipObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n              ZipFunc<T1, T2, T3, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new Zip(this, observer, cancel).Run();\n        }\n\n        class Zip : NthZipObserverBase<TR>\n        {\n            readonly ZipObservable<T1, T2, T3, TR> parent;\n            readonly object gate = new object();\n            readonly Queue<T1> q1 = new Queue<T1>();\n            readonly Queue<T2> q2 = new Queue<T2>();\n            readonly Queue<T3> q3 = new Queue<T3>();\n\n            public Zip(ZipObservable<T1, T2, T3, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3 });\n                var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n                var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n                var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n\n                return StableCompositeDisposable.Create(s1, s2, s3, Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        q1.Clear(); q2.Clear(); q3.Clear();\n                    }\n                }));\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue());\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class ZipObservable<T1, T2, T3, T4, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        ZipFunc<T1, T2, T3, T4, TR> resultSelector;\n\n        public ZipObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n              ZipFunc<T1, T2, T3, T4, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new Zip(this, observer, cancel).Run();\n        }\n\n        class Zip : NthZipObserverBase<TR>\n        {\n            readonly ZipObservable<T1, T2, T3, T4, TR> parent;\n            readonly object gate = new object();\n            readonly Queue<T1> q1 = new Queue<T1>();\n            readonly Queue<T2> q2 = new Queue<T2>();\n            readonly Queue<T3> q3 = new Queue<T3>();\n            readonly Queue<T4> q4 = new Queue<T4>();\n\n            public Zip(ZipObservable<T1, T2, T3, T4, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3, q4 });\n                var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n                var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n                var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n                var s4 = parent.source4.Subscribe(new ZipObserver<T4>(gate, this, 3, q4));\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        q1.Clear(); q2.Clear(); q3.Clear(); q4.Clear();\n                    }\n                }));\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue(), q4.Dequeue());\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class ZipObservable<T1, T2, T3, T4, T5, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        IObservable<T5> source5;\n        ZipFunc<T1, T2, T3, T4, T5, TR> resultSelector;\n\n        public ZipObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n            IObservable<T5> source5,\n              ZipFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                source5.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.source5 = source5;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new Zip(this, observer, cancel).Run();\n        }\n\n        class Zip : NthZipObserverBase<TR>\n        {\n            readonly ZipObservable<T1, T2, T3, T4, T5, TR> parent;\n            readonly object gate = new object();\n            readonly Queue<T1> q1 = new Queue<T1>();\n            readonly Queue<T2> q2 = new Queue<T2>();\n            readonly Queue<T3> q3 = new Queue<T3>();\n            readonly Queue<T4> q4 = new Queue<T4>();\n            readonly Queue<T5> q5 = new Queue<T5>();\n\n            public Zip(ZipObservable<T1, T2, T3, T4, T5, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3, q4, q5 });\n                var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n                var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n                var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n                var s4 = parent.source4.Subscribe(new ZipObserver<T4>(gate, this, 3, q4));\n                var s5 = parent.source5.Subscribe(new ZipObserver<T5>(gate, this, 4, q5));\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        q1.Clear(); q2.Clear(); q3.Clear(); q4.Clear(); q5.Clear();\n                    }\n                }));\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue(), q4.Dequeue(), q5.Dequeue());\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class ZipObservable<T1, T2, T3, T4, T5, T6, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        IObservable<T5> source5;\n        IObservable<T6> source6;\n        ZipFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector;\n\n        public ZipObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n            IObservable<T5> source5,\n            IObservable<T6> source6,\n              ZipFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                source5.IsRequiredSubscribeOnCurrentThread() ||\n                source6.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.source5 = source5;\n            this.source6 = source6;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new Zip(this, observer, cancel).Run();\n        }\n\n        class Zip : NthZipObserverBase<TR>\n        {\n            readonly ZipObservable<T1, T2, T3, T4, T5, T6, TR> parent;\n            readonly object gate = new object();\n            readonly Queue<T1> q1 = new Queue<T1>();\n            readonly Queue<T2> q2 = new Queue<T2>();\n            readonly Queue<T3> q3 = new Queue<T3>();\n            readonly Queue<T4> q4 = new Queue<T4>();\n            readonly Queue<T5> q5 = new Queue<T5>();\n            readonly Queue<T6> q6 = new Queue<T6>();\n\n            public Zip(ZipObservable<T1, T2, T3, T4, T5, T6, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3, q4, q5, q6 });\n                var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n                var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n                var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n                var s4 = parent.source4.Subscribe(new ZipObserver<T4>(gate, this, 3, q4));\n                var s5 = parent.source5.Subscribe(new ZipObserver<T5>(gate, this, 4, q5));\n                var s6 = parent.source6.Subscribe(new ZipObserver<T6>(gate, this, 5, q6));\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6, Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        q1.Clear(); q2.Clear(); q3.Clear(); q4.Clear(); q5.Clear(); q6.Clear();\n                    }\n                }));\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue(), q4.Dequeue(), q5.Dequeue(), q6.Dequeue());\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class ZipObservable<T1, T2, T3, T4, T5, T6, T7, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        IObservable<T5> source5;\n        IObservable<T6> source6;\n        IObservable<T7> source7;\n        ZipFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector;\n\n        public ZipObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n            IObservable<T5> source5,\n            IObservable<T6> source6,\n            IObservable<T7> source7,\n              ZipFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                source5.IsRequiredSubscribeOnCurrentThread() ||\n                source6.IsRequiredSubscribeOnCurrentThread() ||\n                source7.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.source5 = source5;\n            this.source6 = source6;\n            this.source7 = source7;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new Zip(this, observer, cancel).Run();\n        }\n\n        class Zip : NthZipObserverBase<TR>\n        {\n            readonly ZipObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent;\n            readonly object gate = new object();\n            readonly Queue<T1> q1 = new Queue<T1>();\n            readonly Queue<T2> q2 = new Queue<T2>();\n            readonly Queue<T3> q3 = new Queue<T3>();\n            readonly Queue<T4> q4 = new Queue<T4>();\n            readonly Queue<T5> q5 = new Queue<T5>();\n            readonly Queue<T6> q6 = new Queue<T6>();\n            readonly Queue<T7> q7 = new Queue<T7>();\n\n            public Zip(ZipObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3, q4, q5, q6, q7 });\n                var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n                var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n                var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n                var s4 = parent.source4.Subscribe(new ZipObserver<T4>(gate, this, 3, q4));\n                var s5 = parent.source5.Subscribe(new ZipObserver<T5>(gate, this, 4, q5));\n                var s6 = parent.source6.Subscribe(new ZipObserver<T6>(gate, this, 5, q6));\n                var s7 = parent.source7.Subscribe(new ZipObserver<T7>(gate, this, 6, q7));\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6, s7, Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        q1.Clear(); q2.Clear(); q3.Clear(); q4.Clear(); q5.Clear(); q6.Clear(); q7.Clear();\n                    }\n                }));\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue(), q4.Dequeue(), q5.Dequeue(), q6.Dequeue(), q7.Dequeue());\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    #endregion\n\n    // Nth infrastructure\n\n    internal interface IZipObservable\n    {\n        void Dequeue(int index);\n        void Fail(Exception error);\n        void Done(int index);\n    }\n\n    internal abstract class NthZipObserverBase<T> : OperatorObserverBase<T, T>, IZipObservable\n    {\n        System.Collections.ICollection[] queues;\n        bool[] isDone;\n        int length;\n\n        public NthZipObserverBase(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n        {\n        }\n\n        protected void SetQueue(System.Collections.ICollection[] queues)\n        {\n            this.queues = queues;\n            this.length = queues.Length;\n            this.isDone = new bool[length];\n        }\n\n        public abstract T GetResult();\n\n        // operators in lock\n        public void Dequeue(int index)\n        {\n            var allQueueHasValue = true;\n            for (int i = 0; i < length; i++)\n            {\n                if (queues[i].Count == 0)\n                {\n                    allQueueHasValue = false;\n                    break;\n                }\n            }\n\n            if (!allQueueHasValue)\n            {\n                var allCompletedWithoutSelf = true;\n                for (int i = 0; i < length; i++)\n                {\n                    if (i == index) continue;\n                    if (!isDone[i])\n                    {\n                        allCompletedWithoutSelf = false;\n                        break;\n                    }\n                }\n\n                if (allCompletedWithoutSelf)\n                {\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                    return;\n                }\n                else\n                {\n                    return;\n                }\n            }\n\n            var result = default(T);\n            try\n            {\n                result = GetResult();\n            }\n            catch (Exception ex)\n            {\n                try { observer.OnError(ex); }\n                finally { Dispose(); }\n                return;\n            }\n            OnNext(result);\n        }\n\n        public void Done(int index)\n        {\n            isDone[index] = true;\n            var allTrue = true;\n            for (int i = 0; i < length; i++)\n            {\n                if (!isDone[i])\n                {\n                    allTrue = false;\n                    break;\n                }\n            }\n\n            if (allTrue)\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n\n        public void Fail(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n    }\n\n\n    // nth\n    internal class ZipObserver<T> : IObserver<T>\n    {\n        readonly object gate;\n        readonly IZipObservable parent;\n        readonly int index;\n        readonly Queue<T> queue;\n\n        public ZipObserver(object gate, IZipObservable parent, int index, Queue<T> queue)\n        {\n            this.gate = gate;\n            this.parent = parent;\n            this.index = index;\n            this.queue = queue;\n        }\n\n        public void OnNext(T value)\n        {\n            lock (gate)\n            {\n                queue.Enqueue(value);\n                parent.Dequeue(index);\n            }\n        }\n\n        public void OnError(Exception error)\n        {\n            lock (gate)\n            {\n                parent.Fail(error);\n            }\n        }\n\n        public void OnCompleted()\n        {\n            lock (gate)\n            {\n                parent.Done(index);\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/Zip.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4e92e25f9bb221d478d4af5bcd8b8a2c\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ZipLatest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Operators\n{\n    public delegate TR ZipLatestFunc<T1, T2, T3, TR>(T1 arg1, T2 arg2, T3 arg3);\n    public delegate TR ZipLatestFunc<T1, T2, T3, T4, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);\n    public delegate TR ZipLatestFunc<T1, T2, T3, T4, T5, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);\n    public delegate TR ZipLatestFunc<T1, T2, T3, T4, T5, T6, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);\n    public delegate TR ZipLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);\n\n    // binary\n    internal class ZipLatestObservable<TLeft, TRight, TResult> : OperatorObservableBase<TResult>\n    {\n        readonly IObservable<TLeft> left;\n        readonly IObservable<TRight> right;\n        readonly Func<TLeft, TRight, TResult> selector;\n\n        public ZipLatestObservable(IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)\n            : base(left.IsRequiredSubscribeOnCurrentThread() || right.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.left = left;\n            this.right = right;\n            this.selector = selector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TResult> observer, IDisposable cancel)\n        {\n            return new ZipLatest(this, observer, cancel).Run();\n        }\n\n        class ZipLatest : OperatorObserverBase<TResult, TResult>\n        {\n            readonly ZipLatestObservable<TLeft, TRight, TResult> parent;\n            readonly object gate = new object();\n\n            TLeft leftValue = default(TLeft);\n            bool leftStarted = false;\n            bool leftCompleted = false;\n\n            TRight rightValue = default(TRight);\n            bool rightStarted = false;\n            bool rightCompleted = false;\n\n            public ZipLatest(ZipLatestObservable<TLeft, TRight, TResult> parent, IObserver<TResult> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                var l = parent.left.Subscribe(new LeftObserver(this));\n                var r = parent.right.Subscribe(new RightObserver(this));\n\n                return StableCompositeDisposable.Create(l, r);\n            }\n\n            // publish in lock\n            public void Publish()\n            {\n                if ((leftCompleted && !leftStarted) || (rightCompleted && !rightStarted))\n                {\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                    return;\n                }\n                else if (!(leftStarted && rightStarted))\n                {\n                    return;\n                }\n\n                TResult v;\n                try\n                {\n                    v = parent.selector(leftValue, rightValue);\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n\n                OnNext(v);\n                leftStarted = false;\n                rightStarted = false;\n\n                if (leftCompleted || rightCompleted)\n                {\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                    return;\n                }\n            }\n\n            public override void OnNext(TResult value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n\n            class LeftObserver : IObserver<TLeft>\n            {\n                readonly ZipLatest parent;\n\n                public LeftObserver(ZipLatest parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnNext(TLeft value)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.leftStarted = true;\n                        parent.leftValue = value;\n                        parent.Publish();\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(error);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.leftCompleted = true;\n                        if (parent.rightCompleted) parent.OnCompleted();\n                    }\n                }\n            }\n\n            class RightObserver : IObserver<TRight>\n            {\n                readonly ZipLatest parent;\n\n                public RightObserver(ZipLatest parent)\n                {\n                    this.parent = parent;\n                }\n\n\n                public void OnNext(TRight value)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.rightStarted = true;\n                        parent.rightValue = value;\n                        parent.Publish();\n                    }\n                }\n\n                public void OnError(Exception error)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(error);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.rightCompleted = true;\n                        if (parent.leftCompleted) parent.OnCompleted();\n                    }\n                }\n            }\n        }\n    }\n\n    // array\n    internal class ZipLatestObservable<T> : OperatorObservableBase<IList<T>>\n    {\n        readonly IObservable<T>[] sources;\n\n        public ZipLatestObservable(IObservable<T>[] sources)\n            : base(true)\n        {\n            this.sources = sources;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<IList<T>> observer, IDisposable cancel)\n        {\n            return new ZipLatest(this, observer, cancel).Run();\n        }\n\n        class ZipLatest : OperatorObserverBase<IList<T>, IList<T>>\n        {\n            readonly ZipLatestObservable<T> parent;\n            readonly object gate = new object();\n\n            int length;\n            T[] values;\n            bool[] isStarted;\n            bool[] isCompleted;\n\n            public ZipLatest(ZipLatestObservable<T> parent, IObserver<IList<T>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                length = parent.sources.Length;\n                values = new T[length];\n                isStarted = new bool[length];\n                isCompleted = new bool[length];\n\n                var disposables = new IDisposable[length];\n                for (int i = 0; i < length; i++)\n                {\n                    var source = parent.sources[i];\n                    disposables[i] = source.Subscribe(new ZipLatestObserver(this, i));\n                }\n\n                return StableCompositeDisposable.CreateUnsafe(disposables);\n            }\n\n            // publish is in the lock\n            void Publish(int index)\n            {\n                isStarted[index] = true;\n\n                var hasOnCompleted = false;\n                var allValueStarted = true;\n                for (int i = 0; i < length; i++)\n                {\n                    if (!isStarted[i])\n                    {\n                        allValueStarted = false;\n                        break;\n                    }\n                    if (i == index) continue;\n                    if (isCompleted[i]) hasOnCompleted = true;\n                }\n\n                if (allValueStarted)\n                {\n                    OnNext(new List<T>(values));\n                    if (hasOnCompleted)\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                        return;\n                    }\n                    else\n                    {\n                        Array.Clear(isStarted, 0, length); // reset\n                        return;\n                    }\n                }\n                else\n                {\n                    for (int i = 0; i < length; i++)\n                    {\n                        if (i == index) continue;\n                        if (isCompleted[i] && !isStarted[i])\n                        {\n                            try { observer.OnCompleted(); }\n                            finally { Dispose(); }\n                            return;\n                        }\n                    }\n                }\n            }\n\n            public override void OnNext(IList<T> value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n\n            class ZipLatestObserver : IObserver<T>\n            {\n                readonly ZipLatest parent;\n                readonly int index;\n\n                public ZipLatestObserver(ZipLatest parent, int index)\n                {\n                    this.parent = parent;\n                    this.index = index;\n                }\n\n                public void OnNext(T value)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.values[index] = value;\n                        parent.Publish(index);\n                    }\n                }\n\n                public void OnError(Exception ex)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.OnError(ex);\n                    }\n                }\n\n                public void OnCompleted()\n                {\n                    lock (parent.gate)\n                    {\n                        parent.isCompleted[index] = true;\n\n                        var allTrue = true;\n                        for (int i = 0; i < parent.length; i++)\n                        {\n                            if (!parent.isCompleted[i])\n                            {\n                                allTrue = false;\n                                break;\n                            }\n                        }\n\n                        if (allTrue)\n                        {\n                            parent.OnCompleted();\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // generated from UniRx.Console.ZipLatestGenerator.tt\n    #region NTH\n\n    internal class ZipLatestObservable<T1, T2, T3, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        ZipLatestFunc<T1, T2, T3, TR> resultSelector;\n\n        public ZipLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n              ZipLatestFunc<T1, T2, T3, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new ZipLatest(3, this, observer, cancel).Run();\n        }\n\n        class ZipLatest : NthZipLatestObserverBase<TR>\n        {\n            readonly ZipLatestObservable<T1, T2, T3, TR> parent;\n            readonly object gate = new object();\n            ZipLatestObserver<T1> c1;\n            ZipLatestObserver<T2> c2;\n            ZipLatestObserver<T3> c3;\n\n            public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new ZipLatestObserver<T1>(gate, this, 0);\n                c2 = new ZipLatestObserver<T2>(gate, this, 1);\n                c3 = new ZipLatestObserver<T3>(gate, this, 2);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n\n                return StableCompositeDisposable.Create(s1, s2, s3);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class ZipLatestObservable<T1, T2, T3, T4, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        ZipLatestFunc<T1, T2, T3, T4, TR> resultSelector;\n\n        public ZipLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n              ZipLatestFunc<T1, T2, T3, T4, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new ZipLatest(4, this, observer, cancel).Run();\n        }\n\n        class ZipLatest : NthZipLatestObserverBase<TR>\n        {\n            readonly ZipLatestObservable<T1, T2, T3, T4, TR> parent;\n            readonly object gate = new object();\n            ZipLatestObserver<T1> c1;\n            ZipLatestObserver<T2> c2;\n            ZipLatestObserver<T3> c3;\n            ZipLatestObserver<T4> c4;\n\n            public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, T4, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new ZipLatestObserver<T1>(gate, this, 0);\n                c2 = new ZipLatestObserver<T2>(gate, this, 1);\n                c3 = new ZipLatestObserver<T3>(gate, this, 2);\n                c4 = new ZipLatestObserver<T4>(gate, this, 3);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n                var s4 = parent.source4.Subscribe(c4);\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class ZipLatestObservable<T1, T2, T3, T4, T5, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        IObservable<T5> source5;\n        ZipLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector;\n\n        public ZipLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n            IObservable<T5> source5,\n              ZipLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                source5.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.source5 = source5;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new ZipLatest(5, this, observer, cancel).Run();\n        }\n\n        class ZipLatest : NthZipLatestObserverBase<TR>\n        {\n            readonly ZipLatestObservable<T1, T2, T3, T4, T5, TR> parent;\n            readonly object gate = new object();\n            ZipLatestObserver<T1> c1;\n            ZipLatestObserver<T2> c2;\n            ZipLatestObserver<T3> c3;\n            ZipLatestObserver<T4> c4;\n            ZipLatestObserver<T5> c5;\n\n            public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, T4, T5, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new ZipLatestObserver<T1>(gate, this, 0);\n                c2 = new ZipLatestObserver<T2>(gate, this, 1);\n                c3 = new ZipLatestObserver<T3>(gate, this, 2);\n                c4 = new ZipLatestObserver<T4>(gate, this, 3);\n                c5 = new ZipLatestObserver<T5>(gate, this, 4);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n                var s4 = parent.source4.Subscribe(c4);\n                var s5 = parent.source5.Subscribe(c5);\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, s5);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class ZipLatestObservable<T1, T2, T3, T4, T5, T6, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        IObservable<T5> source5;\n        IObservable<T6> source6;\n        ZipLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector;\n\n        public ZipLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n            IObservable<T5> source5,\n            IObservable<T6> source6,\n              ZipLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                source5.IsRequiredSubscribeOnCurrentThread() ||\n                source6.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.source5 = source5;\n            this.source6 = source6;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new ZipLatest(6, this, observer, cancel).Run();\n        }\n\n        class ZipLatest : NthZipLatestObserverBase<TR>\n        {\n            readonly ZipLatestObservable<T1, T2, T3, T4, T5, T6, TR> parent;\n            readonly object gate = new object();\n            ZipLatestObserver<T1> c1;\n            ZipLatestObserver<T2> c2;\n            ZipLatestObserver<T3> c3;\n            ZipLatestObserver<T4> c4;\n            ZipLatestObserver<T5> c5;\n            ZipLatestObserver<T6> c6;\n\n            public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, T4, T5, T6, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new ZipLatestObserver<T1>(gate, this, 0);\n                c2 = new ZipLatestObserver<T2>(gate, this, 1);\n                c3 = new ZipLatestObserver<T3>(gate, this, 2);\n                c4 = new ZipLatestObserver<T4>(gate, this, 3);\n                c5 = new ZipLatestObserver<T5>(gate, this, 4);\n                c6 = new ZipLatestObserver<T6>(gate, this, 5);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n                var s4 = parent.source4.Subscribe(c4);\n                var s5 = parent.source5.Subscribe(c5);\n                var s6 = parent.source6.Subscribe(c6);\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n\n    internal class ZipLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> : OperatorObservableBase<TR>\n    {\n        IObservable<T1> source1;\n        IObservable<T2> source2;\n        IObservable<T3> source3;\n        IObservable<T4> source4;\n        IObservable<T5> source5;\n        IObservable<T6> source6;\n        IObservable<T7> source7;\n        ZipLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector;\n\n        public ZipLatestObservable(\n            IObservable<T1> source1,\n            IObservable<T2> source2,\n            IObservable<T3> source3,\n            IObservable<T4> source4,\n            IObservable<T5> source5,\n            IObservable<T6> source6,\n            IObservable<T7> source7,\n              ZipLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n            : base(\n                source1.IsRequiredSubscribeOnCurrentThread() ||\n                source2.IsRequiredSubscribeOnCurrentThread() ||\n                source3.IsRequiredSubscribeOnCurrentThread() ||\n                source4.IsRequiredSubscribeOnCurrentThread() ||\n                source5.IsRequiredSubscribeOnCurrentThread() ||\n                source6.IsRequiredSubscribeOnCurrentThread() ||\n                source7.IsRequiredSubscribeOnCurrentThread() ||\n                false)\n        {\n            this.source1 = source1;\n            this.source2 = source2;\n            this.source3 = source3;\n            this.source4 = source4;\n            this.source5 = source5;\n            this.source6 = source6;\n            this.source7 = source7;\n            this.resultSelector = resultSelector;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n        {\n            return new ZipLatest(7, this, observer, cancel).Run();\n        }\n\n        class ZipLatest : NthZipLatestObserverBase<TR>\n        {\n            readonly ZipLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent;\n            readonly object gate = new object();\n            ZipLatestObserver<T1> c1;\n            ZipLatestObserver<T2> c2;\n            ZipLatestObserver<T3> c3;\n            ZipLatestObserver<T4> c4;\n            ZipLatestObserver<T5> c5;\n            ZipLatestObserver<T6> c6;\n            ZipLatestObserver<T7> c7;\n\n            public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent, IObserver<TR> observer, IDisposable cancel)\n                : base(length, observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                c1 = new ZipLatestObserver<T1>(gate, this, 0);\n                c2 = new ZipLatestObserver<T2>(gate, this, 1);\n                c3 = new ZipLatestObserver<T3>(gate, this, 2);\n                c4 = new ZipLatestObserver<T4>(gate, this, 3);\n                c5 = new ZipLatestObserver<T5>(gate, this, 4);\n                c6 = new ZipLatestObserver<T6>(gate, this, 5);\n                c7 = new ZipLatestObserver<T7>(gate, this, 6);\n\n                var s1 = parent.source1.Subscribe(c1);\n                var s2 = parent.source2.Subscribe(c2);\n                var s3 = parent.source3.Subscribe(c3);\n                var s4 = parent.source4.Subscribe(c4);\n                var s5 = parent.source5.Subscribe(c5);\n                var s6 = parent.source6.Subscribe(c6);\n                var s7 = parent.source7.Subscribe(c7);\n\n                return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6, s7);\n            }\n\n            public override TR GetResult()\n            {\n                return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value);\n            }\n\n            public override void OnNext(TR value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    #endregion\n\n    // Nth infrastructure\n\n    internal interface IZipLatestObservable\n    {\n        void Publish(int index);\n        void Fail(Exception error);\n        void Done(int index);\n    }\n\n    internal abstract class NthZipLatestObserverBase<T> : OperatorObserverBase<T, T>, IZipLatestObservable\n    {\n        readonly int length;\n        readonly bool[] isStarted;\n        readonly bool[] isCompleted;\n\n        public NthZipLatestObserverBase(int length, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n        {\n            this.length = length;\n            this.isStarted = new bool[length];\n            this.isCompleted = new bool[length];\n        }\n\n        public abstract T GetResult();\n\n        // operators in lock\n        public void Publish(int index)\n        {\n            isStarted[index] = true;\n\n            var hasOnCompleted = false;\n            var allValueStarted = true;\n            for (int i = 0; i < length; i++)\n            {\n                if (!isStarted[i])\n                {\n                    allValueStarted = false;\n                    break;\n                }\n                if (i == index) continue;\n                if (isCompleted[i]) hasOnCompleted = true;\n            }\n\n            if (allValueStarted)\n            {\n                var result = default(T);\n                try\n                {\n                    result = GetResult();\n                }\n                catch (Exception ex)\n                {\n                    try { observer.OnError(ex); }\n                    finally { Dispose(); }\n                    return;\n                }\n                OnNext(result);\n\n                if (hasOnCompleted)\n                {\n                    try { observer.OnCompleted(); }\n                    finally { Dispose(); }\n                    return;\n                }\n                else\n                {\n                    Array.Clear(isStarted, 0, length); // reset\n                    return;\n                }\n            }\n            else\n            {\n                for (int i = 0; i < length; i++)\n                {\n                    if (i == index) continue;\n                    if (isCompleted[i] && !isStarted[i])\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                        return;\n                    }\n                }\n            }\n        }\n\n        public void Done(int index)\n        {\n            isCompleted[index] = true;\n\n            var allTrue = true;\n            for (int i = 0; i < length; i++)\n            {\n                if (!isCompleted[i])\n                {\n                    allTrue = false;\n                    break;\n                }\n            }\n\n            if (allTrue)\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n\n        public void Fail(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n    }\n\n    // Nth\n    internal class ZipLatestObserver<T> : IObserver<T>\n    {\n        readonly object gate;\n        readonly IZipLatestObservable parent;\n        readonly int index;\n        T value;\n\n        public T Value { get { return value; } }\n\n        public ZipLatestObserver(object gate, IZipLatestObservable parent, int index)\n        {\n            this.gate = gate;\n            this.parent = parent;\n            this.index = index;\n        }\n\n        public void OnNext(T value)\n        {\n            lock (gate)\n            {\n                this.value = value;\n                parent.Publish(index);\n            }\n        }\n\n        public void OnError(Exception error)\n        {\n            lock (gate)\n            {\n                parent.Fail(error);\n            }\n        }\n\n        public void OnCompleted()\n        {\n            lock (gate)\n            {\n                parent.Done(index);\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators/ZipLatest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f84ea50040d682c43811d1d98ae7fec8\ntimeCreated: 1455373908\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Operators.meta",
    "content": "fileFormatVersion: 2\nguid: b37ab723fc6829344bcb6a5991a4e2a1\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Pair.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx\n{\n    // Pair is used for Observable.Pairwise\n    [Serializable]\n    public struct Pair<T> : IEquatable<Pair<T>>\n    {\n        readonly T previous;\n        readonly T current;\n\n        public T Previous\n        {\n            get { return previous; }\n        }\n\n        public T Current\n        {\n            get { return current; }\n        }\n\n        public Pair(T previous, T current)\n        {\n            this.previous = previous;\n            this.current = current;\n        }\n\n        public override int GetHashCode()\n        {\n            var comparer = EqualityComparer<T>.Default;\n\n            int h0;\n            h0 = comparer.GetHashCode(previous);\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(current);\n            return h0;\n        }\n\n        public override bool Equals(object obj)\n        {\n            if (!(obj is Pair<T>)) return false;\n\n            return Equals((Pair<T>)obj);\n        }\n\n        public bool Equals(Pair<T> other)\n        {\n            var comparer = EqualityComparer<T>.Default;\n\n            return comparer.Equals(previous, other.Previous) &&\n                comparer.Equals(current, other.Current);\n        }\n\n        public override string ToString()\n        {\n            return string.Format(\"({0}, {1})\", previous, current);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Pair.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7947c520dfd9de94bb381e45dc105752\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/CurrentThreadScheduler.cs",
    "content": "﻿// this code is borrowed from RxOfficial(rx.codeplex.com) and modified\n\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.\n\nusing System.ComponentModel;\nusing System.Threading;\nusing UniRx.InternalUtil;\nusing UniRx;\nusing System;\nusing System.Diagnostics;\nusing System.Collections.Generic;\n\nnamespace UniRx\n{\n\n    public static partial class Scheduler\n    {\n        public static readonly IScheduler CurrentThread = new CurrentThreadScheduler();\n\n        public static bool IsCurrentThreadSchedulerScheduleRequired { get { return CurrentThreadScheduler.IsScheduleRequired; } }\n\n        /// <summary>\n        /// Represents an object that schedules units of work on the current thread.\n        /// </summary>\n        /// <seealso cref=\"Scheduler.CurrentThread\">Singleton instance of this type exposed through this static property.</seealso>\n        class CurrentThreadScheduler : IScheduler\n        {\n            [ThreadStatic]\n            static SchedulerQueue s_threadLocalQueue;\n\n            [ThreadStatic]\n            static Stopwatch s_clock;\n\n            private static SchedulerQueue GetQueue()\n            {\n                return s_threadLocalQueue;\n            }\n\n            private static void SetQueue(SchedulerQueue newQueue)\n            {\n                s_threadLocalQueue = newQueue;\n            }\n\n            private static TimeSpan Time\n            {\n                get\n                {\n                    if (s_clock == null)\n                        s_clock = Stopwatch.StartNew();\n\n                    return s_clock.Elapsed;\n                }\n            }\n\n            /// <summary>\n            /// Gets a value that indicates whether the caller must call a Schedule method.\n            /// </summary>\n            [EditorBrowsable(EditorBrowsableState.Advanced)]\n            public static bool IsScheduleRequired\n            {\n                get\n                {\n                    return GetQueue() == null;\n                }\n            }\n\n            public IDisposable Schedule(Action action)\n            {\n                return Schedule(TimeSpan.Zero, action);\n            }\n\n            public IDisposable Schedule(TimeSpan dueTime, Action action)\n            {\n                if (action == null)\n                    throw new ArgumentNullException(\"action\");\n\n                var dt = Time + Scheduler.Normalize(dueTime);\n\n                var si = new ScheduledItem(action, dt);\n\n                var queue = GetQueue();\n\n                if (queue == null)\n                {\n                    queue = new SchedulerQueue(4);\n                    queue.Enqueue(si);\n\n                    CurrentThreadScheduler.SetQueue(queue);\n                    try\n                    {\n                        Trampoline.Run(queue);\n                    }\n                    finally\n                    {\n                        CurrentThreadScheduler.SetQueue(null);\n                    }\n                }\n                else\n                {\n                    queue.Enqueue(si);\n                }\n\n                return si.Cancellation;\n            }\n\n            static class Trampoline\n            {\n                public static void Run(SchedulerQueue queue)\n                {\n                    while (queue.Count > 0)\n                    {\n                        var item = queue.Dequeue();\n                        if (!item.IsCanceled)\n                        {\n                            var wait = item.DueTime - CurrentThreadScheduler.Time;\n                            if (wait.Ticks > 0)\n                            {\n                                Thread.Sleep(wait);\n                            }\n\n                            if (!item.IsCanceled)\n                                item.Invoke();\n                        }\n                    }\n                }\n            }\n\n            public DateTimeOffset Now\n            {\n                get { return Scheduler.Now; }\n            }\n        }\n    }\n}\n\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/CurrentThreadScheduler.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1d547b5ee71b7284db1fecfcdfa59fac\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/IScheduler.cs",
    "content": "﻿using System;\n\nnamespace UniRx\n{\n    public interface IScheduler\n    {\n        DateTimeOffset Now { get; }\n\n        // Interface is changed from official Rx for avoid iOS AOT problem (state is dangerous).\n\n        IDisposable Schedule(Action action);\n\n        IDisposable Schedule(TimeSpan dueTime, Action action);\n    }\n\n    public interface ISchedulerPeriodic\n    {\n        IDisposable SchedulePeriodic(TimeSpan period, Action action);\n    }\n\n    public interface ISchedulerLongRunning\n    {\n        IDisposable ScheduleLongRunning(Action<ICancelable> action);\n    }\n\n    public interface ISchedulerQueueing\n    {\n        void ScheduleQueueing<T>(ICancelable cancel, T state, Action<T> action);\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/IScheduler.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7409b202c20d3894b9677c8f2a27f3aa\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/ImmediateScheduler.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\n\nnamespace UniRx\n{\n    public static partial class Scheduler\n    {\n        public static readonly IScheduler Immediate = new ImmediateScheduler();\n\n        class ImmediateScheduler : IScheduler\n        {\n            public ImmediateScheduler()\n            {\n            }\n\n            public DateTimeOffset Now\n            {\n                get { return Scheduler.Now; }\n            }\n\n            public IDisposable Schedule(Action action)\n            {\n                action();\n                return Disposable.Empty;\n            }\n\n            public IDisposable Schedule(TimeSpan dueTime, Action action)\n            {\n                var wait = Scheduler.Normalize(dueTime);\n                if (wait.Ticks > 0)\n                {\n                    Thread.Sleep(wait);\n                }\n\n                action();\n                return Disposable.Empty;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/ImmediateScheduler.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 87be5fca34f9b44428b7fb1ce9147860\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/Scheduler.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\n\nnamespace UniRx\n{\n    // Scheduler Extension\n    public static partial class Scheduler\n    {\n        // configurable defaults\n        public static class DefaultSchedulers\n        {\n            static IScheduler constantTime;\n            public static IScheduler ConstantTimeOperations\n            {\n                get\n                {\n                    return constantTime ?? (constantTime = Scheduler.Immediate);\n                }\n                set\n                {\n                    constantTime = value;\n                }\n            }\n\n            static IScheduler tailRecursion;\n            public static IScheduler TailRecursion\n            {\n                get\n                {\n                    return tailRecursion ?? (tailRecursion = Scheduler.Immediate);\n                }\n                set\n                {\n                    tailRecursion = value;\n                }\n            }\n\n            static IScheduler iteration;\n            public static IScheduler Iteration\n            {\n                get\n                {\n                    return iteration ?? (iteration = Scheduler.CurrentThread);\n                }\n                set\n                {\n                    iteration = value;\n                }\n            }\n\n            static IScheduler timeBasedOperations;\n            public static IScheduler TimeBasedOperations\n            {\n                get\n                {\n#if UniRxLibrary\n                    return timeBasedOperations ?? (timeBasedOperations = Scheduler.ThreadPool);\n#else\n                    return timeBasedOperations ?? (timeBasedOperations = Scheduler.MainThread); // MainThread as default for TimeBased Operation\n#endif\n                }\n                set\n                {\n                    timeBasedOperations = value;\n                }\n            }\n\n            static IScheduler asyncConversions;\n            public static IScheduler AsyncConversions\n            {\n                get\n                {\n#if WEB_GL\n                    // WebGL does not support threadpool\n                    return asyncConversions ?? (asyncConversions = Scheduler.MainThread);\n#else\n                    return asyncConversions ?? (asyncConversions = Scheduler.ThreadPool);\n#endif\n                }\n                set\n                {\n                    asyncConversions = value;\n                }\n            }\n\n            public static void SetDotNetCompatible()\n            {\n                ConstantTimeOperations = Scheduler.Immediate;\n                TailRecursion = Scheduler.Immediate;\n                Iteration = Scheduler.CurrentThread;\n                TimeBasedOperations = Scheduler.ThreadPool;\n                AsyncConversions = Scheduler.ThreadPool;\n            }\n        }\n\n        // utils\n\n        public static DateTimeOffset Now\n        {\n            get { return DateTimeOffset.UtcNow; }\n        }\n\n        public static TimeSpan Normalize(TimeSpan timeSpan)\n        {\n            return timeSpan >= TimeSpan.Zero ? timeSpan : TimeSpan.Zero;\n        }\n\n        public static IDisposable Schedule(this IScheduler scheduler, DateTimeOffset dueTime, Action action)\n        {\n            return scheduler.Schedule(dueTime - scheduler.Now, action);\n        }\n\n        public static IDisposable Schedule(this IScheduler scheduler, Action<Action> action)\n        {\n            // InvokeRec1\n            var group = new CompositeDisposable(1);\n            var gate = new object();\n\n            Action recursiveAction = null;\n            recursiveAction = () => action(() =>\n            {\n                var isAdded = false;\n                var isDone = false;\n                var d = default(IDisposable);\n                d = scheduler.Schedule(() =>\n                {\n                    lock (gate)\n                    {\n                        if (isAdded)\n                            group.Remove(d);\n                        else\n                            isDone = true;\n                    }\n                    recursiveAction();\n                });\n\n                lock (gate)\n                {\n                    if (!isDone)\n                    {\n                        group.Add(d);\n                        isAdded = true;\n                    }\n                }\n            });\n\n            group.Add(scheduler.Schedule(recursiveAction));\n\n            return group;\n        }\n\n        public static IDisposable Schedule(this IScheduler scheduler, TimeSpan dueTime, Action<Action<TimeSpan>> action)\n        {\n            // InvokeRec2\n\n            var group = new CompositeDisposable(1);\n            var gate = new object();\n\n            Action recursiveAction = null;\n            recursiveAction = () => action(dt =>\n            {\n                var isAdded = false;\n                var isDone = false;\n                var d = default(IDisposable);\n                d = scheduler.Schedule(dt, () =>\n                {\n                    lock (gate)\n                    {\n                        if (isAdded)\n                            group.Remove(d);\n                        else\n                            isDone = true;\n                    }\n                    recursiveAction();\n                });\n\n                lock (gate)\n                {\n                    if (!isDone)\n                    {\n                        group.Add(d);\n                        isAdded = true;\n                    }\n                }\n            });\n\n            group.Add(scheduler.Schedule(dueTime, recursiveAction));\n\n            return group;\n        }\n\n        public static IDisposable Schedule(this IScheduler scheduler, DateTimeOffset dueTime, Action<Action<DateTimeOffset>> action)\n        {\n            // InvokeRec3\n\n            var group = new CompositeDisposable(1);\n            var gate = new object();\n\n            Action recursiveAction = null;\n            recursiveAction = () => action(dt =>\n            {\n                var isAdded = false;\n                var isDone = false;\n                var d = default(IDisposable);\n                d = scheduler.Schedule(dt, () =>\n                {\n                    lock (gate)\n                    {\n                        if (isAdded)\n                            group.Remove(d);\n                        else\n                            isDone = true;\n                    }\n                    recursiveAction();\n                });\n\n                lock (gate)\n                {\n                    if (!isDone)\n                    {\n                        group.Add(d);\n                        isAdded = true;\n                    }\n                }\n            });\n\n            group.Add(scheduler.Schedule(dueTime, recursiveAction));\n\n            return group;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/Scheduler.cs.meta",
    "content": "fileFormatVersion: 2\nguid: bfeb53a7ea29f714798ba6bb3bd70ba4\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/ThreadPoolScheduler.cs",
    "content": "﻿#if !UNITY_METRO\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Text;\nusing UniRx.InternalUtil;\n\nnamespace UniRx\n{\n    public static partial class Scheduler\n    {\n        public static readonly IScheduler ThreadPool = new ThreadPoolScheduler();\n\n        class ThreadPoolScheduler : IScheduler, ISchedulerPeriodic\n        {\n            public ThreadPoolScheduler()\n            {\n            }\n\n            public DateTimeOffset Now\n            {\n                get { return Scheduler.Now; }\n            }\n\n            public IDisposable Schedule(Action action)\n            {\n                var d = new BooleanDisposable();\n\n                System.Threading.ThreadPool.QueueUserWorkItem(_ =>\n                {\n                    if (!d.IsDisposed)\n                    {\n                        action();\n                    }\n                });\n\n                return d;\n            }\n\n            public IDisposable Schedule(DateTimeOffset dueTime, Action action)\n            {\n                return Schedule(dueTime - Now, action);\n            }\n\n            public IDisposable Schedule(TimeSpan dueTime, Action action)\n            {\n                return new Timer(dueTime, action);\n            }\n\n            public IDisposable SchedulePeriodic(TimeSpan period, Action action)\n            {\n                return new PeriodicTimer(period, action);\n            }\n\n            public void ScheduleQueueing<T>(ICancelable cancel, T state, Action<T> action)\n            {\n                System.Threading.ThreadPool.QueueUserWorkItem(callBackState =>\n                {\n                    if (!cancel.IsDisposed)\n                    {\n                        action((T)callBackState);\n                    }\n                }, state);\n            }\n\n            // timer was borrwed from Rx Official\n\n            sealed class Timer : IDisposable\n            {\n                static readonly HashSet<System.Threading.Timer> s_timers = new HashSet<System.Threading.Timer>();\n\n                private readonly SingleAssignmentDisposable _disposable;\n\n                private Action _action;\n                private System.Threading.Timer _timer;\n\n                private bool _hasAdded;\n                private bool _hasRemoved;\n\n                public Timer(TimeSpan dueTime, Action action)\n                {\n                    _disposable = new SingleAssignmentDisposable();\n                    _disposable.Disposable = Disposable.Create(Unroot);\n\n                    _action = action;\n                    _timer = new System.Threading.Timer(Tick, null, dueTime, TimeSpan.FromMilliseconds(System.Threading.Timeout.Infinite));\n\n                    lock (s_timers)\n                    {\n                        if (!_hasRemoved)\n                        {\n                            s_timers.Add(_timer);\n\n                            _hasAdded = true;\n                        }\n                    }\n                }\n\n                private void Tick(object state)\n                {\n                    try\n                    {\n                        if (!_disposable.IsDisposed)\n                        {\n                            _action();\n                        }\n                    }\n                    finally\n                    {\n                        Unroot();\n                    }\n                }\n\n                private void Unroot()\n                {\n                    _action = Stubs.Nop;\n\n                    var timer = default(System.Threading.Timer);\n\n                    lock (s_timers)\n                    {\n                        if (!_hasRemoved)\n                        {\n                            timer = _timer;\n                            _timer = null;\n\n                            if (_hasAdded && timer != null)\n                                s_timers.Remove(timer);\n\n                            _hasRemoved = true;\n                        }\n                    }\n\n                    if (timer != null)\n                        timer.Dispose();\n                }\n\n                public void Dispose()\n                {\n                    _disposable.Dispose();\n                }\n            }\n\n            sealed class PeriodicTimer : IDisposable\n            {\n                static readonly HashSet<System.Threading.Timer> s_timers = new HashSet<System.Threading.Timer>();\n\n                private Action _action;\n                private System.Threading.Timer _timer;\n                private readonly AsyncLock _gate;\n\n                public PeriodicTimer(TimeSpan period, Action action)\n                {\n                    this._action = action;\n                    this._timer = new System.Threading.Timer(Tick, null, period, period);\n                    this._gate = new AsyncLock();\n\n                    lock (s_timers)\n                    {\n                        s_timers.Add(_timer);\n                    }\n                }\n\n                private void Tick(object state)\n                {\n                    _gate.Wait(() =>\n                    {\n                        _action();\n                    });\n                }\n\n                public void Dispose()\n                {\n                    var timer = default(System.Threading.Timer);\n\n                    lock (s_timers)\n                    {\n                        timer = _timer;\n                        _timer = null;\n\n                        if (timer != null)\n                            s_timers.Remove(timer);\n                    }\n\n                    if (timer != null)\n                    {\n                        timer.Dispose();\n                        _action = Stubs.Nop;\n                    }\n                }\n            }\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers/ThreadPoolScheduler.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f8189a60f4619be489df10eca6a78fbb\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Schedulers.meta",
    "content": "fileFormatVersion: 2\nguid: ca4cbb2e99a69854d93ad929ef72117b\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/AsyncSubject.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.InternalUtil;\n\n#if (NET_4_6 || NET_STANDARD_2_0)\nusing System.Runtime.CompilerServices;\nusing System.Threading;\n#endif\n\nnamespace UniRx\n{\n    public sealed class AsyncSubject<T> : ISubject<T>, IOptimizedObservable<T>, IDisposable\n#if (NET_4_6 || NET_STANDARD_2_0)\n        , INotifyCompletion\n#endif\n    {\n        object observerLock = new object();\n\n        T lastValue;\n        bool hasValue;\n        bool isStopped;\n        bool isDisposed;\n        Exception lastError;\n        IObserver<T> outObserver = EmptyObserver<T>.Instance;\n\n        public T Value\n        {\n            get\n            {\n                ThrowIfDisposed();\n                if (!isStopped) throw new InvalidOperationException(\"AsyncSubject is not completed yet\");\n                if (lastError != null) lastError.Throw();\n                return lastValue;\n            }\n        }\n\n        public bool HasObservers\n        {\n            get\n            {\n                return !(outObserver is EmptyObserver<T>) && !isStopped && !isDisposed;\n            }\n        }\n\n        public bool IsCompleted { get { return isStopped; } }\n\n        public void OnCompleted()\n        {\n            IObserver<T> old;\n            T v;\n            bool hv;\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                old = outObserver;\n                outObserver = EmptyObserver<T>.Instance;\n                isStopped = true;\n                v = lastValue;\n                hv = hasValue;\n            }\n\n            if (hv)\n            {\n                old.OnNext(v);\n                old.OnCompleted();\n            }\n            else\n            {\n                old.OnCompleted();\n            }\n        }\n\n        public void OnError(Exception error)\n        {\n            if (error == null) throw new ArgumentNullException(\"error\");\n\n            IObserver<T> old;\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                old = outObserver;\n                outObserver = EmptyObserver<T>.Instance;\n                isStopped = true;\n                lastError = error;\n            }\n\n            old.OnError(error);\n        }\n\n        public void OnNext(T value)\n        {\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                this.hasValue = true;\n                this.lastValue = value;\n            }\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            if (observer == null) throw new ArgumentNullException(\"observer\");\n\n            var ex = default(Exception);\n            var v = default(T);\n            var hv = false;\n\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (!isStopped)\n                {\n                    var listObserver = outObserver as ListObserver<T>;\n                    if (listObserver != null)\n                    {\n                        outObserver = listObserver.Add(observer);\n                    }\n                    else\n                    {\n                        var current = outObserver;\n                        if (current is EmptyObserver<T>)\n                        {\n                            outObserver = observer;\n                        }\n                        else\n                        {\n                            outObserver = new ListObserver<T>(new ImmutableList<IObserver<T>>(new[] { current, observer }));\n                        }\n                    }\n\n                    return new Subscription(this, observer);\n                }\n\n                ex = lastError;\n                v = lastValue;\n                hv = hasValue;\n            }\n\n            if (ex != null)\n            {\n                observer.OnError(ex);\n            }\n            else if (hv)\n            {\n                observer.OnNext(v);\n                observer.OnCompleted();\n            }\n            else\n            {\n                observer.OnCompleted();\n            }\n\n            return Disposable.Empty;\n        }\n\n        public void Dispose()\n        {\n            lock (observerLock)\n            {\n                isDisposed = true;\n                outObserver = DisposedObserver<T>.Instance;\n                lastError = null;\n                lastValue = default(T);\n            }\n        }\n\n        void ThrowIfDisposed()\n        {\n            if (isDisposed) throw new ObjectDisposedException(\"\");\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        class Subscription : IDisposable\n        {\n            readonly object gate = new object();\n            AsyncSubject<T> parent;\n            IObserver<T> unsubscribeTarget;\n\n            public Subscription(AsyncSubject<T> parent, IObserver<T> unsubscribeTarget)\n            {\n                this.parent = parent;\n                this.unsubscribeTarget = unsubscribeTarget;\n            }\n\n            public void Dispose()\n            {\n                lock (gate)\n                {\n                    if (parent != null)\n                    {\n                        lock (parent.observerLock)\n                        {\n                            var listObserver = parent.outObserver as ListObserver<T>;\n                            if (listObserver != null)\n                            {\n                                parent.outObserver = listObserver.Remove(unsubscribeTarget);\n                            }\n                            else\n                            {\n                                parent.outObserver = EmptyObserver<T>.Instance;\n                            }\n\n                            unsubscribeTarget = null;\n                            parent = null;\n                        }\n                    }\n                }\n            }\n        }\n\n\n#if (NET_4_6 || NET_STANDARD_2_0)\n\n        /// <summary>\n        /// Gets an awaitable object for the current AsyncSubject.\n        /// </summary>\n        /// <returns>Object that can be awaited.</returns>\n        public AsyncSubject<T> GetAwaiter()\n        {\n            return this;\n        }\n\n        /// <summary>\n        /// Specifies a callback action that will be invoked when the subject completes.\n        /// </summary>\n        /// <param name=\"continuation\">Callback action that will be invoked when the subject completes.</param>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"continuation\"/> is null.</exception>\n        public void OnCompleted(Action continuation)\n        {\n            if (continuation == null)\n                throw new ArgumentNullException(\"continuation\");\n\n            OnCompleted(continuation, true);\n        }\n\n         void OnCompleted(Action continuation, bool originalContext)\n        {\n            //\n            // [OK] Use of unsafe Subscribe: this type's Subscribe implementation is safe.\n            //\n            this.Subscribe/*Unsafe*/(new AwaitObserver(continuation, originalContext));\n        }\n\n        class AwaitObserver : IObserver<T>\n        {\n            private readonly SynchronizationContext _context;\n            private readonly Action _callback;\n\n            public AwaitObserver(Action callback, bool originalContext)\n            {\n                if (originalContext)\n                    _context = SynchronizationContext.Current;\n\n                _callback = callback;\n            }\n\n            public void OnCompleted()\n            {\n                InvokeOnOriginalContext();\n            }\n\n            public void OnError(Exception error)\n            {\n                InvokeOnOriginalContext();\n            }\n\n            public void OnNext(T value)\n            {\n            }\n\n            private void InvokeOnOriginalContext()\n            {\n                if (_context != null)\n                {\n                    //\n                    // No need for OperationStarted and OperationCompleted calls here;\n                    // this code is invoked through await support and will have a way\n                    // to observe its start/complete behavior, either through returned\n                    // Task objects or the async method builder's interaction with the\n                    // SynchronizationContext object.\n                    //\n                    _context.Post(c => ((Action)c)(), _callback);\n                }\n                else\n                {\n                    _callback();\n                }\n            }\n        }\n\n        /// <summary>\n        /// Gets the last element of the subject, potentially blocking until the subject completes successfully or exceptionally.\n        /// </summary>\n        /// <returns>The last element of the subject. Throws an InvalidOperationException if no element was received.</returns>\n        /// <exception cref=\"InvalidOperationException\">The source sequence is empty.</exception>\n        [System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Design\", \"CA1024:UsePropertiesWhereAppropriate\", Justification = \"Await pattern for C# and VB compilers.\")]\n        public T GetResult()\n        {\n            if (!isStopped)\n            {\n                var e = new ManualResetEvent(false);\n                OnCompleted(() => e.Set(), false);\n                e.WaitOne();\n            }\n\n            if (lastError != null)\n            {\n                lastError.Throw();\n            }\n\n            if (!hasValue)\n                throw new InvalidOperationException(\"NO_ELEMENTS\");\n\n            return lastValue;\n        }\n#endif\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/AsyncSubject.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 137cd44250b484d4ba2390d510f8423f\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/BehaviorSubject.cs",
    "content": "﻿using System;\nusing UniRx.InternalUtil;\n\nnamespace UniRx\n{\n    public sealed class BehaviorSubject<T> : ISubject<T>, IDisposable, IOptimizedObservable<T>\n    {\n        object observerLock = new object();\n\n        bool isStopped;\n        bool isDisposed;\n        T lastValue;\n        Exception lastError;\n        IObserver<T> outObserver = EmptyObserver<T>.Instance;\n\n        public BehaviorSubject(T defaultValue)\n        {\n            lastValue = defaultValue;\n        }\n\n        public T Value\n        {\n            get\n            {\n                ThrowIfDisposed();\n                if (lastError != null) lastError.Throw();\n                return lastValue;\n            }\n        }\n\n        public bool HasObservers\n        {\n            get\n            {\n                return !(outObserver is EmptyObserver<T>) && !isStopped && !isDisposed;\n            }\n        }\n\n        public void OnCompleted()\n        {\n            IObserver<T> old;\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                old = outObserver;\n                outObserver = EmptyObserver<T>.Instance;\n                isStopped = true;\n            }\n\n            old.OnCompleted();\n        }\n\n        public void OnError(Exception error)\n        {\n            if (error == null) throw new ArgumentNullException(\"error\");\n\n            IObserver<T> old;\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                old = outObserver;\n                outObserver = EmptyObserver<T>.Instance;\n                isStopped = true;\n                lastError = error;\n            }\n\n            old.OnError(error);\n        }\n\n        public void OnNext(T value)\n        {\n            IObserver<T> current;\n            lock (observerLock)\n            {\n                if (isStopped) return;\n\n                lastValue = value;\n                current = outObserver;\n            }\n\n            current.OnNext(value);\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            if (observer == null) throw new ArgumentNullException(\"observer\");\n\n            var ex = default(Exception);\n            var v = default(T);\n            var subscription = default(Subscription);\n\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (!isStopped)\n                {\n                    var listObserver = outObserver as ListObserver<T>;\n                    if (listObserver != null)\n                    {\n                        outObserver = listObserver.Add(observer);\n                    }\n                    else\n                    {\n                        var current = outObserver;\n                        if (current is EmptyObserver<T>)\n                        {\n                            outObserver = observer;\n                        }\n                        else\n                        {\n                            outObserver = new ListObserver<T>(new ImmutableList<IObserver<T>>(new[] { current, observer }));\n                        }\n                    }\n\n                    v = lastValue;\n                    subscription = new Subscription(this, observer);\n                }\n                else\n                {\n                    ex = lastError;\n                }\n            }\n\n            if (subscription != null)\n            {\n                observer.OnNext(v);\n                return subscription;\n            }\n            else if (ex != null)\n            {\n                observer.OnError(ex);\n            }\n            else\n            {\n                observer.OnCompleted();\n            }\n\n            return Disposable.Empty;\n        }\n\n        public void Dispose()\n        {\n            lock (observerLock)\n            {\n                isDisposed = true;\n                outObserver = DisposedObserver<T>.Instance;\n                lastError = null;\n                lastValue = default(T);\n            }\n        }\n\n        void ThrowIfDisposed()\n        {\n            if (isDisposed) throw new ObjectDisposedException(\"\");\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        class Subscription : IDisposable\n        {\n            readonly object gate = new object();\n            BehaviorSubject<T> parent;\n            IObserver<T> unsubscribeTarget;\n\n            public Subscription(BehaviorSubject<T> parent, IObserver<T> unsubscribeTarget)\n            {\n                this.parent = parent;\n                this.unsubscribeTarget = unsubscribeTarget;\n            }\n\n            public void Dispose()\n            {\n                lock (gate)\n                {\n                    if (parent != null)\n                    {\n                        lock (parent.observerLock)\n                        {\n                            var listObserver = parent.outObserver as ListObserver<T>;\n                            if (listObserver != null)\n                            {\n                                parent.outObserver = listObserver.Remove(unsubscribeTarget);\n                            }\n                            else\n                            {\n                                parent.outObserver = EmptyObserver<T>.Instance;\n                            }\n\n                            unsubscribeTarget = null;\n                            parent = null;\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/BehaviorSubject.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2fa461d2fc0c4ec4999e0b9aff16dd47\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/ConnectableObservable.cs",
    "content": "﻿using System;\n\nnamespace UniRx\n{\n    public interface IConnectableObservable<T> : IObservable<T>\n    {\n        IDisposable Connect();\n    }\n\n    public static partial class Observable\n    {\n        class ConnectableObservable<T> : IConnectableObservable<T>\n        {\n            readonly IObservable<T> source;\n            readonly ISubject<T> subject;\n            readonly object gate = new object();\n            Connection connection;\n\n            public ConnectableObservable(IObservable<T> source, ISubject<T> subject)\n            {\n                this.source = source.AsObservable();\n                this.subject = subject;\n            }\n\n            public IDisposable Connect()\n            {\n                lock (gate)\n                {\n                    // don't subscribe twice\n                    if (connection == null)\n                    {\n                        var subscription = source.Subscribe(subject);\n                        connection = new Connection(this, subscription);\n                    }\n\n                    return connection;\n                }\n            }\n\n            public IDisposable Subscribe(IObserver<T> observer)\n            {\n                return subject.Subscribe(observer);\n            }\n\n            class Connection : IDisposable\n            {\n                readonly ConnectableObservable<T> parent;\n                IDisposable subscription;\n\n                public Connection(ConnectableObservable<T> parent, IDisposable subscription)\n                {\n                    this.parent = parent;\n                    this.subscription = subscription;\n                }\n\n                public void Dispose()\n                {\n                    lock (parent.gate)\n                    {\n                        if (subscription != null)\n                        {\n                            subscription.Dispose();\n                            subscription = null;\n                            parent.connection = null;\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/ConnectableObservable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8de419b467eded246bc4fc5e70859f73\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/ISubject.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace UniRx\n{\n    public interface ISubject<TSource, TResult> : IObserver<TSource>, IObservable<TResult>\n    {\n    }\n\n    public interface ISubject<T> : ISubject<T, T>, IObserver<T>, IObservable<T>\n    {\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/ISubject.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e9dbcd28e4f3965408744e0ee03b7bc8\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/ReplaySubject.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.InternalUtil;\n\nnamespace UniRx\n{\n    public sealed class ReplaySubject<T> : ISubject<T>, IOptimizedObservable<T>, IDisposable\n    {\n        object observerLock = new object();\n\n        bool isStopped;\n        bool isDisposed;\n        Exception lastError;\n        IObserver<T> outObserver = EmptyObserver<T>.Instance;\n\n        readonly int bufferSize;\n        readonly TimeSpan window;\n        readonly DateTimeOffset startTime;\n        readonly IScheduler scheduler;\n        Queue<TimeInterval<T>> queue = new Queue<TimeInterval<T>>();\n\n\n        public ReplaySubject()\n            : this(int.MaxValue, TimeSpan.MaxValue, Scheduler.DefaultSchedulers.Iteration)\n        {\n        }\n\n        public ReplaySubject(IScheduler scheduler)\n            : this(int.MaxValue, TimeSpan.MaxValue, scheduler)\n        {\n        }\n\n        public ReplaySubject(int bufferSize)\n            : this(bufferSize, TimeSpan.MaxValue, Scheduler.DefaultSchedulers.Iteration)\n        {\n        }\n\n        public ReplaySubject(int bufferSize, IScheduler scheduler)\n            : this(bufferSize, TimeSpan.MaxValue, scheduler)\n        {\n        }\n\n        public ReplaySubject(TimeSpan window)\n            : this(int.MaxValue, window, Scheduler.DefaultSchedulers.Iteration)\n        {\n        }\n\n        public ReplaySubject(TimeSpan window, IScheduler scheduler)\n            : this(int.MaxValue, window, scheduler)\n        {\n        }\n\n        // full constructor\n        public ReplaySubject(int bufferSize, TimeSpan window, IScheduler scheduler)\n        {\n            if (bufferSize < 0) throw new ArgumentOutOfRangeException(\"bufferSize\");\n            if (window < TimeSpan.Zero) throw new ArgumentOutOfRangeException(\"window\");\n            if (scheduler == null) throw new ArgumentNullException(\"scheduler\");\n\n            this.bufferSize = bufferSize;\n            this.window = window;\n            this.scheduler = scheduler;\n            startTime = scheduler.Now;\n        }\n\n        void Trim()\n        {\n            var elapsedTime = Scheduler.Normalize(scheduler.Now - startTime);\n\n            while (queue.Count > bufferSize)\n            {\n                queue.Dequeue();\n            }\n            while (queue.Count > 0 && elapsedTime.Subtract(queue.Peek().Interval).CompareTo(window) > 0)\n            {\n                queue.Dequeue();\n            }\n        }\n\n        public void OnCompleted()\n        {\n            IObserver<T> old;\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                old = outObserver;\n                outObserver = EmptyObserver<T>.Instance;\n                isStopped = true;\n                Trim();\n            }\n\n            old.OnCompleted();\n        }\n\n        public void OnError(Exception error)\n        {\n            if (error == null) throw new ArgumentNullException(\"error\");\n\n            IObserver<T> old;\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                old = outObserver;\n                outObserver = EmptyObserver<T>.Instance;\n                isStopped = true;\n                lastError = error;\n                Trim();\n            }\n\n            old.OnError(error);\n        }\n\n        public void OnNext(T value)\n        {\n            IObserver<T> current;\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                // enQ\n                queue.Enqueue(new TimeInterval<T>(value, scheduler.Now - startTime));\n                Trim();\n\n                current = outObserver;\n            }\n\n            current.OnNext(value);\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            if (observer == null) throw new ArgumentNullException(\"observer\");\n\n            var ex = default(Exception);\n            var subscription = default(Subscription);\n\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (!isStopped)\n                {\n                    var listObserver = outObserver as ListObserver<T>;\n                    if (listObserver != null)\n                    {\n                        outObserver = listObserver.Add(observer);\n                    }\n                    else\n                    {\n                        var current = outObserver;\n                        if (current is EmptyObserver<T>)\n                        {\n                            outObserver = observer;\n                        }\n                        else\n                        {\n                            outObserver = new ListObserver<T>(new ImmutableList<IObserver<T>>(new[] { current, observer }));\n                        }\n                    }\n\n                    subscription = new Subscription(this, observer);\n                }\n\n                ex = lastError;\n                Trim();\n                foreach (var item in queue)\n                {\n                    observer.OnNext(item.Value);\n                }\n            }\n\n            if (subscription != null)\n            {\n                return subscription;\n            }\n            else if (ex != null)\n            {\n                observer.OnError(ex);\n            }\n            else\n            {\n                observer.OnCompleted();\n            }\n\n            return Disposable.Empty;\n        }\n\n        public void Dispose()\n        {\n            lock (observerLock)\n            {\n                isDisposed = true;\n                outObserver = DisposedObserver<T>.Instance;\n                lastError = null;\n                queue = null;\n            }\n        }\n\n        void ThrowIfDisposed()\n        {\n            if (isDisposed) throw new ObjectDisposedException(\"\");\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        class Subscription : IDisposable\n        {\n            readonly object gate = new object();\n            ReplaySubject<T> parent;\n            IObserver<T> unsubscribeTarget;\n\n            public Subscription(ReplaySubject<T> parent, IObserver<T> unsubscribeTarget)\n            {\n                this.parent = parent;\n                this.unsubscribeTarget = unsubscribeTarget;\n            }\n\n            public void Dispose()\n            {\n                lock (gate)\n                {\n                    if (parent != null)\n                    {\n                        lock (parent.observerLock)\n                        {\n                            var listObserver = parent.outObserver as ListObserver<T>;\n                            if (listObserver != null)\n                            {\n                                parent.outObserver = listObserver.Remove(unsubscribeTarget);\n                            }\n                            else\n                            {\n                                parent.outObserver = EmptyObserver<T>.Instance;\n                            }\n\n                            unsubscribeTarget = null;\n                            parent = null;\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/ReplaySubject.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d9b0c2f29645e1f468259893bf9afb68\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/Subject.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UniRx.InternalUtil;\n\nnamespace UniRx\n{\n    public sealed class Subject<T> : ISubject<T>, IDisposable, IOptimizedObservable<T>\n    {\n        object observerLock = new object();\n\n        bool isStopped;\n        bool isDisposed;\n        Exception lastError;\n        IObserver<T> outObserver = EmptyObserver<T>.Instance;\n\n        public bool HasObservers\n        {\n            get\n            {\n                return !(outObserver is EmptyObserver<T>) && !isStopped && !isDisposed;\n            }\n        }\n\n        public void OnCompleted()\n        {\n            IObserver<T> old;\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                old = outObserver;\n                outObserver = EmptyObserver<T>.Instance;\n                isStopped = true;\n            }\n\n            old.OnCompleted();\n        }\n\n        public void OnError(Exception error)\n        {\n            if (error == null) throw new ArgumentNullException(\"error\");\n\n            IObserver<T> old;\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (isStopped) return;\n\n                old = outObserver;\n                outObserver = EmptyObserver<T>.Instance;\n                isStopped = true;\n                lastError = error;\n            }\n\n            old.OnError(error);\n        }\n\n        public void OnNext(T value)\n        {\n            outObserver.OnNext(value);\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            if (observer == null) throw new ArgumentNullException(\"observer\");\n\n            var ex = default(Exception);\n\n            lock (observerLock)\n            {\n                ThrowIfDisposed();\n                if (!isStopped)\n                {\n                    var listObserver = outObserver as ListObserver<T>;\n                    if (listObserver != null)\n                    {\n                        outObserver = listObserver.Add(observer);\n                    }\n                    else\n                    {\n                        var current = outObserver;\n                        if (current is EmptyObserver<T>)\n                        {\n                            outObserver = observer;\n                        }\n                        else\n                        {\n                            outObserver = new ListObserver<T>(new ImmutableList<IObserver<T>>(new[] { current, observer }));\n                        }\n                    }\n\n                    return new Subscription(this, observer);\n                }\n\n                ex = lastError;\n            }\n\n            if (ex != null)\n            {\n                observer.OnError(ex);\n            }\n            else\n            {\n                observer.OnCompleted();\n            }\n\n            return Disposable.Empty;\n        }\n\n        public void Dispose()\n        {\n            lock (observerLock)\n            {\n                isDisposed = true;\n                outObserver = DisposedObserver<T>.Instance;\n            }\n        }\n\n        void ThrowIfDisposed()\n        {\n            if (isDisposed) throw new ObjectDisposedException(\"\");\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n\n        class Subscription : IDisposable\n        {\n            readonly object gate = new object();\n            Subject<T> parent;\n            IObserver<T> unsubscribeTarget;\n\n            public Subscription(Subject<T> parent, IObserver<T> unsubscribeTarget)\n            {\n                this.parent = parent;\n                this.unsubscribeTarget = unsubscribeTarget;\n            }\n\n            public void Dispose()\n            {\n                lock (gate)\n                {\n                    if (parent != null)\n                    {\n                        lock (parent.observerLock)\n                        {\n                            var listObserver = parent.outObserver as ListObserver<T>;\n                            if (listObserver != null)\n                            {\n                                parent.outObserver = listObserver.Remove(unsubscribeTarget);\n                            }\n                            else\n                            {\n                                parent.outObserver = EmptyObserver<T>.Instance;\n                            }\n\n                            unsubscribeTarget = null;\n                            parent = null;\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/Subject.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d5fdc90caca9cbe4b9cd9c3fae81e7f6\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/SubjectExtensions.cs",
    "content": "﻿using System;\n\nnamespace UniRx\n{\n    public static class SubjectExtensions\n    {\n        public static ISubject<T> Synchronize<T>(this ISubject<T> subject)\n        {\n            return new AnonymousSubject<T>((subject as IObserver<T>).Synchronize(), subject);\n        }\n\n        public static ISubject<T> Synchronize<T>(this ISubject<T> subject, object gate)\n        {\n            return new AnonymousSubject<T>((subject as IObserver<T>).Synchronize(gate), subject);\n        }\n\n        class AnonymousSubject<T, U> : ISubject<T, U>\n        {\n            readonly IObserver<T> observer;\n            readonly IObservable<U> observable;\n\n            public AnonymousSubject(IObserver<T> observer, IObservable<U> observable)\n            {\n                this.observer = observer;\n                this.observable = observable;\n            }\n\n            public void OnCompleted()\n            {\n                observer.OnCompleted();\n            }\n\n            public void OnError(Exception error)\n            {\n                if (error == null) throw new ArgumentNullException(\"error\");\n\n                observer.OnError(error);\n            }\n\n            public void OnNext(T value)\n            {\n                observer.OnNext(value);\n            }\n\n            public IDisposable Subscribe(IObserver<U> observer)\n            {\n                if (observer == null) throw new ArgumentNullException(\"observer\");\n\n                return observable.Subscribe(observer);\n            }\n        }\n\n        class AnonymousSubject<T> : AnonymousSubject<T, T>, ISubject<T>\n        {\n            public AnonymousSubject(IObserver<T> observer, IObservable<T> observable)\n                : base(observer, observable)\n            {\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects/SubjectExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 359bf19588606a14fb0edc6efa97deaf\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Subjects.meta",
    "content": "fileFormatVersion: 2\nguid: 660d85cac8b3db241b8e6e333d493d38\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/IObservable.cs",
    "content": "﻿// defined from .NET Framework 4.0 and NETFX_CORE\n\nusing System;\n\n#if !(NETFX_CORE || NET_4_6 || NET_STANDARD_2_0 || UNITY_WSA_10_0)\n\nnamespace UniRx\n{\n    public interface IObservable<T>\n    {\n        IDisposable Subscribe(IObserver<T> observer);\n    }\n}\n\n#endif\n\nnamespace UniRx\n{\n    public interface IGroupedObservable<TKey, TElement> : IObservable<TElement>\n    {\n        TKey Key { get; }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/IObservable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9703f7aad3c6b334badd37c1b41d0d8f\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/IObserver.cs",
    "content": "﻿// defined from .NET Framework 4.0 and NETFX_CORE\n\n#if !(NETFX_CORE || NET_4_6 || NET_STANDARD_2_0 || UNITY_WSA_10_0)\n\nusing System;\n\nnamespace UniRx\n{\n    public interface IObserver<T>\n    {\n        void OnCompleted();\n        void OnError(Exception error);\n        void OnNext(T value);\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/IObserver.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1fc7a9cec9d3b644da7dbcf18ea16270\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/IOptimizedObservable.cs",
    "content": "﻿using System;\n\nnamespace UniRx\n{\n    public interface IOptimizedObservable<T> : IObservable<T>\n    {\n        bool IsRequiredSubscribeOnCurrentThread();\n    }\n\n    public static class OptimizedObservableExtensions\n    {\n        public static bool IsRequiredSubscribeOnCurrentThread<T>(this IObservable<T> source)\n        {\n            var obs = source as IOptimizedObservable<T>;\n            if (obs == null) return true;\n\n            return obs.IsRequiredSubscribeOnCurrentThread();\n        }\n\n        public static bool IsRequiredSubscribeOnCurrentThread<T>(this IObservable<T> source, IScheduler scheduler)\n        {\n            if (scheduler == Scheduler.CurrentThread) return true;\n\n            return IsRequiredSubscribeOnCurrentThread(source);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/IOptimizedObservable.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 5a2d3a7c73260e14a875d62586ae28f9\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/IProgress.cs",
    "content": "﻿// defined from .NET Framework 4.5 and NETFX_CORE\n\n#if !(NETFX_CORE || NET_4_6 || NET_STANDARD_2_0 || UNITY_WSA_10_0)\n\nusing System;\n\nnamespace UniRx\n{\n    public interface IProgress<T>\n    {\n        void Report(T value);\n    }\n\n    public class Progress<T> : IProgress<T>\n    {\n        readonly Action<T> report;\n\n        public Progress(Action<T> report)\n        {\n            this.report = report;\n        }\n\n        public void Report(T value)\n        {\n            report(value);\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/IProgress.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a38a024b6babf8d48b7e32f2f8fb8686\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/Tuple.cs",
    "content": "﻿// defined from .NET Framework 4.0 and NETFX_CORE\n// This code is basaed from mono/mcs, but some performance modified\n// 1. class to struct\n// 2. implements IEquatable<T1, T2,...>\n\n// note, we need to create ValueTuple or UniRxTuple...\n#if !(NETFX_CORE || NET_4_6 || NET_STANDARD_2_0 || UNITY_WSA_10_0)\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\n\nnamespace UniRx\n{\n    public interface IStructuralEquatable\n    {\n        bool Equals(object other, IEqualityComparer comparer);\n\n        int GetHashCode(IEqualityComparer comparer);\n    }\n\n    public interface IStructuralComparable\n    {\n        int CompareTo(object other, IComparer comparer);\n    }\n\n    interface ITuple\n    {\n        string ToString();\n    }\n\n    public static class Tuple\n    {\n        public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>> Create<T1, T2, T3, T4, T5, T6, T7, T8>\n            (\n             T1 item1,\n             T2 item2,\n             T3 item3,\n             T4 item4,\n             T5 item5,\n             T6 item6,\n             T7 item7,\n             T8 item8)\n        {\n            return new Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>>(item1, item2, item3, item4, item5, item6, item7, new Tuple<T8>(item8));\n        }\n\n        public static Tuple<T1, T2, T3, T4, T5, T6, T7> Create<T1, T2, T3, T4, T5, T6, T7>\n            (\n             T1 item1,\n             T2 item2,\n             T3 item3,\n             T4 item4,\n             T5 item5,\n             T6 item6,\n             T7 item7)\n        {\n            return new Tuple<T1, T2, T3, T4, T5, T6, T7>(item1, item2, item3, item4, item5, item6, item7);\n        }\n\n        public static Tuple<T1, T2, T3, T4, T5, T6> Create<T1, T2, T3, T4, T5, T6>\n            (\n             T1 item1,\n             T2 item2,\n             T3 item3,\n             T4 item4,\n             T5 item5,\n             T6 item6)\n        {\n            return new Tuple<T1, T2, T3, T4, T5, T6>(item1, item2, item3, item4, item5, item6);\n        }\n\n        public static Tuple<T1, T2, T3, T4, T5> Create<T1, T2, T3, T4, T5>\n            (\n             T1 item1,\n             T2 item2,\n             T3 item3,\n             T4 item4,\n             T5 item5)\n        {\n            return new Tuple<T1, T2, T3, T4, T5>(item1, item2, item3, item4, item5);\n        }\n\n        public static Tuple<T1, T2, T3, T4> Create<T1, T2, T3, T4>\n            (\n             T1 item1,\n             T2 item2,\n             T3 item3,\n             T4 item4)\n        {\n            return new Tuple<T1, T2, T3, T4>(item1, item2, item3, item4);\n        }\n\n        public static Tuple<T1, T2, T3> Create<T1, T2, T3>\n            (\n             T1 item1,\n             T2 item2,\n             T3 item3)\n        {\n            return new Tuple<T1, T2, T3>(item1, item2, item3);\n        }\n\n        public static Tuple<T1, T2> Create<T1, T2>\n            (\n             T1 item1,\n             T2 item2)\n        {\n            return new Tuple<T1, T2>(item1, item2);\n        }\n\n        public static Tuple<T1> Create<T1>\n            (\n             T1 item1)\n        {\n            return new Tuple<T1>(item1);\n        }\n    }\n\n    public partial class Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>\n    {\n        public Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, TRest rest)\n        {\n            this.item1 = item1;\n            this.item2 = item2;\n            this.item3 = item3;\n            this.item4 = item4;\n            this.item5 = item5;\n            this.item6 = item6;\n            this.item7 = item7;\n            this.rest = rest;\n\n            if (!(rest is ITuple))\n                throw new ArgumentException(\"rest\", \"The last element of an eight element tuple must be a Tuple.\");\n        }\n    }\n\n    [Serializable]\n    public struct Tuple<T1> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple, IEquatable<Tuple<T1>>\n    {\n        T1 item1;\n\n        public Tuple(T1 item1)\n        {\n            this.item1 = item1;\n        }\n\n        public T1 Item1\n        {\n            get { return item1; }\n        }\n\n        int IComparable.CompareTo(object obj)\n        {\n            return ((IStructuralComparable)this).CompareTo(obj, Comparer<object>.Default);\n        }\n\n        int IStructuralComparable.CompareTo(object other, IComparer comparer)\n        {\n            if (other == null) return 1;\n            if (!(other is Tuple<T1>))\n            {\n                throw new ArgumentException(\"other\");\n            }\n            var t = (Tuple<T1>)other;\n            return comparer.Compare(item1, t.item1);\n        }\n\n        public override bool Equals(object obj)\n        {\n            return ((IStructuralEquatable)this).Equals(obj, EqualityComparer<object>.Default);\n        }\n\n        bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)\n        {\n            if (!(other is Tuple<T1>))\n                return false;\n\n            var t = (Tuple<T1>)other;\n            return comparer.Equals(item1, t.item1);\n        }\n\n        public override int GetHashCode()\n        {\n            return EqualityComparer<T1>.Default.GetHashCode(item1);\n        }\n\n        int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)\n        {\n            return comparer.GetHashCode(item1);\n        }\n\n        string ITuple.ToString()\n        {\n            return String.Format(\"{0}\", item1);\n        }\n\n        public override string ToString()\n        {\n            return \"(\" + ((ITuple)this).ToString() + \")\";\n        }\n\n        public bool Equals(Tuple<T1> other)\n        {\n            return EqualityComparer<T1>.Default.Equals(item1, other.item1);\n        }\n    }\n\n    [Serializable]\n    public struct Tuple<T1, T2> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple, IEquatable<Tuple<T1, T2>>\n    {\n        T1 item1;\n        T2 item2;\n\n        public Tuple(T1 item1, T2 item2)\n        {\n            this.item1 = item1;\n            this.item2 = item2;\n        }\n\n        public T1 Item1\n        {\n            get { return item1; }\n        }\n\n        public T2 Item2\n        {\n            get { return item2; }\n        }\n\n        int IComparable.CompareTo(object obj)\n        {\n            return ((IStructuralComparable)this).CompareTo(obj, Comparer<object>.Default);\n        }\n\n        int IStructuralComparable.CompareTo(object other, IComparer comparer)\n        {\n            if (other == null) return 1;\n            if (!(other is Tuple<T1, T2>))\n            {\n                throw new ArgumentException(\"other\");\n            }\n            var t = (Tuple<T1, T2>)other;\n\n            int res = comparer.Compare(item1, t.item1);\n            if (res != 0) return res;\n            return comparer.Compare(item2, t.item2);\n        }\n\n        public override bool Equals(object obj)\n        {\n            return ((IStructuralEquatable)this).Equals(obj, EqualityComparer<object>.Default);\n        }\n\n        bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)\n        {\n            if (!(other is Tuple<T1, T2>))\n                return false;\n\n            var t = (Tuple<T1, T2>)other;\n            return comparer.Equals(item1, t.item1) &&\n                comparer.Equals(item2, t.item2);\n        }\n\n        public override int GetHashCode()\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n\n            int h0;\n            h0 = comparer1.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer2.GetHashCode(item2);\n            return h0;\n        }\n\n        int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)\n        {\n            int h0;\n            h0 = comparer.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(item2);\n            return h0;\n        }\n\n        string ITuple.ToString()\n        {\n            return String.Format(\"{0}, {1}\", item1, item2);\n        }\n\n        public override string ToString()\n        {\n            return \"(\" + ((ITuple)this).ToString() + \")\";\n        }\n\n        public bool Equals(Tuple<T1, T2> other)\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n\n            return comparer1.Equals(item1, other.item1) &&\n                comparer2.Equals(item2, other.item2);\n        }\n    }\n\n    [Serializable]\n    public struct Tuple<T1, T2, T3> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple, IEquatable<Tuple<T1, T2, T3>>\n    {\n        T1 item1;\n        T2 item2;\n        T3 item3;\n\n        public Tuple(T1 item1, T2 item2, T3 item3)\n        {\n            this.item1 = item1;\n            this.item2 = item2;\n            this.item3 = item3;\n        }\n\n        public T1 Item1\n        {\n            get { return item1; }\n        }\n\n        public T2 Item2\n        {\n            get { return item2; }\n        }\n\n        public T3 Item3\n        {\n            get { return item3; }\n        }\n\n        int IComparable.CompareTo(object obj)\n        {\n            return ((IStructuralComparable)this).CompareTo(obj, Comparer<object>.Default);\n        }\n\n        int IStructuralComparable.CompareTo(object other, IComparer comparer)\n        {\n            if (other == null) return 1;\n            if (!(other is Tuple<T1, T2, T3>))\n            {\n                throw new ArgumentException(\"other\");\n            }\n            var t = (Tuple<T1, T2, T3>)other;\n\n            int res = comparer.Compare(item1, t.item1);\n            if (res != 0) return res;\n            res = comparer.Compare(item2, t.item2);\n            if (res != 0) return res;\n            return comparer.Compare(item3, t.item3);\n        }\n\n        public override bool Equals(object obj)\n        {\n            return ((IStructuralEquatable)this).Equals(obj, EqualityComparer<object>.Default);\n        }\n\n        bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)\n        {\n            if (!(other is Tuple<T1, T2, T3>))\n                return false;\n\n            var t = (Tuple<T1, T2, T3>)other;\n            return comparer.Equals(item1, t.item1) &&\n                comparer.Equals(item2, t.item2) &&\n                comparer.Equals(item3, t.item3);\n        }\n\n        public override int GetHashCode()\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n\n            int h0;\n            h0 = comparer1.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer2.GetHashCode(item2);\n            h0 = (h0 << 5) + h0 ^ comparer3.GetHashCode(item3);\n            return h0;\n        }\n\n        int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)\n        {\n            int h0;\n            h0 = comparer.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(item2);\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(item3);\n            return h0;\n        }\n\n        string ITuple.ToString()\n        {\n            return String.Format(\"{0}, {1}, {2}\", item1, item2, item3);\n        }\n\n        public override string ToString()\n        {\n            return \"(\" + ((ITuple)this).ToString() + \")\";\n        }\n\n        public bool Equals(Tuple<T1, T2, T3> other)\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n\n            return comparer1.Equals(item1, other.item1) &&\n                comparer2.Equals(item2, other.item2) &&\n                comparer3.Equals(item3, other.item3);\n        }\n    }\n\n    [Serializable]\n    public struct Tuple<T1, T2, T3, T4> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple, IEquatable<Tuple<T1, T2, T3, T4>>\n    {\n        T1 item1;\n        T2 item2;\n        T3 item3;\n        T4 item4;\n\n        public Tuple(T1 item1, T2 item2, T3 item3, T4 item4)\n        {\n            this.item1 = item1;\n            this.item2 = item2;\n            this.item3 = item3;\n            this.item4 = item4;\n        }\n\n        public T1 Item1\n        {\n            get { return item1; }\n        }\n\n        public T2 Item2\n        {\n            get { return item2; }\n        }\n\n        public T3 Item3\n        {\n            get { return item3; }\n        }\n\n        public T4 Item4\n        {\n            get { return item4; }\n        }\n\n        int IComparable.CompareTo(object obj)\n        {\n            return ((IStructuralComparable)this).CompareTo(obj, Comparer<object>.Default);\n        }\n\n        int IStructuralComparable.CompareTo(object other, IComparer comparer)\n        {\n            if (other == null) return 1;\n            if (!(other is Tuple<T1, T2, T3, T4>))\n            {\n                throw new ArgumentException(\"other\");\n            }\n            var t = (Tuple<T1, T2, T3, T4>)other;\n\n            int res = comparer.Compare(item1, t.item1);\n            if (res != 0) return res;\n            res = comparer.Compare(item2, t.item2);\n            if (res != 0) return res;\n            res = comparer.Compare(item3, t.item3);\n            if (res != 0) return res;\n            return comparer.Compare(item4, t.item4);\n        }\n\n        public override bool Equals(object obj)\n        {\n            return ((IStructuralEquatable)this).Equals(obj, EqualityComparer<object>.Default);\n        }\n\n        bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)\n        {\n            if (!(other is Tuple<T1, T2, T3, T4>))\n                return false;\n            var t = (Tuple<T1, T2, T3, T4>)other;\n\n            return comparer.Equals(item1, t.item1) &&\n                comparer.Equals(item2, t.item2) &&\n                comparer.Equals(item3, t.item3) &&\n                comparer.Equals(item4, t.item4);\n        }\n\n        public override int GetHashCode()\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n\n            int h0, h1;\n            h0 = comparer1.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer2.GetHashCode(item2);\n            h1 = comparer3.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer4.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            return h0;\n        }\n\n        int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)\n        {\n            int h0, h1;\n            h0 = comparer.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(item2);\n            h1 = comparer.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            return h0;\n        }\n\n        string ITuple.ToString()\n        {\n            return String.Format(\"{0}, {1}, {2}, {3}\", item1, item2, item3, item4);\n        }\n\n        public override string ToString()\n        {\n            return \"(\" + ((ITuple)this).ToString() + \")\";\n        }\n\n        public bool Equals(Tuple<T1, T2, T3, T4> other)\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n\n            return comparer1.Equals(item1, other.item1) &&\n                comparer2.Equals(item2, other.item2) &&\n                comparer3.Equals(item3, other.item3) &&\n                comparer4.Equals(item4, other.item4);\n        }\n    }\n\n    [Serializable]\n    public struct Tuple<T1, T2, T3, T4, T5> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple, IEquatable<Tuple<T1, T2, T3, T4, T5>>\n    {\n        T1 item1;\n        T2 item2;\n        T3 item3;\n        T4 item4;\n        T5 item5;\n\n        public Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5)\n        {\n            this.item1 = item1;\n            this.item2 = item2;\n            this.item3 = item3;\n            this.item4 = item4;\n            this.item5 = item5;\n        }\n\n        public T1 Item1\n        {\n            get { return item1; }\n        }\n\n        public T2 Item2\n        {\n            get { return item2; }\n        }\n\n        public T3 Item3\n        {\n            get { return item3; }\n        }\n\n        public T4 Item4\n        {\n            get { return item4; }\n        }\n\n        public T5 Item5\n        {\n            get { return item5; }\n        }\n\n        int IComparable.CompareTo(object obj)\n        {\n            return ((IStructuralComparable)this).CompareTo(obj, Comparer<object>.Default);\n        }\n\n        int IStructuralComparable.CompareTo(object other, IComparer comparer)\n        {\n            if (other == null) return 1;\n            if (!(other is Tuple<T1, T2, T3, T4, T5>))\n            {\n                throw new ArgumentException(\"other\");\n            }\n            var t = (Tuple<T1, T2, T3, T4, T5>)other;\n\n            int res = comparer.Compare(item1, t.item1);\n            if (res != 0) return res;\n            res = comparer.Compare(item2, t.item2);\n            if (res != 0) return res;\n            res = comparer.Compare(item3, t.item3);\n            if (res != 0) return res;\n            res = comparer.Compare(item4, t.item4);\n            if (res != 0) return res;\n            return comparer.Compare(item5, t.item5);\n        }\n\n        public override bool Equals(object obj)\n        {\n            return ((IStructuralEquatable)this).Equals(obj, EqualityComparer<object>.Default);\n        }\n\n        bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)\n        {\n            if (!(other is Tuple<T1, T2, T3, T4, T5>))\n                return false;\n            var t = (Tuple<T1, T2, T3, T4, T5>)other;\n\n            return comparer.Equals(item1, t.item1) &&\n                comparer.Equals(item2, t.item2) &&\n                comparer.Equals(item3, t.item3) &&\n                comparer.Equals(item4, t.item4) &&\n                comparer.Equals(item5, t.item5);\n        }\n\n        public override int GetHashCode()\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n            var comparer5 = EqualityComparer<T5>.Default;\n\n            int h0, h1;\n            h0 = comparer1.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer2.GetHashCode(item2);\n            h1 = comparer3.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer4.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            h0 = (h0 << 5) + h0 ^ comparer5.GetHashCode(item5);\n            return h0;\n        }\n\n        int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)\n        {\n            int h0, h1;\n            h0 = comparer.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(item2);\n            h1 = comparer.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(item5);\n            return h0;\n        }\n\n        string ITuple.ToString()\n        {\n            return String.Format(\"{0}, {1}, {2}, {3}, {4}\", item1, item2, item3, item4, item5);\n        }\n\n        public override string ToString()\n        {\n            return \"(\" + ((ITuple)this).ToString() + \")\";\n        }\n\n        public bool Equals(Tuple<T1, T2, T3, T4, T5> other)\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n            var comparer5 = EqualityComparer<T5>.Default;\n\n            return comparer1.Equals(item1, other.Item1) &&\n                comparer2.Equals(item2, other.Item2) &&\n                comparer3.Equals(item3, other.Item3) &&\n                comparer4.Equals(item4, other.Item4) &&\n                comparer5.Equals(item5, other.Item5);\n        }\n    }\n\n    [Serializable]\n    public struct Tuple<T1, T2, T3, T4, T5, T6> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple, IEquatable<Tuple<T1, T2, T3, T4, T5, T6>>\n    {\n        T1 item1;\n        T2 item2;\n        T3 item3;\n        T4 item4;\n        T5 item5;\n        T6 item6;\n\n        public Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6)\n        {\n            this.item1 = item1;\n            this.item2 = item2;\n            this.item3 = item3;\n            this.item4 = item4;\n            this.item5 = item5;\n            this.item6 = item6;\n        }\n\n        public T1 Item1\n        {\n            get { return item1; }\n        }\n\n        public T2 Item2\n        {\n            get { return item2; }\n        }\n\n        public T3 Item3\n        {\n            get { return item3; }\n        }\n\n        public T4 Item4\n        {\n            get { return item4; }\n        }\n\n        public T5 Item5\n        {\n            get { return item5; }\n        }\n\n        public T6 Item6\n        {\n            get { return item6; }\n        }\n\n        int IComparable.CompareTo(object obj)\n        {\n            return ((IStructuralComparable)this).CompareTo(obj, Comparer<object>.Default);\n        }\n\n        int IStructuralComparable.CompareTo(object other, IComparer comparer)\n        {\n            if (other == null) return 1;\n            if (!(other is Tuple<T1, T2, T3, T4, T5, T6>))\n            {\n                throw new ArgumentException(\"other\");\n            }\n            var t = (Tuple<T1, T2, T3, T4, T5, T6>)other;\n\n            int res = comparer.Compare(item1, t.item1);\n            if (res != 0) return res;\n            res = comparer.Compare(item2, t.item2);\n            if (res != 0) return res;\n            res = comparer.Compare(item3, t.item3);\n            if (res != 0) return res;\n            res = comparer.Compare(item4, t.item4);\n            if (res != 0) return res;\n            res = comparer.Compare(item5, t.item5);\n            if (res != 0) return res;\n            return comparer.Compare(item6, t.item6);\n        }\n\n        public override bool Equals(object obj)\n        {\n            return ((IStructuralEquatable)this).Equals(obj, EqualityComparer<object>.Default);\n        }\n\n        bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)\n        {\n            if (!(other is Tuple<T1, T2, T3, T4, T5, T6>))\n                return false;\n            var t = (Tuple<T1, T2, T3, T4, T5, T6>)other;\n\n            return comparer.Equals(item1, t.item1) &&\n                comparer.Equals(item2, t.item2) &&\n                comparer.Equals(item3, t.item3) &&\n                comparer.Equals(item4, t.item4) &&\n                comparer.Equals(item5, t.item5) &&\n                comparer.Equals(item6, t.item6);\n        }\n\n        public override int GetHashCode()\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n            var comparer5 = EqualityComparer<T5>.Default;\n            var comparer6 = EqualityComparer<T6>.Default;\n\n            int h0, h1;\n            h0 = comparer1.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer2.GetHashCode(item2);\n            h1 = comparer3.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer4.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            h1 = comparer5.GetHashCode(item5);\n            h1 = (h1 << 5) + h1 ^ comparer6.GetHashCode(item6);\n            h0 = (h0 << 5) + h0 ^ h1;\n            return h0;\n        }\n\n        int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)\n        {\n            int h0, h1;\n            h0 = comparer.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(item2);\n            h1 = comparer.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            h1 = comparer.GetHashCode(item5);\n            h1 = (h1 << 5) + h1 ^ comparer.GetHashCode(item6);\n            h0 = (h0 << 5) + h0 ^ h1;\n            return h0;\n        }\n\n        string ITuple.ToString()\n        {\n            return String.Format(\"{0}, {1}, {2}, {3}, {4}, {5}\", item1, item2, item3, item4, item5, item6);\n        }\n\n        public override string ToString()\n        {\n            return \"(\" + ((ITuple)this).ToString() + \")\";\n        }\n\n        public bool Equals(Tuple<T1, T2, T3, T4, T5, T6> other)\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n            var comparer5 = EqualityComparer<T5>.Default;\n            var comparer6 = EqualityComparer<T6>.Default;\n\n            return comparer1.Equals(item1, other.Item1) &&\n                comparer2.Equals(item2, other.Item2) &&\n                comparer3.Equals(item3, other.Item3) &&\n                comparer4.Equals(item4, other.Item4) &&\n                comparer5.Equals(item5, other.Item5) &&\n                comparer6.Equals(item6, other.Item6);\n        }\n    }\n\n    [Serializable]\n    public struct Tuple<T1, T2, T3, T4, T5, T6, T7> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple, IEquatable<Tuple<T1, T2, T3, T4, T5, T6, T7>>\n    {\n        T1 item1;\n        T2 item2;\n        T3 item3;\n        T4 item4;\n        T5 item5;\n        T6 item6;\n        T7 item7;\n\n        public Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7)\n        {\n            this.item1 = item1;\n            this.item2 = item2;\n            this.item3 = item3;\n            this.item4 = item4;\n            this.item5 = item5;\n            this.item6 = item6;\n            this.item7 = item7;\n        }\n\n        public T1 Item1\n        {\n            get { return item1; }\n        }\n\n        public T2 Item2\n        {\n            get { return item2; }\n        }\n\n        public T3 Item3\n        {\n            get { return item3; }\n        }\n\n        public T4 Item4\n        {\n            get { return item4; }\n        }\n\n        public T5 Item5\n        {\n            get { return item5; }\n        }\n\n        public T6 Item6\n        {\n            get { return item6; }\n        }\n\n        public T7 Item7\n        {\n            get { return item7; }\n        }\n\n        int IComparable.CompareTo(object obj)\n        {\n            return ((IStructuralComparable)this).CompareTo(obj, Comparer<object>.Default);\n        }\n\n        int IStructuralComparable.CompareTo(object other, IComparer comparer)\n        {\n            if (other == null) return 1;\n            if (!(other is Tuple<T1, T2, T3, T4, T5, T6, T7>))\n            {\n                throw new ArgumentException(\"other\");\n            }\n            var t = (Tuple<T1, T2, T3, T4, T5, T6, T7>)other;\n\n            int res = comparer.Compare(item1, t.item1);\n            if (res != 0) return res;\n            res = comparer.Compare(item2, t.item2);\n            if (res != 0) return res;\n            res = comparer.Compare(item3, t.item3);\n            if (res != 0) return res;\n            res = comparer.Compare(item4, t.item4);\n            if (res != 0) return res;\n            res = comparer.Compare(item5, t.item5);\n            if (res != 0) return res;\n            res = comparer.Compare(item6, t.item6);\n            if (res != 0) return res;\n            return comparer.Compare(item7, t.item7);\n        }\n\n        public override bool Equals(object obj)\n        {\n            return ((IStructuralEquatable)this).Equals(obj, EqualityComparer<object>.Default);\n        }\n\n        bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)\n        {\n            if (!(other is Tuple<T1, T2, T3, T4, T5, T6, T7>))\n                return false;\n            var t = (Tuple<T1, T2, T3, T4, T5, T6, T7>)other;\n\n            return comparer.Equals(item1, t.item1) &&\n                comparer.Equals(item2, t.item2) &&\n                comparer.Equals(item3, t.item3) &&\n                comparer.Equals(item4, t.item4) &&\n                comparer.Equals(item5, t.item5) &&\n                comparer.Equals(item6, t.item6) &&\n                comparer.Equals(item7, t.item7);\n        }\n\n        public override int GetHashCode()\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n            var comparer5 = EqualityComparer<T5>.Default;\n            var comparer6 = EqualityComparer<T6>.Default;\n            var comparer7 = EqualityComparer<T7>.Default;\n\n            int h0, h1;\n            h0 = comparer1.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer2.GetHashCode(item2);\n            h1 = comparer3.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer4.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            h1 = comparer5.GetHashCode(item5);\n            h1 = (h1 << 5) + h1 ^ comparer6.GetHashCode(item6);\n            h1 = (h1 << 5) + h1 ^ comparer7.GetHashCode(item7);\n            h0 = (h0 << 5) + h0 ^ h1;\n            return h0;\n        }\n\n        int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)\n        {\n            int h0, h1;\n            h0 = comparer.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(item2);\n            h1 = comparer.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            h1 = comparer.GetHashCode(item5);\n            h1 = (h1 << 5) + h1 ^ comparer.GetHashCode(item6);\n            h1 = (h1 << 5) + h1 ^ comparer.GetHashCode(item7);\n            h0 = (h0 << 5) + h0 ^ h1;\n            return h0;\n        }\n\n        string ITuple.ToString()\n        {\n            return String.Format(\"{0}, {1}, {2}, {3}, {4}, {5}, {6}\", item1, item2, item3, item4, item5, item6, item7);\n        }\n\n        public override string ToString()\n        {\n            return \"(\" + ((ITuple)this).ToString() + \")\";\n        }\n\n        public bool Equals(Tuple<T1, T2, T3, T4, T5, T6, T7> other)\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n            var comparer5 = EqualityComparer<T5>.Default;\n            var comparer6 = EqualityComparer<T6>.Default;\n            var comparer7 = EqualityComparer<T7>.Default;\n\n            return comparer1.Equals(item1, other.Item1) &&\n                comparer2.Equals(item2, other.Item2) &&\n                comparer3.Equals(item3, other.Item3) &&\n                comparer4.Equals(item4, other.Item4) &&\n                comparer5.Equals(item5, other.Item5) &&\n                comparer6.Equals(item6, other.Item6) &&\n                comparer7.Equals(item7, other.Item7);\n        }\n    }\n\n    [Serializable]\n    public partial class Tuple<T1, T2, T3, T4, T5, T6, T7, TRest> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple, IEquatable<Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>>\n    {\n        T1 item1;\n        T2 item2;\n        T3 item3;\n        T4 item4;\n        T5 item5;\n        T6 item6;\n        T7 item7;\n        TRest rest;\n\n        public T1 Item1\n        {\n            get { return item1; }\n        }\n\n        public T2 Item2\n        {\n            get { return item2; }\n        }\n\n        public T3 Item3\n        {\n            get { return item3; }\n        }\n\n        public T4 Item4\n        {\n            get { return item4; }\n        }\n\n        public T5 Item5\n        {\n            get { return item5; }\n        }\n\n        public T6 Item6\n        {\n            get { return item6; }\n        }\n\n        public T7 Item7\n        {\n            get { return item7; }\n        }\n\n        public TRest Rest\n        {\n            get { return rest; }\n        }\n\n        int IComparable.CompareTo(object obj)\n        {\n            return ((IStructuralComparable)this).CompareTo(obj, Comparer<object>.Default);\n        }\n\n        int IStructuralComparable.CompareTo(object other, IComparer comparer)\n        {\n            if (other == null) return 1;\n            if (!(other is Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>))\n            {\n                throw new ArgumentException(\"other\");\n            }\n            var t = (Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>)other;\n\n            int res = comparer.Compare(item1, t.item1);\n            if (res != 0) return res;\n            res = comparer.Compare(item2, t.item2);\n            if (res != 0) return res;\n            res = comparer.Compare(item3, t.item3);\n            if (res != 0) return res;\n            res = comparer.Compare(item4, t.item4);\n            if (res != 0) return res;\n            res = comparer.Compare(item5, t.item5);\n            if (res != 0) return res;\n            res = comparer.Compare(item6, t.item6);\n            if (res != 0) return res;\n            res = comparer.Compare(item7, t.item7);\n            if (res != 0) return res;\n            return comparer.Compare(rest, t.rest);\n        }\n\n        public override bool Equals(object obj)\n        {\n            return ((IStructuralEquatable)this).Equals(obj, EqualityComparer<object>.Default);\n        }\n\n        bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)\n        {\n            if (!(other is Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>))\n                return false;\n            var t = (Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>)other;\n\n            return comparer.Equals(item1, t.item1) &&\n                comparer.Equals(item2, t.item2) &&\n                comparer.Equals(item3, t.item3) &&\n                comparer.Equals(item4, t.item4) &&\n                comparer.Equals(item5, t.item5) &&\n                comparer.Equals(item6, t.item6) &&\n                comparer.Equals(item7, t.item7) &&\n                comparer.Equals(rest, t.rest);\n        }\n\n        public override int GetHashCode()\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n            var comparer5 = EqualityComparer<T5>.Default;\n            var comparer6 = EqualityComparer<T6>.Default;\n            var comparer7 = EqualityComparer<T7>.Default;\n            var comparer8 = EqualityComparer<TRest>.Default;\n\n            int h0, h1, h2;\n            h0 = comparer1.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer2.GetHashCode(item2);\n            h1 = comparer3.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer4.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            h1 = comparer5.GetHashCode(item5);\n            h1 = (h1 << 5) + h1 ^ comparer6.GetHashCode(item6);\n            h2 = comparer7.GetHashCode(item7);\n            h2 = (h2 << 5) + h2 ^ comparer8.GetHashCode(rest);\n            h1 = (h1 << 5) + h1 ^ h2;\n            h0 = (h0 << 5) + h0 ^ h1;\n            return h0;\n        }\n\n        int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)\n        {\n            int h0, h1, h2;\n            h0 = comparer.GetHashCode(item1);\n            h0 = (h0 << 5) + h0 ^ comparer.GetHashCode(item2);\n            h1 = comparer.GetHashCode(item3);\n            h1 = (h1 << 5) + h1 ^ comparer.GetHashCode(item4);\n            h0 = (h0 << 5) + h0 ^ h1;\n            h1 = comparer.GetHashCode(item5);\n            h1 = (h1 << 5) + h1 ^ comparer.GetHashCode(item6);\n            h2 = comparer.GetHashCode(item7);\n            h2 = (h2 << 5) + h2 ^ comparer.GetHashCode(rest);\n            h1 = (h1 << 5) + h1 ^ h2;\n            h0 = (h0 << 5) + h0 ^ h1;\n            return h0;\n        }\n\n        string ITuple.ToString()\n        {\n            return String.Format(\"{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}\", item1, item2, item3, item4, item5, item6, item7, ((ITuple)rest).ToString());\n        }\n\n        public override string ToString()\n        {\n            return \"(\" + ((ITuple)this).ToString() + \")\";\n        }\n\n        public bool Equals(Tuple<T1, T2, T3, T4, T5, T6, T7, TRest> other)\n        {\n            var comparer1 = EqualityComparer<T1>.Default;\n            var comparer2 = EqualityComparer<T2>.Default;\n            var comparer3 = EqualityComparer<T3>.Default;\n            var comparer4 = EqualityComparer<T4>.Default;\n            var comparer5 = EqualityComparer<T5>.Default;\n            var comparer6 = EqualityComparer<T6>.Default;\n            var comparer7 = EqualityComparer<T7>.Default;\n            var comparer8 = EqualityComparer<TRest>.Default;\n\n            return comparer1.Equals(item1, other.Item1) &&\n                comparer2.Equals(item2, other.Item2) &&\n                comparer3.Equals(item3, other.Item3) &&\n                comparer4.Equals(item4, other.Item4) &&\n                comparer5.Equals(item5, other.Item5) &&\n                comparer6.Equals(item6, other.Item6) &&\n                comparer7.Equals(item7, other.Item7) &&\n                comparer8.Equals(rest, other.rest);\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/Tuple.cs.meta",
    "content": "fileFormatVersion: 2\nguid: be811500a5640704b92de622c9202d48\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/Unit.cs",
    "content": "﻿using System;\n\nnamespace UniRx\n{\n    [Serializable]\n    public struct Unit : IEquatable<Unit>\n    {\n        static readonly Unit @default = new Unit();\n\n        public static Unit Default { get { return @default; } }\n\n        public static bool operator ==(Unit first, Unit second)\n        {\n            return true;\n        }\n\n        public static bool operator !=(Unit first, Unit second)\n        {\n            return false;\n        }\n\n        public bool Equals(Unit other)\n        {\n            return true;\n        }\n        public override bool Equals(object obj)\n        {\n            return obj is Unit;\n        }\n\n        public override int GetHashCode()\n        {\n            return 0;\n        }\n\n        public override string ToString()\n        {\n            return \"()\";\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System/Unit.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 14f6907c0ae17e64c8fc34f08c3038a4\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/System.meta",
    "content": "fileFormatVersion: 2\nguid: e38b8fd0fa968d0438280dbb22012b81\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Tasks/TaskObservableExtensions.cs",
    "content": "﻿// this code is borrowed from RxOfficial(rx.codeplex.com) and modified\n\n#if (NET_4_6 || NET_STANDARD_2_0)\n\nusing System;\nusing System.Threading.Tasks;\nusing System.Threading;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Provides a set of static methods for converting tasks to observable sequences.\n    /// </summary>\n    public static class TaskObservableExtensions\n    {\n        /// <summary>\n        /// Returns an observable sequence that signals when the task completes.\n        /// </summary>\n        /// <param name=\"task\">Task to convert to an observable sequence.</param>\n        /// <returns>An observable sequence that produces a unit value when the task completes, or propagates the exception produced by the task.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"task\"/> is null.</exception>\n        /// <remarks>If the specified task object supports cancellation, consider using <see cref=\"Observable.FromAsync(Func{CancellationToken, Task})\"/> instead.</remarks>\n        public static IObservable<Unit> ToObservable(this Task task)\n        {\n            if (task == null)\n                throw new ArgumentNullException(\"task\");\n\n            return ToObservableImpl(task, null);\n        }\n\n        /// <summary>\n        /// Returns an observable sequence that signals when the task completes.\n        /// </summary>\n        /// <param name=\"task\">Task to convert to an observable sequence.</param>\n        /// <param name=\"scheduler\">Scheduler on which to notify observers about completion, cancellation or failure.</param>\n        /// <returns>An observable sequence that produces a unit value when the task completes, or propagates the exception produced by the task.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"task\"/> is null or <paramref name=\"scheduler\"/> is null.</exception>\n        /// <remarks>If the specified task object supports cancellation, consider using <see cref=\"Observable.FromAsync(Func{CancellationToken, Task})\"/> instead.</remarks>\n        public static IObservable<Unit> ToObservable(this Task task, IScheduler scheduler)\n        {\n            if (task == null)\n                throw new ArgumentNullException(\"task\");\n            if (scheduler == null)\n                throw new ArgumentNullException(\"scheduler\");\n\n            return ToObservableImpl(task, scheduler);\n        }\n\n        private static IObservable<Unit> ToObservableImpl(Task task, IScheduler scheduler)\n        {\n            var res = default(IObservable<Unit>);\n\n            if (task.IsCompleted)\n            {\n                scheduler = scheduler ?? Scheduler.Immediate;\n\n                switch (task.Status)\n                {\n                    case TaskStatus.RanToCompletion:\n                        res = Observable.Return<Unit>(Unit.Default, scheduler);\n                        break;\n                    case TaskStatus.Faulted:\n                        res = Observable.Throw<Unit>(task.Exception.InnerException, scheduler);\n                        break;\n                    case TaskStatus.Canceled:\n                        res = Observable.Throw<Unit>(new TaskCanceledException(task), scheduler);\n                        break;\n                }\n            }\n            else\n            {\n                //\n                // Separate method to avoid closure in synchronous completion case.\n                //\n                res = ToObservableSlow(task, scheduler);\n            }\n\n            return res;\n        }\n\n        private static IObservable<Unit> ToObservableSlow(Task task, IScheduler scheduler)\n        {\n            var subject = new AsyncSubject<Unit>();\n\n            var options = GetTaskContinuationOptions(scheduler);\n\n            task.ContinueWith(t => ToObservableDone(task, subject), options);\n\n            return ToObservableResult(subject, scheduler);\n        }\n\n        private static void ToObservableDone(Task task, IObserver<Unit> subject)\n        {\n            switch (task.Status)\n            {\n                case TaskStatus.RanToCompletion:\n                    subject.OnNext(Unit.Default);\n                    subject.OnCompleted();\n                    break;\n                case TaskStatus.Faulted:\n                    subject.OnError(task.Exception.InnerException);\n                    break;\n                case TaskStatus.Canceled:\n                    subject.OnError(new TaskCanceledException(task));\n                    break;\n            }\n        }\n\n        /// <summary>\n        /// Returns an observable sequence that propagates the result of the task.\n        /// </summary>\n        /// <typeparam name=\"TResult\">The type of the result produced by the task.</typeparam>\n        /// <param name=\"task\">Task to convert to an observable sequence.</param>\n        /// <returns>An observable sequence that produces the task's result, or propagates the exception produced by the task.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"task\"/> is null.</exception>\n        /// <remarks>If the specified task object supports cancellation, consider using <see cref=\"Observable.FromAsync{TResult}(Func{CancellationToken, Task{TResult}})\"/> instead.</remarks>\n        public static IObservable<TResult> ToObservable<TResult>(this Task<TResult> task)\n        {\n            if (task == null)\n                throw new ArgumentNullException(\"task\");\n\n            return ToObservableImpl(task, null);\n        }\n\n        /// <summary>\n        /// Returns an observable sequence that propagates the result of the task.\n        /// </summary>\n        /// <typeparam name=\"TResult\">The type of the result produced by the task.</typeparam>\n        /// <param name=\"task\">Task to convert to an observable sequence.</param>\n        /// <param name=\"scheduler\">Scheduler on which to notify observers about completion, cancellation or failure.</param>\n        /// <returns>An observable sequence that produces the task's result, or propagates the exception produced by the task.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"task\"/> is null or <paramref name=\"scheduler\"/> is null.</exception>\n        /// <remarks>If the specified task object supports cancellation, consider using <see cref=\"Observable.FromAsync{TResult}(Func{CancellationToken, Task{TResult}})\"/> instead.</remarks>\n        public static IObservable<TResult> ToObservable<TResult>(this Task<TResult> task, IScheduler scheduler)\n        {\n            if (task == null)\n                throw new ArgumentNullException(\"task\");\n            if (scheduler == null)\n                throw new ArgumentNullException(\"scheduler\");\n\n            return ToObservableImpl(task, scheduler);\n        }\n\n        private static IObservable<TResult> ToObservableImpl<TResult>(Task<TResult> task, IScheduler scheduler)\n        {\n            var res = default(IObservable<TResult>);\n\n            if (task.IsCompleted)\n            {\n                scheduler = scheduler ?? Scheduler.Immediate;\n\n                switch (task.Status)\n                {\n                    case TaskStatus.RanToCompletion:\n                        res = Observable.Return<TResult>(task.Result, scheduler);\n                        break;\n                    case TaskStatus.Faulted:\n                        res = Observable.Throw<TResult>(task.Exception.InnerException, scheduler);\n                        break;\n                    case TaskStatus.Canceled:\n                        res = Observable.Throw<TResult>(new TaskCanceledException(task), scheduler);\n                        break;\n                }\n            }\n            else\n            {\n                //\n                // Separate method to avoid closure in synchronous completion case.\n                //\n                res = ToObservableSlow(task, scheduler);\n            }\n\n            return res;\n        }\n\n        private static IObservable<TResult> ToObservableSlow<TResult>(Task<TResult> task, IScheduler scheduler)\n        {\n            var subject = new AsyncSubject<TResult>();\n\n            var options = GetTaskContinuationOptions(scheduler);\n\n            task.ContinueWith(t => ToObservableDone(task, subject), options);\n\n            return ToObservableResult(subject, scheduler);\n        }\n\n        private static void ToObservableDone<TResult>(Task<TResult> task, IObserver<TResult> subject)\n        {\n            switch (task.Status)\n            {\n                case TaskStatus.RanToCompletion:\n                    subject.OnNext(task.Result);\n                    subject.OnCompleted();\n                    break;\n                case TaskStatus.Faulted:\n                    subject.OnError(task.Exception.InnerException);\n                    break;\n                case TaskStatus.Canceled:\n                    subject.OnError(new TaskCanceledException(task));\n                    break;\n            }\n        }\n\n        private static TaskContinuationOptions GetTaskContinuationOptions(IScheduler scheduler)\n        {\n            var options = TaskContinuationOptions.None;\n\n            if (scheduler != null)\n            {\n                //\n                // We explicitly don't special-case the immediate scheduler here. If the user asks for a\n                // synchronous completion, we'll try our best. However, there's no guarantee due to the\n                // internal stack probing in the TPL, which may cause asynchronous completion on a thread\n                // pool thread in order to avoid stack overflows. Therefore we can only attempt to be more\n                // efficient in the case where the user specified a scheduler, hence we know that the\n                // continuation will trigger a scheduling operation. In case of the immediate scheduler,\n                // it really becomes \"immediate scheduling\" wherever the TPL decided to run the continuation,\n                // i.e. not necessarily where the task was completed from.\n                //\n                options |= TaskContinuationOptions.ExecuteSynchronously;\n            }\n\n            return options;\n        }\n\n        private static IObservable<TResult> ToObservableResult<TResult>(AsyncSubject<TResult> subject, IScheduler scheduler)\n        {\n            if (scheduler != null)\n            {\n                return subject.ObserveOn(scheduler);\n            }\n            else\n            {\n                return subject.AsObservable();\n            }\n        }\n\n        /// <summary>\n        /// Returns a task that will receive the last value or the exception produced by the observable sequence.\n        /// </summary>\n        /// <typeparam name=\"TResult\">The type of the elements in the source sequence.</typeparam>\n        /// <param name=\"observable\">Observable sequence to convert to a task.</param>\n        /// <returns>A task that will receive the last element or the exception produced by the observable sequence.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"observable\"/> is null.</exception>\n        public static Task<TResult> ToTask<TResult>(this IObservable<TResult> observable)\n        {\n            if (observable == null)\n                throw new ArgumentNullException(\"observable\");\n\n            return observable.ToTask(new CancellationToken(), null);\n        }\n\n        /// <summary>\n        /// Returns a task that will receive the last value or the exception produced by the observable sequence.\n        /// </summary>\n        /// <typeparam name=\"TResult\">The type of the elements in the source sequence.</typeparam>\n        /// <param name=\"observable\">Observable sequence to convert to a task.</param>\n        /// <param name=\"state\">The state to use as the underlying task's AsyncState.</param>\n        /// <returns>A task that will receive the last element or the exception produced by the observable sequence.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"observable\"/> is null.</exception>\n        public static Task<TResult> ToTask<TResult>(this IObservable<TResult> observable, object state)\n        {\n            if (observable == null)\n                throw new ArgumentNullException(\"observable\");\n\n            return observable.ToTask(new CancellationToken(), state);\n        }\n\n        /// <summary>\n        /// Returns a task that will receive the last value or the exception produced by the observable sequence.\n        /// </summary>\n        /// <typeparam name=\"TResult\">The type of the elements in the source sequence.</typeparam>\n        /// <param name=\"observable\">Observable sequence to convert to a task.</param>\n        /// <param name=\"cancellationToken\">Cancellation token that can be used to cancel the task, causing unsubscription from the observable sequence.</param>\n        /// <returns>A task that will receive the last element or the exception produced by the observable sequence.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"observable\"/> is null.</exception>\n        public static Task<TResult> ToTask<TResult>(this IObservable<TResult> observable, CancellationToken cancellationToken)\n        {\n            if (observable == null)\n                throw new ArgumentNullException(\"observable\");\n\n            return observable.ToTask(cancellationToken, null);\n        }\n\n        /// <summary>\n        /// Returns a task that will receive the last value or the exception produced by the observable sequence.\n        /// </summary>\n        /// <typeparam name=\"TResult\">The type of the elements in the source sequence.</typeparam>\n        /// <param name=\"observable\">Observable sequence to convert to a task.</param>\n        /// <param name=\"cancellationToken\">Cancellation token that can be used to cancel the task, causing unsubscription from the observable sequence.</param>\n        /// <param name=\"state\">The state to use as the underlying task's AsyncState.</param>\n        /// <returns>A task that will receive the last element or the exception produced by the observable sequence.</returns>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"observable\"/> is null.</exception>\n        public static Task<TResult> ToTask<TResult>(this IObservable<TResult> observable, CancellationToken cancellationToken, object state)\n        {\n            if (observable == null)\n                throw new ArgumentNullException(\"observable\");\n\n            var hasValue = false;\n            var lastValue = default(TResult);\n\n            var tcs = new TaskCompletionSource<TResult>(state);\n\n            var disposable = new SingleAssignmentDisposable();\n\n            var ctr = default(CancellationTokenRegistration);\n\n            if (cancellationToken.CanBeCanceled)\n            {\n                ctr = cancellationToken.Register(() =>\n                {\n                    disposable.Dispose();\n                    tcs.TrySetCanceled(cancellationToken);\n                });\n            }\n\n            var taskCompletionObserver = Observer.Create<TResult>(\n                value =>\n                {\n                    hasValue = true;\n                    lastValue = value;\n                },\n                ex =>\n                {\n                    tcs.TrySetException(ex);\n\n                    ctr.Dispose(); // no null-check needed (struct)\n                    disposable.Dispose();\n                },\n                () =>\n                {\n                    if (hasValue)\n                        tcs.TrySetResult(lastValue);\n                    else\n                        tcs.TrySetException(new InvalidOperationException(\"Strings_Linq.NO_ELEMENTS\"));\n\n                    ctr.Dispose(); // no null-check needed (struct)\n                    disposable.Dispose();\n                }\n            );\n\n            //\n            // Subtle race condition: if the source completes before we reach the line below, the SingleAssigmentDisposable\n            // will already have been disposed. Upon assignment, the disposable resource being set will be disposed on the\n            // spot, which may throw an exception. (Similar to TFS 487142)\n            //\n            try\n            {\n                //\n                // [OK] Use of unsafe Subscribe: we're catching the exception here to set the TaskCompletionSource.\n                //\n                // Notice we could use a safe subscription to route errors through OnError, but we still need the\n                // exception handling logic here for the reason explained above. We cannot afford to throw here\n                // and as a result never set the TaskCompletionSource, so we tunnel everything through here.\n                //\n                disposable.Disposable = observable.Subscribe/*Unsafe*/(taskCompletionObserver);\n            }\n            catch (Exception ex)\n            {\n                tcs.TrySetException(ex);\n            }\n\n            return tcs.Task;\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Tasks/TaskObservableExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d4f80d45cec56574e990cc840d1ac16b\ntimeCreated: 1475139656\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Tasks.meta",
    "content": "fileFormatVersion: 2\nguid: f4389552ae1b4f54fb6d931c0a6efd08\nfolderAsset: yes\ntimeCreated: 1475139656\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/TimeInterval.cs",
    "content": "﻿// original code from rx.codeplex.com\n\n/* ------------------ */\n\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.\n\nusing System;\nusing System.Collections.Generic;\nusing System.Globalization;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Represents a value associated with time interval information.\n    /// The time interval can represent the time it took to produce the value, the interval relative to a previous value, the value's delivery time relative to a base, etc.\n    /// </summary>\n    /// <typeparam name=\"T\">The type of the value being annotated with time interval information.</typeparam>\n    [Serializable]\n    public struct TimeInterval<T> : IEquatable<TimeInterval<T>>\n    {\n        private readonly TimeSpan _interval;\n        private readonly T _value;\n\n        /// <summary>\n        /// Constructs a time interval value.\n        /// </summary>\n        /// <param name=\"value\">The value to be annotated with a time interval.</param>\n        /// <param name=\"interval\">Time interval associated with the value.</param>\n        public TimeInterval(T value, TimeSpan interval)\n        {\n            _interval = interval;\n            _value = value;\n        }\n\n        /// <summary>\n        /// Gets the value.\n        /// </summary>\n        public T Value\n        {\n            get { return _value; }\n        }\n\n        /// <summary>\n        /// Gets the interval.\n        /// </summary>\n        public TimeSpan Interval\n        {\n            get { return _interval; }\n        }\n\n        /// <summary>\n        /// Determines whether the current TimeInterval&lt;T&gt; value has the same Value and Interval as a specified TimeInterval&lt;T&gt; value.\n        /// </summary>\n        /// <param name=\"other\">An object to compare to the current TimeInterval&lt;T&gt; value.</param>\n        /// <returns>true if both TimeInterval&lt;T&gt; values have the same Value and Interval; otherwise, false.</returns>\n        public bool Equals(TimeInterval<T> other)\n        {\n            return other.Interval.Equals(Interval) && EqualityComparer<T>.Default.Equals(Value, other.Value);\n        }\n\n        /// <summary>\n        /// Determines whether the two specified TimeInterval&lt;T&gt; values have the same Value and Interval.\n        /// </summary>\n        /// <param name=\"first\">The first TimeInterval&lt;T&gt; value to compare.</param>\n        /// <param name=\"second\">The second TimeInterval&lt;T&gt; value to compare.</param>\n        /// <returns>true if the first TimeInterval&lt;T&gt; value has the same Value and Interval as the second TimeInterval&lt;T&gt; value; otherwise, false.</returns>\n        public static bool operator ==(TimeInterval<T> first, TimeInterval<T> second)\n        {\n            return first.Equals(second);\n        }\n\n        /// <summary>\n        /// Determines whether the two specified TimeInterval&lt;T&gt; values don't have the same Value and Interval.\n        /// </summary>\n        /// <param name=\"first\">The first TimeInterval&lt;T&gt; value to compare.</param>\n        /// <param name=\"second\">The second TimeInterval&lt;T&gt; value to compare.</param>\n        /// <returns>true if the first TimeInterval&lt;T&gt; value has a different Value or Interval as the second TimeInterval&lt;T&gt; value; otherwise, false.</returns>\n        public static bool operator !=(TimeInterval<T> first, TimeInterval<T> second)\n        {\n            return !first.Equals(second);\n        }\n\n        /// <summary>\n        /// Determines whether the specified System.Object is equal to the current TimeInterval&lt;T&gt;.\n        /// </summary>\n        /// <param name=\"obj\">The System.Object to compare with the current TimeInterval&lt;T&gt;.</param>\n        /// <returns>true if the specified System.Object is equal to the current TimeInterval&lt;T&gt;; otherwise, false.</returns>\n        public override bool Equals(object obj)\n        {\n            if (!(obj is TimeInterval<T>))\n                return false;\n\n            var other = (TimeInterval<T>)obj;\n            return this.Equals(other);\n        }\n\n        /// <summary>\n        /// Returns the hash code for the current TimeInterval&lt;T&gt; value.\n        /// </summary>\n        /// <returns>A hash code for the current TimeInterval&lt;T&gt; value.</returns>\n        public override int GetHashCode()\n        {\n            var valueHashCode = Value == null ? 1963 : Value.GetHashCode();\n\n            return Interval.GetHashCode() ^ valueHashCode;\n        }\n\n        /// <summary>\n        /// Returns a string representation of the current TimeInterval&lt;T&gt; value.\n        /// </summary>\n        /// <returns>String representation of the current TimeInterval&lt;T&gt; value.</returns>\n        public override string ToString()\n        {\n            return String.Format(CultureInfo.CurrentCulture, \"{0}@{1}\", Value, Interval);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/TimeInterval.cs.meta",
    "content": "fileFormatVersion: 2\nguid: dd48622e783cadc47af9a6b456ac8438\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Timestamped.cs",
    "content": "﻿// original code from rx.codeplex.com\n\n/* ------------------ */\n\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.\n\nusing System;\nusing System.Collections.Generic;\nusing System.Globalization;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Represents value with a timestamp on it.\n    /// The timestamp typically represents the time the value was received, using an IScheduler's clock to obtain the current time.\n    /// </summary>\n    /// <typeparam name=\"T\">The type of the value being timestamped.</typeparam>\n    [Serializable]\n    public struct Timestamped<T> : IEquatable<Timestamped<T>>\n    {\n        private readonly DateTimeOffset _timestamp;\n        private readonly T _value;\n\n        /// <summary>\n        /// Constructs a timestamped value.\n        /// </summary>\n        /// <param name=\"value\">The value to be annotated with a timestamp.</param>\n        /// <param name=\"timestamp\">Timestamp associated with the value.</param>\n        public Timestamped(T value, DateTimeOffset timestamp)\n        {\n            _timestamp = timestamp;\n            _value = value;\n        }\n\n        /// <summary>\n        /// Gets the value.\n        /// </summary>\n        public T Value\n        {\n            get { return _value; }\n        }\n\n        /// <summary>\n        /// Gets the timestamp.\n        /// </summary>\n        public DateTimeOffset Timestamp\n        {\n            get { return _timestamp; }\n        }\n\n        /// <summary>\n        /// Determines whether the current Timestamped&lt;T&gt; value has the same Value and Timestamp as a specified Timestamped&lt;T&gt; value.\n        /// </summary>\n        /// <param name=\"other\">An object to compare to the current Timestamped&lt;T&gt; value.</param>\n        /// <returns>true if both Timestamped&lt;T&gt; values have the same Value and Timestamp; otherwise, false.</returns>\n        public bool Equals(Timestamped<T> other)\n        {\n            return other.Timestamp.Equals(Timestamp) && EqualityComparer<T>.Default.Equals(Value, other.Value);\n        }\n\n        /// <summary>\n        /// Determines whether the two specified Timestamped&lt;T&gt; values have the same Value and Timestamp.\n        /// </summary>\n        /// <param name=\"first\">The first Timestamped&lt;T&gt; value to compare.</param>\n        /// <param name=\"second\">The second Timestamped&lt;T&gt; value to compare.</param>\n        /// <returns>true if the first Timestamped&lt;T&gt; value has the same Value and Timestamp as the second Timestamped&lt;T&gt; value; otherwise, false.</returns>\n        public static bool operator ==(Timestamped<T> first, Timestamped<T> second)\n        {\n            return first.Equals(second);\n        }\n\n        /// <summary>\n        /// Determines whether the two specified Timestamped&lt;T&gt; values don't have the same Value and Timestamp.\n        /// </summary>\n        /// <param name=\"first\">The first Timestamped&lt;T&gt; value to compare.</param>\n        /// <param name=\"second\">The second Timestamped&lt;T&gt; value to compare.</param>\n        /// <returns>true if the first Timestamped&lt;T&gt; value has a different Value or Timestamp as the second Timestamped&lt;T&gt; value; otherwise, false.</returns>\n        public static bool operator !=(Timestamped<T> first, Timestamped<T> second)\n        {\n            return !first.Equals(second);\n        }\n\n        /// <summary>\n        /// Determines whether the specified System.Object is equal to the current Timestamped&lt;T&gt;.\n        /// </summary>\n        /// <param name=\"obj\">The System.Object to compare with the current Timestamped&lt;T&gt;.</param>\n        /// <returns>true if the specified System.Object is equal to the current Timestamped&lt;T&gt;; otherwise, false.</returns>\n        public override bool Equals(object obj)\n        {\n            if (!(obj is Timestamped<T>))\n                return false;\n\n            var other = (Timestamped<T>)obj;\n            return this.Equals(other);\n        }\n\n        /// <summary>\n        /// Returns the hash code for the current Timestamped&lt;T&gt; value.\n        /// </summary>\n        /// <returns>A hash code for the current Timestamped&lt;T&gt; value.</returns>\n        public override int GetHashCode()\n        {\n            var valueHashCode = Value == null ? 1979 : Value.GetHashCode();\n\n            return _timestamp.GetHashCode() ^ valueHashCode;\n        }\n\n        /// <summary>\n        /// Returns a string representation of the current Timestamped&lt;T&gt; value.\n        /// </summary>\n        /// <returns>String representation of the current Timestamped&lt;T&gt; value.</returns>\n        public override string ToString()\n        {\n            return String.Format(CultureInfo.CurrentCulture, \"{0}@{1}\", Value, Timestamp);\n        }\n    }\n\n    /// <summary>\n    /// A helper class with a factory method for creating Timestamped&lt;T&gt; instances.\n    /// </summary>\n    public static class Timestamped\n    {\n        /// <summary>\n        /// Creates an instance of a Timestamped&lt;T&gt;.  This is syntactic sugar that uses type inference\n        /// to avoid specifying a type in a constructor call, which is very useful when using anonymous types.\n        /// </summary>\n        /// <param name=\"value\">The value to be annotated with a timestamp.</param>\n        /// <param name=\"timestamp\">Timestamp associated with the value.</param>\n        /// <returns>Creates a new timestamped value.</returns>\n        public static Timestamped<T> Create<T>(T value, DateTimeOffset timestamp)\n        {\n            return new Timestamped<T>(value, timestamp);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/Timestamped.cs.meta",
    "content": "fileFormatVersion: 2\nguid: c1d908b82d0e2b4489d3351a484e5eae\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UniRx.asmdef",
    "content": "{\n    \"name\": \"UniRx\",\n    \"references\": [],\n    \"includePlatforms\": [],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false,\n    \"overrideReferences\": false,\n    \"precompiledReferences\": [],\n    \"autoReferenced\": true,\n    \"defineConstraints\": [],\n    \"versionDefines\": []\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UniRx.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 560b04d1a97f54a4e82edc0cbbb69285\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/AsyncOperationExtensions.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Threading;\nusing UnityEngine;\n\n#if !UniRxLibrary\nusing ObservableUnity = UniRx.Observable;\n#endif\n\nnamespace UniRx\n{\n    public static partial class AsyncOperationExtensions\n    {\n        /// <summary>\n        /// If you needs return value, use AsAsyncOperationObservable instead.\n        /// </summary>\n        public static IObservable<AsyncOperation> AsObservable(this AsyncOperation asyncOperation, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<AsyncOperation>((observer, cancellation) => AsObservableCore(asyncOperation, observer, progress, cancellation));\n        }\n\n        // T: where T : AsyncOperation is ambigious with IObservable<T>.AsObservable\n        public static IObservable<T> AsAsyncOperationObservable<T>(this T asyncOperation, IProgress<float> progress = null)\n            where T : AsyncOperation\n        {\n            return ObservableUnity.FromCoroutine<T>((observer, cancellation) => AsObservableCore(asyncOperation, observer, progress, cancellation));\n        }\n\n        static IEnumerator AsObservableCore<T>(T asyncOperation, IObserver<T> observer, IProgress<float> reportProgress, CancellationToken cancel)\n            where T : AsyncOperation\n        {\n            if (reportProgress != null)\n            {\n                while (!asyncOperation.isDone && !cancel.IsCancellationRequested)\n                {\n                    try\n                    {\n                        reportProgress.Report(asyncOperation.progress);\n                    }\n                    catch (Exception ex)\n                    {\n                        observer.OnError(ex);\n                        yield break;\n                    }\n                    yield return null;\n                }\n            }\n            else\n            {\n                if (!asyncOperation.isDone)\n                {\n                    yield return asyncOperation;\n                }\n            }\n\n            if (cancel.IsCancellationRequested) yield break;\n\n            if (reportProgress != null)\n            {\n                try\n                {\n                    reportProgress.Report(asyncOperation.progress);\n                }\n                catch (Exception ex)\n                {\n                    observer.OnError(ex);\n                    yield break;\n                }\n            }\n\n            observer.OnNext(asyncOperation);\n            observer.OnCompleted();\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/AsyncOperationExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 245d77a29b1ece34e96bfc80f8c825d8\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/CancellationToken.cs",
    "content": "﻿#if !(NETFX_CORE || NET_4_6 || NET_STANDARD_2_0 || UNITY_WSA_10_0)\n\nusing System;\n\nnamespace UniRx\n{\n    public struct CancellationToken\n    {\n        readonly ICancelable source;\n\n        public static readonly CancellationToken Empty = new CancellationToken(null);\n        \n        /// <summary>Same as Empty.</summary>\n        public static readonly CancellationToken None = new CancellationToken(null);\n\n        public CancellationToken(ICancelable source)\n        {\n            this.source = source;\n        }\n\n        public bool IsCancellationRequested\n        {\n            get\n            {\n                return (source == null) ? false : source.IsDisposed;\n            }\n        }\n\n        public void ThrowIfCancellationRequested()\n        {\n            if (IsCancellationRequested)\n            {\n                throw new OperationCanceledException();\n            }\n        }\n    }\n}\n\n#endif\n\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/CancellationToken.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e02a1bf45f8861048a6014cf7eab1825\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/CoroutineAsyncBridge.cs",
    "content": "﻿#if (NET_4_6 || NET_STANDARD_2_0)\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Runtime.CompilerServices;\nusing System.Text;\nusing System.Threading.Tasks;\nusing UnityEngine;\n\nnamespace UniRx\n{\n    public class CoroutineAsyncBridge : INotifyCompletion\n    {\n        Action continuation;\n        public bool IsCompleted { get; private set; }\n\n        CoroutineAsyncBridge()\n        {\n            IsCompleted = false;\n        }\n\n        public static CoroutineAsyncBridge Start<T>(T awaitTarget)\n        {\n            var bridge = new CoroutineAsyncBridge();\n            MainThreadDispatcher.StartCoroutine(bridge.Run(awaitTarget));\n            return bridge;\n        }\n\n        IEnumerator Run<T>(T target)\n        {\n            yield return target;\n            IsCompleted = true;\n            continuation();\n        }\n\n        public void OnCompleted(Action continuation)\n        {\n            this.continuation = continuation;\n        }\n\n        public void GetResult()\n        {\n            if (!IsCompleted) throw new InvalidOperationException(\"coroutine not yet completed\");\n        }\n    }\n\n    public class CoroutineAsyncBridge<T> : INotifyCompletion\n    {\n        readonly T result;\n        Action continuation;\n        public bool IsCompleted { get; private set; }\n\n        CoroutineAsyncBridge(T result)\n        {\n            IsCompleted = false;\n            this.result = result;\n        }\n\n        public static CoroutineAsyncBridge<T> Start(T awaitTarget)\n        {\n            var bridge = new CoroutineAsyncBridge<T>(awaitTarget);\n            MainThreadDispatcher.StartCoroutine(bridge.Run(awaitTarget));\n            return bridge;\n        }\n\n        IEnumerator Run(T target)\n        {\n            yield return target;\n            IsCompleted = true;\n            continuation();\n        }\n\n        public void OnCompleted(Action continuation)\n        {\n            this.continuation = continuation;\n        }\n\n        public T GetResult()\n        {\n            if (!IsCompleted) throw new InvalidOperationException(\"coroutine not yet completed\");\n            return result;\n        }\n    }\n\n    public static class CoroutineAsyncExtensions\n    {\n        public static CoroutineAsyncBridge GetAwaiter(this Coroutine coroutine)\n        {\n            return CoroutineAsyncBridge.Start(coroutine);\n        }\n\n#if !(CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6)))\n\n        // should use UniRx.Async in C# 7.0\n\n#if UNITY_2018_3_OR_NEWER\n#pragma warning disable CS0618\n#endif\n        public static CoroutineAsyncBridge<WWW> GetAwaiter(this WWW www)\n        {\n            return CoroutineAsyncBridge<WWW>.Start(www);\n        }\n#if UNITY_2018_3_OR_NEWER\n#pragma warning restore CS0618\n#endif\n\n\n\n        public static CoroutineAsyncBridge<AsyncOperation> GetAwaiter(this AsyncOperation asyncOperation)\n        {\n            return CoroutineAsyncBridge<AsyncOperation>.Start(asyncOperation);\n        }\n\n        public static CoroutineAsyncBridge GetAwaiter(this IEnumerator coroutine)\n        {\n            return CoroutineAsyncBridge.Start(coroutine);\n        }\n\n#endif\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/CoroutineAsyncBridge.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 93ca3de3810199947871ab4a77014fa3\ntimeCreated: 1475193276\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/LogEntry.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UnityEngine;\n\nnamespace UniRx.Diagnostics\n{\n    public struct LogEntry\n    {\n        // requires\n        public string LoggerName { get; private set; }\n        public LogType LogType { get; private set; }\n        public string Message { get; private set; }\n        public DateTime Timestamp { get; private set; }\n\n        // options\n\n        /// <summary>[Optional]</summary>\n        public UnityEngine.Object Context { get; private set; }\n        /// <summary>[Optional]</summary>\n        public Exception Exception { get; private set; }\n        /// <summary>[Optional]</summary>\n        public string StackTrace { get; private set; }\n        /// <summary>[Optional]</summary>\n        public object State { get; private set; }\n\n        public LogEntry(string loggerName, LogType logType, DateTime timestamp, string message, UnityEngine.Object context = null, Exception exception = null, string stackTrace = null, object state = null)\n            : this()\n        {\n            this.LoggerName = loggerName;\n            this.LogType = logType;\n            this.Timestamp = timestamp;\n            this.Message = message;\n            this.Context = context;\n            this.Exception = exception;\n            this.StackTrace = stackTrace;\n            this.State = state;\n        }\n\n        public override string ToString()\n        {\n            var plusEx = (Exception != null) ? (Environment.NewLine + Exception.ToString()) : \"\";\n            return \"[\" + Timestamp.ToString() + \"]\"\n                + \"[\" + LoggerName + \"]\"\n                + \"[\" + LogType.ToString() + \"]\"\n                + Message\n                + plusEx;\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/LogEntry.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 53917e87e91c0e4449402e5d85a04765\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/LogEntryExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace UniRx.Diagnostics\n{\n    public static partial class LogEntryExtensions\n    {\n        public static IDisposable LogToUnityDebug(this IObservable<LogEntry> source)\n        {\n            return source.Subscribe(new UnityDebugSink());\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/LogEntryExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8706ef5a13e53ec46b4848a7eec5e826\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/Logger.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UnityEngine;\n\nnamespace UniRx.Diagnostics\n{\n    public partial class Logger\n    {\n        static bool isInitialized = false;\n        static bool isDebugBuild = false;\n\n        public string Name { get; private set; }\n        protected readonly Action<LogEntry> logPublisher;\n\n        public Logger(string loggerName)\n        {\n            this.Name = loggerName;\n            this.logPublisher = ObservableLogger.RegisterLogger(this);\n        }\n\n        /// <summary>Output LogType.Log but only enables isDebugBuild</summary>\n        public virtual void Debug(object message, UnityEngine.Object context = null)\n        {\n            if (!isInitialized)\n            {\n                isInitialized = true;\n                isDebugBuild = UnityEngine.Debug.isDebugBuild;\n            }\n\n            if (isDebugBuild)\n            {\n                logPublisher(new LogEntry(\n                    message: (message != null) ? message.ToString() : \"\",\n                    logType: LogType.Log,\n                    timestamp: DateTime.Now,\n                    loggerName: Name,\n                    context: context));\n            }\n        }\n\n        /// <summary>Output LogType.Log but only enables isDebugBuild</summary>\n        public virtual void DebugFormat(string format, params object[] args)\n        {\n            if (!isInitialized)\n            {\n                isInitialized = true;\n                isDebugBuild = UnityEngine.Debug.isDebugBuild;\n            }\n\n            if (isDebugBuild)\n            {\n                logPublisher(new LogEntry(\n                    message: (format != null) ? string.Format(format, args) : \"\",\n                    logType: LogType.Log,\n                    timestamp: DateTime.Now,\n                    loggerName: Name,\n                    context: null));\n            }\n        }\n\n        public virtual void Log(object message, UnityEngine.Object context = null)\n        {\n            logPublisher(new LogEntry(\n                message: (message != null) ? message.ToString() : \"\",\n                logType: LogType.Log,\n                timestamp: DateTime.Now,\n                loggerName: Name,\n                context: context));\n        }\n\n        public virtual void LogFormat(string format, params object[] args)\n        {\n            logPublisher(new LogEntry(\n                message: (format != null) ? string.Format(format, args) : \"\",\n                logType: LogType.Log,\n                timestamp: DateTime.Now,\n                loggerName: Name,\n                context: null));\n        }\n\n        public virtual void Warning(object message, UnityEngine.Object context = null)\n        {\n            logPublisher(new LogEntry(\n                message: (message != null) ? message.ToString() : \"\",\n                logType: LogType.Warning,\n                timestamp: DateTime.Now,\n                loggerName: Name,\n                context: context));\n        }\n\n        public virtual void WarningFormat(string format, params object[] args)\n        {\n            logPublisher(new LogEntry(\n                message: (format != null) ? string.Format(format, args) : \"\",\n                logType: LogType.Warning,\n                timestamp: DateTime.Now,\n                loggerName: Name,\n                context: null));\n        }\n\n        public virtual void Error(object message, UnityEngine.Object context = null)\n        {\n            logPublisher(new LogEntry(\n                message: (message != null) ? message.ToString() : \"\",\n                logType: LogType.Error,\n                timestamp: DateTime.Now,\n                loggerName: Name,\n                context: context));\n        }\n\n        public virtual void ErrorFormat(string format, params object[] args)\n        {\n            logPublisher(new LogEntry(\n                message: (format != null) ? string.Format(format, args) : \"\",\n                logType: LogType.Error,\n                timestamp: DateTime.Now,\n                loggerName: Name,\n                context: null));\n        }\n\n        public virtual void Exception(Exception exception, UnityEngine.Object context = null)\n        {\n            logPublisher(new LogEntry(\n                message: (exception != null) ? exception.ToString() : \"\",\n                exception: exception,\n                logType: LogType.Exception,\n                timestamp: DateTime.Now,\n                loggerName: Name,\n                context: context));\n        }\n\n        /// <summary>Publish raw LogEntry.</summary>\n        public virtual void Raw(LogEntry logEntry)\n        {\n            logPublisher(logEntry);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/Logger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f0ecf366503cb0644bdd90934d24da62\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/ObservableDebugExtensions.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Diagnostics\n{\n    public static class ObservableDebugExtensions\n    {\n        /// <summary>\n        /// Debug helper of observbale stream. Works for only DEBUG symbol.\n        /// </summary>\n        public static IObservable<T> Debug<T>(this IObservable<T> source, string label = null)\n        {\n#if DEBUG\n            var l = (label == null) ? \"\" : \"[\" + label + \"]\";\n            return source.Materialize()\n                .Do(x => UnityEngine.Debug.Log(l + x.ToString()))\n                .Dematerialize()\n                .DoOnCancel(() => UnityEngine.Debug.Log(l + \"OnCancel\"))\n                .DoOnSubscribe(() => UnityEngine.Debug.Log(l + \"OnSubscribe\"));\n\n#else\n            return source;\n#endif\n        }\n\n        /// <summary>\n        /// Debug helper of observbale stream. Works for only DEBUG symbol.\n        /// </summary>\n        public static IObservable<T> Debug<T>(this IObservable<T> source, UniRx.Diagnostics.Logger logger)\n        {\n#if DEBUG\n            return source.Materialize()\n                .Do(x => logger.Debug(x.ToString()))\n                .Dematerialize()\n                .DoOnCancel(() => logger.Debug(\"OnCancel\"))\n                .DoOnSubscribe(() => logger.Debug(\"OnSubscribe\"));\n\n#else\n            return source;\n#endif\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/ObservableDebugExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: b43f948e095c3e749a0506709be90d68\ntimeCreated: 1468662620\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/ObservableLogger.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UnityEngine;\n\nnamespace UniRx.Diagnostics\n{\n    public class ObservableLogger : IObservable<LogEntry>\n    {\n        static readonly Subject<LogEntry> logPublisher = new Subject<LogEntry>();\n\n        public static readonly ObservableLogger Listener = new ObservableLogger();\n\n        private ObservableLogger()\n        {\n\n        }\n\n        public static Action<LogEntry> RegisterLogger(Logger logger)\n        {\n            if (logger.Name == null) throw new ArgumentNullException(\"logger.Name is null\");\n\n            return logPublisher.OnNext;\n        }\n\n        public IDisposable Subscribe(IObserver<LogEntry> observer)\n        {\n            return logPublisher.Subscribe(observer);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/ObservableLogger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 063f79dc45f902c459f0955d27b445d7\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/UnityDebugSink.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UnityEngine;\n\nnamespace UniRx.Diagnostics\n{\n    public class UnityDebugSink : IObserver<LogEntry>\n    {\n        public void OnCompleted()\n        {\n            // do nothing\n        }\n\n        public void OnError(Exception error)\n        {\n            // do nothing\n        }\n\n        public void OnNext(LogEntry value)\n        {\n            // avoid multithread exception.\n            // (value.Context == null) can only be called from the main thread.\n            var ctx = (System.Object)value.Context;\n\n            switch (value.LogType)\n            {\n                case LogType.Error:\n                    if (ctx == null)\n                    {\n                        Debug.LogError(value.Message);\n                    }\n                    else\n                    {\n                        Debug.LogError(value.Message, value.Context);\n                    }\n                    break;\n                case LogType.Exception:\n                    if (ctx == null)\n                    {\n                        Debug.LogException(value.Exception);\n                    }\n                    else\n                    {\n                        Debug.LogException(value.Exception, value.Context);\n                    }\n                    break;\n                case LogType.Log:\n                    if (ctx == null)\n                    {\n                        Debug.Log(value.Message);\n                    }\n                    else\n                    {\n                        Debug.Log(value.Message, value.Context);\n                    }\n                    break;\n                case LogType.Warning:\n                    if (ctx == null)\n                    {\n                        Debug.LogWarning(value.Message);\n                    }\n                    else\n                    {\n                        Debug.LogWarning(value.Message, value.Context);\n                    }\n                    break;\n                default:\n                    break;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/UnityDebugSink.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 882166c30c3bff841b1e12d62c392e02\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics.meta",
    "content": "fileFormatVersion: 2\nguid: 125ca82be137b8544a2b65f7150ee2d4\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/FrameInterval.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Globalization;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Represents a value associated with time interval information.\n    /// The time interval can represent the time it took to produce the value, the interval relative to a previous value, the value's delivery time relative to a base, etc.\n    /// </summary>\n    /// <typeparam name=\"T\">The type of the value being annotated with time interval information.</typeparam>\n    [Serializable]\n    public struct FrameInterval<T> : IEquatable<FrameInterval<T>>\n    {\n        private readonly int _interval;\n        private readonly T _value;\n\n        /// <summary>\n        /// Constructs a time interval value.\n        /// </summary>\n        /// <param name=\"value\">The value to be annotated with a time interval.</param>\n        /// <param name=\"interval\">Time interval associated with the value.</param>\n        public FrameInterval(T value, int interval)\n        {\n            _interval = interval;\n            _value = value;\n        }\n\n        /// <summary>\n        /// Gets the value.\n        /// </summary>\n        public T Value\n        {\n            get { return _value; }\n        }\n\n        /// <summary>\n        /// Gets the interval.\n        /// </summary>\n        public int Interval\n        {\n            get { return _interval; }\n        }\n\n        /// <summary>\n        /// Determines whether the current FrameInterval&lt;T&gt; value has the same Value and Interval as a specified FrameInterval&lt;T&gt; value.\n        /// </summary>\n        /// <param name=\"other\">An object to compare to the current FrameInterval&lt;T&gt; value.</param>\n        /// <returns>true if both FrameInterval&lt;T&gt; values have the same Value and Interval; otherwise, false.</returns>\n        public bool Equals(FrameInterval<T> other)\n        {\n            return other.Interval.Equals(Interval) && EqualityComparer<T>.Default.Equals(Value, other.Value);\n        }\n\n        /// <summary>\n        /// Determines whether the two specified FrameInterval&lt;T&gt; values have the same Value and Interval.\n        /// </summary>\n        /// <param name=\"first\">The first FrameInterval&lt;T&gt; value to compare.</param>\n        /// <param name=\"second\">The second FrameInterval&lt;T&gt; value to compare.</param>\n        /// <returns>true if the first FrameInterval&lt;T&gt; value has the same Value and Interval as the second FrameInterval&lt;T&gt; value; otherwise, false.</returns>\n        public static bool operator ==(FrameInterval<T> first, FrameInterval<T> second)\n        {\n            return first.Equals(second);\n        }\n\n        /// <summary>\n        /// Determines whether the two specified FrameInterval&lt;T&gt; values don't have the same Value and Interval.\n        /// </summary>\n        /// <param name=\"first\">The first FrameInterval&lt;T&gt; value to compare.</param>\n        /// <param name=\"second\">The second FrameInterval&lt;T&gt; value to compare.</param>\n        /// <returns>true if the first FrameInterval&lt;T&gt; value has a different Value or Interval as the second FrameInterval&lt;T&gt; value; otherwise, false.</returns>\n        public static bool operator !=(FrameInterval<T> first, FrameInterval<T> second)\n        {\n            return !first.Equals(second);\n        }\n\n        /// <summary>\n        /// Determines whether the specified System.Object is equal to the current FrameInterval&lt;T&gt;.\n        /// </summary>\n        /// <param name=\"obj\">The System.Object to compare with the current FrameInterval&lt;T&gt;.</param>\n        /// <returns>true if the specified System.Object is equal to the current FrameInterval&lt;T&gt;; otherwise, false.</returns>\n        public override bool Equals(object obj)\n        {\n            if (!(obj is FrameInterval<T>))\n                return false;\n\n            var other = (FrameInterval<T>)obj;\n            return this.Equals(other);\n        }\n\n        /// <summary>\n        /// Returns the hash code for the current FrameInterval&lt;T&gt; value.\n        /// </summary>\n        /// <returns>A hash code for the current FrameInterval&lt;T&gt; value.</returns>\n        public override int GetHashCode()\n        {\n            var valueHashCode = Value == null ? 1963 : Value.GetHashCode();\n\n            return Interval.GetHashCode() ^ valueHashCode;\n        }\n\n        /// <summary>\n        /// Returns a string representation of the current FrameInterval&lt;T&gt; value.\n        /// </summary>\n        /// <returns>String representation of the current FrameInterval&lt;T&gt; value.</returns>\n        public override string ToString()\n        {\n            return String.Format(CultureInfo.CurrentCulture, \"{0}@{1}\", Value, Interval);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/FrameInterval.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 266d1e44d71e7774c9abc5b23773e3f1\ntimeCreated: 1467771656\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/InspectableReactiveProperty.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UniRx.InternalUtil;\nusing UnityEngine;\n\nnamespace UniRx\n{\n    /// <summary>\n    /// Inspectable ReactiveProperty.\n    /// </summary>\n    [Serializable]\n    public class IntReactiveProperty : ReactiveProperty<int>\n    {\n        public IntReactiveProperty()\n            : base()\n        {\n\n        }\n\n        public IntReactiveProperty(int initialValue)\n            : base(initialValue)\n        {\n\n        }\n    }\n\n    /// <summary>\n    /// Inspectable ReactiveProperty.\n    /// </summary>\n    [Serializable]\n    public class LongReactiveProperty : ReactiveProperty<long>\n    {\n        public LongReactiveProperty()\n            : base()\n        {\n\n        }\n\n        public LongReactiveProperty(long initialValue)\n            : base(initialValue)\n        {\n\n        }\n    }\n\n\n    /// <summary>\n    /// Inspectable ReactiveProperty.\n    /// </summary>\n    [Serializable]\n    public class ByteReactiveProperty : ReactiveProperty<byte>\n    {\n        public ByteReactiveProperty()\n            : base()\n        {\n\n        }\n\n        public ByteReactiveProperty(byte initialValue)\n            : base(initialValue)\n        {\n\n        }\n    }\n\n    /// <summary>\n    /// Inspectable ReactiveProperty.\n    /// </summary>\n    [Serializable]\n    public class FloatReactiveProperty : ReactiveProperty<float>\n    {\n        public FloatReactiveProperty()\n            : base()\n        {\n\n        }\n\n        public FloatReactiveProperty(float initialValue)\n            : base(initialValue)\n        {\n\n        }\n    }\n\n    /// <summary>\n    /// Inspectable ReactiveProperty.\n    /// </summary>\n    [Serializable]\n    public class DoubleReactiveProperty : ReactiveProperty<double>\n    {\n        public DoubleReactiveProperty()\n            : base()\n        {\n\n        }\n\n        public DoubleReactiveProperty(double initialValue)\n            : base(initialValue)\n        {\n\n        }\n    }\n\n    /// <summary>\n    /// Inspectable ReactiveProperty.\n    /// </summary>\n    [Serializable]\n    public class StringReactiveProperty : ReactiveProperty<string>\n    {\n        public StringReactiveProperty()\n            : base()\n        {\n\n        }\n\n        public StringReactiveProperty(string initialValue)\n            : base(initialValue)\n        {\n\n        }\n    }\n\n    /// <summary>\n    /// Inspectable ReactiveProperty.\n    /// </summary>\n    [Serializable]\n    public class BoolReactiveProperty : ReactiveProperty<bool>\n    {\n        public BoolReactiveProperty()\n            : base()\n        {\n\n        }\n\n        public BoolReactiveProperty(bool initialValue)\n            : base(initialValue)\n        {\n\n        }\n    }\n\n    /// <summary>Inspectable ReactiveProperty.</summary>\n    [Serializable]\n    public class Vector2ReactiveProperty : ReactiveProperty<Vector2>\n    {\n        public Vector2ReactiveProperty()\n        {\n\n        }\n\n        public Vector2ReactiveProperty(Vector2 initialValue)\n            : base(initialValue)\n        {\n\n        }\n\n        protected override IEqualityComparer<Vector2> EqualityComparer\n        {\n            get\n            {\n                return UnityEqualityComparer.Vector2;\n            }\n        }\n    }\n\n    /// <summary>Inspectable ReactiveProperty.</summary>\n    [Serializable]\n    public class Vector3ReactiveProperty : ReactiveProperty<Vector3>\n    {\n        public Vector3ReactiveProperty()\n        {\n\n        }\n\n        public Vector3ReactiveProperty(Vector3 initialValue)\n            : base(initialValue)\n        {\n\n        }\n\n        protected override IEqualityComparer<Vector3> EqualityComparer\n        {\n            get\n            {\n                return UnityEqualityComparer.Vector3;\n            }\n        }\n    }\n\n    /// <summary>Inspectable ReactiveProperty.</summary>\n    [Serializable]\n    public class Vector4ReactiveProperty : ReactiveProperty<Vector4>\n    {\n        public Vector4ReactiveProperty()\n        {\n\n        }\n\n        public Vector4ReactiveProperty(Vector4 initialValue)\n            : base(initialValue)\n        {\n\n        }\n\n        protected override IEqualityComparer<Vector4> EqualityComparer\n        {\n            get\n            {\n                return UnityEqualityComparer.Vector4;\n            }\n        }\n    }\n\n    /// <summary>Inspectable ReactiveProperty.</summary>\n    [Serializable]\n    public class ColorReactiveProperty : ReactiveProperty<Color>\n    {\n        public ColorReactiveProperty()\n        {\n\n        }\n\n        public ColorReactiveProperty(Color initialValue)\n            : base(initialValue)\n        {\n\n        }\n\n        protected override IEqualityComparer<Color> EqualityComparer\n        {\n            get\n            {\n                return UnityEqualityComparer.Color;\n            }\n        }\n    }\n\n    /// <summary>Inspectable ReactiveProperty.</summary>\n    [Serializable]\n    public class RectReactiveProperty : ReactiveProperty<Rect>\n    {\n        public RectReactiveProperty()\n        {\n\n        }\n\n        public RectReactiveProperty(Rect initialValue)\n            : base(initialValue)\n        {\n\n        }\n\n        protected override IEqualityComparer<Rect> EqualityComparer\n        {\n            get\n            {\n                return UnityEqualityComparer.Rect;\n            }\n        }\n    }\n\n    /// <summary>Inspectable ReactiveProperty.</summary>\n    [Serializable]\n    public class AnimationCurveReactiveProperty : ReactiveProperty<AnimationCurve>\n    {\n        public AnimationCurveReactiveProperty()\n        {\n\n        }\n\n        public AnimationCurveReactiveProperty(AnimationCurve initialValue)\n            : base(initialValue)\n        {\n\n        }\n    }\n\n    /// <summary>Inspectable ReactiveProperty.</summary>\n    [Serializable]\n    public class BoundsReactiveProperty : ReactiveProperty<Bounds>\n    {\n        public BoundsReactiveProperty()\n        {\n\n        }\n\n        public BoundsReactiveProperty(Bounds initialValue)\n            : base(initialValue)\n        {\n\n        }\n\n        protected override IEqualityComparer<Bounds> EqualityComparer\n        {\n            get\n            {\n                return UnityEqualityComparer.Bounds;\n            }\n        }\n    }\n\n    /// <summary>Inspectable ReactiveProperty.</summary>\n    [Serializable]\n    public class QuaternionReactiveProperty : ReactiveProperty<Quaternion>\n    {\n        public QuaternionReactiveProperty()\n        {\n\n        }\n\n        public QuaternionReactiveProperty(Quaternion initialValue)\n            : base(initialValue)\n        {\n\n        }\n\n        protected override IEqualityComparer<Quaternion> EqualityComparer\n        {\n            get\n            {\n                return UnityEqualityComparer.Quaternion;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/InspectableReactiveProperty.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 13c690f353ea23141aca4090d28aaa9c\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/InspectorDisplayDrawer.cs",
    "content": "﻿using System;\nusing System.Reflection;\nusing UnityEngine;\nusing System.Text.RegularExpressions;\nusing System.Collections;\nusing System.Linq;\n\n#if UNITY_EDITOR\nusing UnityEditor;\n#endif\n\nnamespace UniRx\n{\n    [System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false, Inherited = false)]\n    public class InspectorDisplayAttribute : PropertyAttribute\n    {\n        public string FieldName { get; private set; }\n        public bool NotifyPropertyChanged { get; private set; }\n\n        public InspectorDisplayAttribute(string fieldName = \"value\", bool notifyPropertyChanged = true)\n        {\n            FieldName = fieldName;\n            NotifyPropertyChanged = notifyPropertyChanged;\n        }\n    }\n\n    /// <summary>\n    /// Enables multiline input field for StringReactiveProperty. Default line is 3.\n    /// </summary>\n    [System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false, Inherited = false)]\n    public class MultilineReactivePropertyAttribute : PropertyAttribute\n    {\n        public int Lines { get; private set; }\n\n        public MultilineReactivePropertyAttribute()\n        {\n            Lines = 3;\n        }\n\n        public MultilineReactivePropertyAttribute(int lines)\n        {\n            this.Lines = lines;\n        }\n    }\n\n    /// <summary>\n    /// Enables range input field for Int/FloatReactiveProperty.\n    /// </summary>\n    [System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple = false, Inherited = false)]\n    public class RangeReactivePropertyAttribute : PropertyAttribute\n    {\n        public float Min { get; private set; }\n        public float Max { get; private set; }\n\n        public RangeReactivePropertyAttribute(float min, float max)\n        {\n            this.Min = min;\n            this.Max = max;\n        }\n    }\n\n#if UNITY_EDITOR\n\n\n    // InspectorDisplay and for Specialized ReactiveProperty\n    // If you want to customize other specialized ReactiveProperty\n    // [UnityEditor.CustomPropertyDrawer(typeof(YourSpecializedReactiveProperty))]\n    // public class ExtendInspectorDisplayDrawer : InspectorDisplayDrawer { } \n\n    [UnityEditor.CustomPropertyDrawer(typeof(InspectorDisplayAttribute))]\n    [UnityEditor.CustomPropertyDrawer(typeof(IntReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(LongReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(ByteReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(FloatReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(DoubleReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(StringReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(BoolReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(Vector2ReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(Vector3ReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(Vector4ReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(ColorReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(RectReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(AnimationCurveReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(BoundsReactiveProperty))]\n    [UnityEditor.CustomPropertyDrawer(typeof(QuaternionReactiveProperty))]\n    public class InspectorDisplayDrawer : UnityEditor.PropertyDrawer\n    {\n        public override void OnGUI(Rect position, UnityEditor.SerializedProperty property, GUIContent label)\n        {\n            string fieldName;\n            bool notifyPropertyChanged;\n            {\n                var attr = this.attribute as InspectorDisplayAttribute;\n                fieldName = (attr == null) ? \"value\" : attr.FieldName;\n                notifyPropertyChanged = (attr == null) ? true : attr.NotifyPropertyChanged;\n            }\n\n            if (notifyPropertyChanged)\n            {\n                EditorGUI.BeginChangeCheck();\n            }\n            var targetSerializedProperty = property.FindPropertyRelative(fieldName);\n            if (targetSerializedProperty == null)\n            {\n                UnityEditor.EditorGUI.LabelField(position, label, new GUIContent() { text = \"InspectorDisplay can't find target:\" + fieldName });\n                if (notifyPropertyChanged)\n                {\n                    EditorGUI.EndChangeCheck();\n                }\n                return;\n            }\n            else\n            {\n                EmitPropertyField(position, targetSerializedProperty, label);\n            }\n\n            if (notifyPropertyChanged)\n            {\n                if (EditorGUI.EndChangeCheck())\n                {\n                    property.serializedObject.ApplyModifiedProperties(); // deserialize to field\n\n                    var paths = property.propertyPath.Split('.'); // X.Y.Z...\n                    var attachedComponent = property.serializedObject.targetObject;\n\n                    var targetProp = (paths.Length == 1)\n                        ? fieldInfo.GetValue(attachedComponent)\n                        : GetValueRecursive(attachedComponent, 0, paths);\n                    if (targetProp == null) return;\n                    var propInfo = targetProp.GetType().GetProperty(fieldName, BindingFlags.IgnoreCase | BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);\n                    var modifiedValue = propInfo.GetValue(targetProp, null); // retrieve new value\n\n                    var methodInfo = targetProp.GetType().GetMethod(\"SetValueAndForceNotify\", BindingFlags.IgnoreCase | BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);\n                    if (methodInfo != null)\n                    {\n                        methodInfo.Invoke(targetProp, new object[] { modifiedValue });\n                    }\n                }\n                else\n                {\n                    property.serializedObject.ApplyModifiedProperties();\n                }\n            }\n        }\n\n        object GetValueRecursive(object obj, int index, string[] paths)\n        {\n            var path = paths[index];\n\n            FieldInfo fldInfo = null;\n            var type = obj.GetType();\n            while (fldInfo == null)\n            {\n                // attempt to get information about the field\n                fldInfo = type.GetField(path, BindingFlags.IgnoreCase | BindingFlags.GetField | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);\n\n                if (fldInfo != null ||\n                    type.BaseType == null || \n                    type.BaseType.IsSubclassOf(typeof(ReactiveProperty<>))) break;\n\n                // if the field information is missing, it may be in the base class\n                type = type.BaseType;\n            }\n\n            // If array, path = Array.data[index]\n            if (fldInfo == null && path == \"Array\")\n            {\n                try\n                {\n                    path = paths[++index];\n                    var m = Regex.Match(path, @\"(.+)\\[([0-9]+)*\\]\");\n                    var arrayIndex = int.Parse(m.Groups[2].Value);\n                    var arrayValue = (obj as System.Collections.IList)[arrayIndex];\n                    if (index < paths.Length - 1)\n                    {\n                        return GetValueRecursive(arrayValue, ++index, paths);\n                    }\n                    else\n                    {\n                        return arrayValue;\n                    }\n                }\n                catch\n                {\n                    Debug.Log(\"InspectorDisplayDrawer Exception, objType:\" + obj.GetType().Name + \" path:\" + string.Join(\", \", paths));\n                    throw;\n                }\n            }\n            else if (fldInfo == null)\n            {\n                throw new Exception(\"Can't decode path, please report to UniRx's GitHub issues:\" + string.Join(\", \", paths));\n            }\n\n            var v = fldInfo.GetValue(obj);\n            if (index < paths.Length - 1)\n            {\n                return GetValueRecursive(v, ++index, paths);\n            }\n\n            return v;\n        }\n\n        public override float GetPropertyHeight(SerializedProperty property, GUIContent label)\n        {\n            var attr = this.attribute as InspectorDisplayAttribute;\n            var fieldName = (attr == null) ? \"value\" : attr.FieldName;\n\n            var height = base.GetPropertyHeight(property, label);\n            var valueProperty = property.FindPropertyRelative(fieldName);\n            if (valueProperty == null)\n            {\n                return height;\n            }\n\n            if (valueProperty.propertyType == SerializedPropertyType.Rect)\n            {\n                return height * 2;\n            }\n            if (valueProperty.propertyType == SerializedPropertyType.Bounds)\n            {\n                return height * 3;\n            }\n            if (valueProperty.propertyType == SerializedPropertyType.String)\n            {\n                var multilineAttr = GetMultilineAttribute();\n                if (multilineAttr != null)\n                {\n                    return ((!EditorGUIUtility.wideMode) ? 16f : 0f) + 16f + (float)((multilineAttr.Lines - 1) * 13);\n                };\n            }\n\n            if (valueProperty.isExpanded)\n            {\n                var count = 0;\n                var e = valueProperty.GetEnumerator();\n                while (e.MoveNext()) count++;\n                return ((height + 4) * count) + 6; // (Line = 20 + Padding) ?\n            }\n\n            return height;\n        }\n\n        protected virtual void EmitPropertyField(Rect position, UnityEditor.SerializedProperty targetSerializedProperty, GUIContent label)\n        {\n            var multiline = GetMultilineAttribute();\n            if (multiline == null)\n            {\n                var range = GetRangeAttribute();\n                if (range == null)\n                {\n                    UnityEditor.EditorGUI.PropertyField(position, targetSerializedProperty, label, includeChildren: true);\n                }\n                else\n                {\n                    if (targetSerializedProperty.propertyType == SerializedPropertyType.Float)\n                    {\n                        EditorGUI.Slider(position, targetSerializedProperty, range.Min, range.Max, label);\n                    }\n                    else if (targetSerializedProperty.propertyType == SerializedPropertyType.Integer)\n                    {\n                        EditorGUI.IntSlider(position, targetSerializedProperty, (int)range.Min, (int)range.Max, label);\n                    }\n                    else\n                    {\n                        EditorGUI.LabelField(position, label.text, \"Use Range with float or int.\");\n                    }\n                }\n            }\n            else\n            {\n                var property = targetSerializedProperty;\n\n                label = EditorGUI.BeginProperty(position, label, property);\n                var method = typeof(EditorGUI).GetMethod(\"MultiFieldPrefixLabel\", BindingFlags.Static | BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.NonPublic);\n                position = (Rect)method.Invoke(null, new object[] { position, 0, label, 1 });\n\n                EditorGUI.BeginChangeCheck();\n                int indentLevel = EditorGUI.indentLevel;\n                EditorGUI.indentLevel = 0;\n                var stringValue = EditorGUI.TextArea(position, property.stringValue);\n                EditorGUI.indentLevel = indentLevel;\n                if (EditorGUI.EndChangeCheck())\n                {\n                    property.stringValue = stringValue;\n                }\n                EditorGUI.EndProperty();\n            }\n        }\n\n        MultilineReactivePropertyAttribute GetMultilineAttribute()\n        {\n            var fi = this.fieldInfo;\n            if (fi == null) return null;\n            return fi.GetCustomAttributes(false).OfType<MultilineReactivePropertyAttribute>().FirstOrDefault();\n        }\n\n        RangeReactivePropertyAttribute GetRangeAttribute()\n        {\n            var fi = this.fieldInfo;\n            if (fi == null) return null;\n            return fi.GetCustomAttributes(false).OfType<RangeReactivePropertyAttribute>().FirstOrDefault();\n        }\n    }\n\n#endif\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/InspectorDisplayDrawer.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 6180f9fd2198dee44ae7f4a617529ffa\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/LifetimeDisposableExtensions.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing UniRx.Triggers;\nusing UnityEngine;\n\nnamespace UniRx\n{\n    public static partial class DisposableExtensions\n    {\n        /// <summary>Dispose self on target gameObject has been destroyed. Return value is self disposable.</summary>\n        public static T AddTo<T>(this T disposable, GameObject gameObject)\n            where T : IDisposable\n        {\n            if (gameObject == null)\n            {\n                disposable.Dispose();\n                return disposable;\n            }\n\n            var trigger = gameObject.GetComponent<ObservableDestroyTrigger>();\n            if (trigger == null)\n            {\n                trigger = gameObject.AddComponent<ObservableDestroyTrigger>();\n            }\n\n#pragma warning disable 618\n\n            // If gameObject is deactive, does not raise OnDestroy, watch and invoke trigger.\n            if (!trigger.IsActivated && !trigger.IsMonitoredActivate && !trigger.gameObject.activeInHierarchy)\n            {\n                trigger.IsMonitoredActivate = true;\n                MainThreadDispatcher.StartEndOfFrameMicroCoroutine(MonitorTriggerHealth(trigger, gameObject));\n            }\n\n#pragma warning restore 618\n\n            trigger.AddDisposableOnDestroy(disposable);\n            return disposable;\n        }\n\n        static IEnumerator MonitorTriggerHealth(ObservableDestroyTrigger trigger, GameObject targetGameObject)\n        {\n            while (true)\n            {\n                yield return null;\n                if (trigger.IsActivated) yield break;\n\n                if (targetGameObject == null) // isDestroy\n                {\n                    trigger.ForceRaiseOnDestroy(); // Force publish OnDestroy\n                    yield break;\n                }\n            }\n        }\n\n        /// <summary>Dispose self on target gameObject has been destroyed. Return value is self disposable.</summary>\n        public static T AddTo<T>(this T disposable, Component gameObjectComponent)\n            where T : IDisposable\n        {\n            if (gameObjectComponent == null)\n            {\n                disposable.Dispose();\n                return disposable;\n            }\n\n            return AddTo(disposable, gameObjectComponent.gameObject);\n        }\n\n        /// <summary>\n        /// <para>Add disposable(self) to CompositeDisposable(or other ICollection) and Dispose self on target gameObject has been destroyed.</para>\n        /// <para>Return value is self disposable.</para>\n        /// </summary>\n        public static T AddTo<T>(this T disposable, ICollection<IDisposable> container, GameObject gameObject)\n            where T : IDisposable\n        {\n            return disposable.AddTo(container).AddTo(gameObject);\n        }\n\n        /// <summary>\n        /// <para>Add disposable(self) to CompositeDisposable(or other ICollection) and Dispose self on target gameObject has been destroyed.</para>\n        /// <para>Return value is self disposable.</para>\n        /// </summary>\n        public static T AddTo<T>(this T disposable, ICollection<IDisposable> container, Component gameObjectComponent)\n            where T : IDisposable\n        {\n            return disposable.AddTo(container).AddTo(gameObjectComponent);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/LifetimeDisposableExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a7474e4acdc541340a1f566b2df46355\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/MainThreadDispatcher.cs",
    "content": "#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2)\n#define SupportCustomYieldInstruction\n#endif\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Threading;\nusing UniRx.InternalUtil;\nusing UnityEngine;\n\nnamespace UniRx\n{\n    public sealed class MainThreadDispatcher : MonoBehaviour\n    {\n        public enum CullingMode\n        {\n            /// <summary>\n            /// Won't remove any MainThreadDispatchers.\n            /// </summary>\n            Disabled,\n\n            /// <summary>\n            /// Checks if there is an existing MainThreadDispatcher on Awake(). If so, the new dispatcher removes itself.\n            /// </summary>\n            Self,\n\n            /// <summary>\n            /// Search for excess MainThreadDispatchers and removes them all on Awake().\n            /// </summary>\n            All\n        }\n\n        public static CullingMode cullingMode = CullingMode.Self;\n\n#if UNITY_EDITOR\n\n        // In UnityEditor's EditorMode can't instantiate and work MonoBehaviour.Update.\n        // EditorThreadDispatcher use EditorApplication.update instead of MonoBehaviour.Update.\n        class EditorThreadDispatcher\n        {\n            static object gate = new object();\n            static EditorThreadDispatcher instance;\n\n            public static EditorThreadDispatcher Instance\n            {\n                get\n                {\n                    // Activate EditorThreadDispatcher is dangerous, completely Lazy.\n                    lock (gate)\n                    {\n                        if (instance == null)\n                        {\n                            instance = new EditorThreadDispatcher();\n                        }\n\n                        return instance;\n                    }\n                }\n            }\n\n            ThreadSafeQueueWorker editorQueueWorker = new ThreadSafeQueueWorker();\n\n            EditorThreadDispatcher()\n            {\n                UnityEditor.EditorApplication.update += Update;\n            }\n\n            public void Enqueue(Action<object> action, object state)\n            {\n                editorQueueWorker.Enqueue(action, state);\n            }\n\n            public void UnsafeInvoke(Action action)\n            {\n                try\n                {\n                    action();\n                }\n                catch (Exception ex)\n                {\n                    Debug.LogException(ex);\n                }\n            }\n\n            public void UnsafeInvoke<T>(Action<T> action, T state)\n            {\n                try\n                {\n                    action(state);\n                }\n                catch (Exception ex)\n                {\n                    Debug.LogException(ex);\n                }\n            }\n\n            public void PseudoStartCoroutine(IEnumerator routine)\n            {\n                editorQueueWorker.Enqueue(_ => ConsumeEnumerator(routine), null);\n            }\n\n            void Update()\n            {\n                editorQueueWorker.ExecuteAll(x => Debug.LogException(x));\n            }\n\n            void ConsumeEnumerator(IEnumerator routine)\n            {\n                if (routine.MoveNext())\n                {\n                    var current = routine.Current;\n                    if (current == null)\n                    {\n                        goto ENQUEUE;\n                    }\n\n                    var type = current.GetType();\n#if UNITY_2018_3_OR_NEWER\n#pragma warning disable CS0618\n#endif\n                    if (type == typeof(WWW))\n                    {\n                        var www = (WWW)current;\n                        editorQueueWorker.Enqueue(_ => ConsumeEnumerator(UnwrapWaitWWW(www, routine)), null);\n                        return;\n                    }\n#if UNITY_2018_3_OR_NEWER\n#pragma warning restore CS0618\n#endif\n                    else if (type == typeof(AsyncOperation))\n                    {\n                        var asyncOperation = (AsyncOperation)current;\n                        editorQueueWorker.Enqueue(_ => ConsumeEnumerator(UnwrapWaitAsyncOperation(asyncOperation, routine)), null);\n                        return;\n                    }\n                    else if (type == typeof(WaitForSeconds))\n                    {\n                        var waitForSeconds = (WaitForSeconds)current;\n                        var accessor = typeof(WaitForSeconds).GetField(\"m_Seconds\", BindingFlags.Instance | BindingFlags.GetField | BindingFlags.NonPublic);\n                        var second = (float)accessor.GetValue(waitForSeconds);\n                        editorQueueWorker.Enqueue(_ => ConsumeEnumerator(UnwrapWaitForSeconds(second, routine)), null);\n                        return;\n                    }\n                    else if (type == typeof(Coroutine))\n                    {\n                        Debug.Log(\"Can't wait coroutine on UnityEditor\");\n                        goto ENQUEUE;\n                    }\n#if SupportCustomYieldInstruction\n                    else if (current is IEnumerator)\n                    {\n                        var enumerator = (IEnumerator)current;\n                        editorQueueWorker.Enqueue(_ => ConsumeEnumerator(UnwrapEnumerator(enumerator, routine)), null);\n                        return;\n                    }\n#endif\n\n                    ENQUEUE:\n                    editorQueueWorker.Enqueue(_ => ConsumeEnumerator(routine), null); // next update\n                }\n            }\n\n#if UNITY_2018_3_OR_NEWER\n#pragma warning disable CS0618\n#endif\n            IEnumerator UnwrapWaitWWW(WWW www, IEnumerator continuation)\n            {\n                while (!www.isDone)\n                {\n                    yield return null;\n                }\n                ConsumeEnumerator(continuation);\n            }\n#if UNITY_2018_3_OR_NEWER\n#pragma warning restore CS0618\n#endif\n\n            IEnumerator UnwrapWaitAsyncOperation(AsyncOperation asyncOperation, IEnumerator continuation)\n            {\n                while (!asyncOperation.isDone)\n                {\n                    yield return null;\n                }\n                ConsumeEnumerator(continuation);\n            }\n\n            IEnumerator UnwrapWaitForSeconds(float second, IEnumerator continuation)\n            {\n                var startTime = DateTimeOffset.UtcNow;\n                while (true)\n                {\n                    yield return null;\n\n                    var elapsed = (DateTimeOffset.UtcNow - startTime).TotalSeconds;\n                    if (elapsed >= second)\n                    {\n                        break;\n                    }\n                };\n                ConsumeEnumerator(continuation);\n            }\n\n            IEnumerator UnwrapEnumerator(IEnumerator enumerator, IEnumerator continuation)\n            {\n                while (enumerator.MoveNext())\n                {\n                    yield return null;\n                }\n                ConsumeEnumerator(continuation);\n            }\n        }\n\n#endif\n\n        /// <summary>Dispatch Asyncrhonous action.</summary>\n        public static void Post(Action<object> action, object state)\n        {\n#if UNITY_EDITOR\n            if (!ScenePlaybackDetector.IsPlaying) { EditorThreadDispatcher.Instance.Enqueue(action, state); return; }\n\n#endif\n\n            var dispatcher = Instance;\n            if (!isQuitting && !object.ReferenceEquals(dispatcher, null))\n            {\n                dispatcher.queueWorker.Enqueue(action, state);\n            }\n        }\n\n        /// <summary>Dispatch Synchronous action if possible.</summary>\n        public static void Send(Action<object> action, object state)\n        {\n#if UNITY_EDITOR\n            if (!ScenePlaybackDetector.IsPlaying) { EditorThreadDispatcher.Instance.Enqueue(action, state); return; }\n#endif\n\n            if (mainThreadToken != null)\n            {\n                try\n                {\n                    action(state);\n                }\n                catch (Exception ex)\n                {\n                    var dispatcher = MainThreadDispatcher.Instance;\n                    if (dispatcher != null)\n                    {\n                        dispatcher.unhandledExceptionCallback(ex);\n                    }\n                }\n            }\n            else\n            {\n                Post(action, state);\n            }\n        }\n\n        /// <summary>Run Synchronous action.</summary>\n        public static void UnsafeSend(Action action)\n        {\n#if UNITY_EDITOR\n            if (!ScenePlaybackDetector.IsPlaying) { EditorThreadDispatcher.Instance.UnsafeInvoke(action); return; }\n#endif\n\n            try\n            {\n                action();\n            }\n            catch (Exception ex)\n            {\n                var dispatcher = MainThreadDispatcher.Instance;\n                if (dispatcher != null)\n                {\n                    dispatcher.unhandledExceptionCallback(ex);\n                }\n            }\n        }\n\n        /// <summary>Run Synchronous action.</summary>\n        public static void UnsafeSend<T>(Action<T> action, T state)\n        {\n#if UNITY_EDITOR\n            if (!ScenePlaybackDetector.IsPlaying) { EditorThreadDispatcher.Instance.UnsafeInvoke(action, state); return; }\n#endif\n\n            try\n            {\n                action(state);\n            }\n            catch (Exception ex)\n            {\n                var dispatcher = MainThreadDispatcher.Instance;\n                if (dispatcher != null)\n                {\n                    dispatcher.unhandledExceptionCallback(ex);\n                }\n            }\n        }\n\n        /// <summary>ThreadSafe StartCoroutine.</summary>\n        public static void SendStartCoroutine(IEnumerator routine)\n        {\n            if (mainThreadToken != null)\n            {\n                StartCoroutine(routine);\n            }\n            else\n            {\n#if UNITY_EDITOR\n                // call from other thread\n                if (!ScenePlaybackDetector.IsPlaying) { EditorThreadDispatcher.Instance.PseudoStartCoroutine(routine); return; }\n#endif\n\n                var dispatcher = Instance;\n                if (!isQuitting && !object.ReferenceEquals(dispatcher, null))\n                {\n                    dispatcher.queueWorker.Enqueue(_ =>\n                    {\n                        var dispacher2 = Instance;\n                        if (dispacher2 != null)\n                        {\n                            (dispacher2 as MonoBehaviour).StartCoroutine(routine);\n                        }\n                    }, null);\n                }\n            }\n        }\n\n        public static void StartUpdateMicroCoroutine(IEnumerator routine)\n        {\n#if UNITY_EDITOR\n            if (!ScenePlaybackDetector.IsPlaying) { EditorThreadDispatcher.Instance.PseudoStartCoroutine(routine); return; }\n#endif\n\n            var dispatcher = Instance;\n            if (dispatcher != null)\n            {\n                dispatcher.updateMicroCoroutine.AddCoroutine(routine);\n            }\n        }\n\n        public static void StartFixedUpdateMicroCoroutine(IEnumerator routine)\n        {\n#if UNITY_EDITOR\n            if (!ScenePlaybackDetector.IsPlaying) { EditorThreadDispatcher.Instance.PseudoStartCoroutine(routine); return; }\n#endif\n\n            var dispatcher = Instance;\n            if (dispatcher != null)\n            {\n                dispatcher.fixedUpdateMicroCoroutine.AddCoroutine(routine);\n            }\n        }\n\n        public static void StartEndOfFrameMicroCoroutine(IEnumerator routine)\n        {\n#if UNITY_EDITOR\n            if (!ScenePlaybackDetector.IsPlaying) { EditorThreadDispatcher.Instance.PseudoStartCoroutine(routine); return; }\n#endif\n\n            var dispatcher = Instance;\n            if (dispatcher != null)\n            {\n                dispatcher.endOfFrameMicroCoroutine.AddCoroutine(routine);\n            }\n        }\n\n        new public static Coroutine StartCoroutine(IEnumerator routine)\n        {\n#if UNITY_EDITOR\n            if (!ScenePlaybackDetector.IsPlaying) { EditorThreadDispatcher.Instance.PseudoStartCoroutine(routine); return null; }\n#endif\n\n            var dispatcher = Instance;\n            if (dispatcher != null)\n            {\n                return (dispatcher as MonoBehaviour).StartCoroutine(routine);\n            }\n            else\n            {\n                return null;\n            }\n        }\n\n        public static void RegisterUnhandledExceptionCallback(Action<Exception> exceptionCallback)\n        {\n            if (exceptionCallback == null)\n            {\n                // do nothing\n                Instance.unhandledExceptionCallback = Stubs<Exception>.Ignore;\n            }\n            else\n            {\n                Instance.unhandledExceptionCallback = exceptionCallback;\n            }\n        }\n\n        ThreadSafeQueueWorker queueWorker = new ThreadSafeQueueWorker();\n        Action<Exception> unhandledExceptionCallback = ex => Debug.LogException(ex); // default\n\n        MicroCoroutine updateMicroCoroutine = null;\n        MicroCoroutine fixedUpdateMicroCoroutine = null;\n        MicroCoroutine endOfFrameMicroCoroutine = null;\n\n        static MainThreadDispatcher instance;\n        static bool initialized;\n        static bool isQuitting = false;\n\n        public static string InstanceName\n        {\n            get\n            {\n                if (instance == null)\n                {\n                    throw new NullReferenceException(\"MainThreadDispatcher is not initialized.\");\n                }\n                return instance.name;\n            }\n        }\n\n        public static bool IsInitialized\n        {\n            get { return initialized && instance != null; }\n        }\n\n        [ThreadStatic]\n        static object mainThreadToken;\n\n        static MainThreadDispatcher Instance\n        {\n            get\n            {\n                Initialize();\n                return instance;\n            }\n        }\n\n        public static void Initialize()\n        {\n            if (!initialized)\n            {\n#if UNITY_EDITOR\n                // Don't try to add a GameObject when the scene is not playing. Only valid in the Editor, EditorView.\n                if (!ScenePlaybackDetector.IsPlaying) return;\n#endif\n                MainThreadDispatcher dispatcher = null;\n\n                try\n                {\n                    dispatcher = GameObject.FindObjectOfType<MainThreadDispatcher>();\n                }\n                catch\n                {\n                    // Throw exception when calling from a worker thread.\n                    var ex = new Exception(\"UniRx requires a MainThreadDispatcher component created on the main thread. Make sure it is added to the scene before calling UniRx from a worker thread.\");\n                    UnityEngine.Debug.LogException(ex);\n                    throw ex;\n                }\n\n                if (isQuitting)\n                {\n                    // don't create new instance after quitting\n                    // avoid \"Some objects were not cleaned up when closing the scene find target\" error.\n                    return;\n                }\n\n                if (dispatcher == null)\n                {\n                    // awake call immediately from UnityEngine\n                    new GameObject(\"MainThreadDispatcher\").AddComponent<MainThreadDispatcher>();\n                }\n                else\n                {\n                    dispatcher.Awake(); // force awake\n                }\n            }\n        }\n\n        public static bool IsInMainThread\n        {\n            get\n            {\n                return (mainThreadToken != null);\n            }\n        }\n\n        void Awake()\n        {\n            if (instance == null)\n            {\n                instance = this;\n                mainThreadToken = new object();\n                initialized = true;\n\n                updateMicroCoroutine = new MicroCoroutine(ex => unhandledExceptionCallback(ex));\n                fixedUpdateMicroCoroutine = new MicroCoroutine(ex => unhandledExceptionCallback(ex));\n                endOfFrameMicroCoroutine = new MicroCoroutine(ex => unhandledExceptionCallback(ex));\n\n                StartCoroutine(RunUpdateMicroCoroutine());\n                StartCoroutine(RunFixedUpdateMicroCoroutine());\n                StartCoroutine(RunEndOfFrameMicroCoroutine());\n\n                DontDestroyOnLoad(gameObject);\n            }\n            else\n            {\n                if (this != instance)\n                {\n                    if (cullingMode == CullingMode.Self)\n                    {\n                        // Try to destroy this dispatcher if there's already one in the scene.\n                        Debug.LogWarning(\"There is already a MainThreadDispatcher in the scene. Removing myself...\");\n                        DestroyDispatcher(this);\n                    }\n                    else if (cullingMode == CullingMode.All)\n                    {\n                        Debug.LogWarning(\"There is already a MainThreadDispatcher in the scene. Cleaning up all excess dispatchers...\");\n                        CullAllExcessDispatchers();\n                    }\n                    else\n                    {\n                        Debug.LogWarning(\"There is already a MainThreadDispatcher in the scene.\");\n                    }\n                }\n            }\n        }\n\n        IEnumerator RunUpdateMicroCoroutine()\n        {\n            while (true)\n            {\n                yield return null;\n                updateMicroCoroutine.Run();\n            }\n        }\n\n        IEnumerator RunFixedUpdateMicroCoroutine()\n        {\n            while (true)\n            {\n                yield return YieldInstructionCache.WaitForFixedUpdate;\n                fixedUpdateMicroCoroutine.Run();\n            }\n        }\n\n        IEnumerator RunEndOfFrameMicroCoroutine()\n        {\n            while (true)\n            {\n                yield return YieldInstructionCache.WaitForEndOfFrame;\n                endOfFrameMicroCoroutine.Run();\n            }\n        }\n\n        static void DestroyDispatcher(MainThreadDispatcher aDispatcher)\n        {\n            if (aDispatcher != instance)\n            {\n                // Try to remove game object if it's empty\n                var components = aDispatcher.gameObject.GetComponents<Component>();\n                if (aDispatcher.gameObject.transform.childCount == 0 && components.Length == 2)\n                {\n                    if (components[0] is Transform && components[1] is MainThreadDispatcher)\n                    {\n                        Destroy(aDispatcher.gameObject);\n                    }\n                }\n                else\n                {\n                    // Remove component\n                    MonoBehaviour.Destroy(aDispatcher);\n                }\n            }\n        }\n\n        public static void CullAllExcessDispatchers()\n        {\n            var dispatchers = GameObject.FindObjectsOfType<MainThreadDispatcher>();\n            for (int i = 0; i < dispatchers.Length; i++)\n            {\n                DestroyDispatcher(dispatchers[i]);\n            }\n        }\n\n        void OnDestroy()\n        {\n            if (instance == this)\n            {\n                instance = GameObject.FindObjectOfType<MainThreadDispatcher>();\n                initialized = instance != null;\n\n                /*\n                // Although `this` still refers to a gameObject, it won't be found.\n                var foundDispatcher = GameObject.FindObjectOfType<MainThreadDispatcher>();\n\n                if (foundDispatcher != null)\n                {\n                    // select another game object\n                    Debug.Log(\"new instance: \" + foundDispatcher.name);\n                    instance = foundDispatcher;\n                    initialized = true;\n                }\n                */\n            }\n        }\n\n        void Update()\n        {\n            if (update != null)\n            {\n                try\n                {\n                    update.OnNext(Unit.Default);\n                }\n                catch (Exception ex)\n                {\n                    unhandledExceptionCallback(ex);\n                }\n            }\n            queueWorker.ExecuteAll(unhandledExceptionCallback);\n        }\n\n        // for Lifecycle Management\n\n        Subject<Unit> update;\n\n        public static IObservable<Unit> UpdateAsObservable()\n        {\n            return Instance.update ?? (Instance.update = new Subject<Unit>());\n        }\n\n        Subject<Unit> lateUpdate;\n\n        void LateUpdate()\n        {\n            if (lateUpdate != null) lateUpdate.OnNext(Unit.Default);\n        }\n\n        public static IObservable<Unit> LateUpdateAsObservable()\n        {\n            return Instance.lateUpdate ?? (Instance.lateUpdate = new Subject<Unit>());\n        }\n\n        Subject<bool> onApplicationFocus;\n\n        void OnApplicationFocus(bool focus)\n        {\n            if (onApplicationFocus != null) onApplicationFocus.OnNext(focus);\n        }\n\n        public static IObservable<bool> OnApplicationFocusAsObservable()\n        {\n            return Instance.onApplicationFocus ?? (Instance.onApplicationFocus = new Subject<bool>());\n        }\n\n        Subject<bool> onApplicationPause;\n\n        void OnApplicationPause(bool pause)\n        {\n            if (onApplicationPause != null) onApplicationPause.OnNext(pause);\n        }\n\n        public static IObservable<bool> OnApplicationPauseAsObservable()\n        {\n            return Instance.onApplicationPause ?? (Instance.onApplicationPause = new Subject<bool>());\n        }\n\n        Subject<Unit> onApplicationQuit;\n\n        void OnApplicationQuit()\n        {\n            isQuitting = true;\n            if (onApplicationQuit != null) onApplicationQuit.OnNext(Unit.Default);\n        }\n\n        public static IObservable<Unit> OnApplicationQuitAsObservable()\n        {\n            return Instance.onApplicationQuit ?? (Instance.onApplicationQuit = new Subject<Unit>());\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/MainThreadDispatcher.cs.meta",
    "content": "fileFormatVersion: 2\nguid: c3cd207057515c4438a31a6a7b548fe7\ntimeCreated: 1465903910\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: -16000\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/MainThreadScheduler.cs",
    "content": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Threading;\nusing UnityEngine;\n\nnamespace UniRx\n{\n#if UniRxLibrary\n    public static partial class SchedulerUnity\n    {\n#else\n    public static partial class Scheduler\n    {\n        public static void SetDefaultForUnity()\n        {\n            Scheduler.DefaultSchedulers.ConstantTimeOperations = Scheduler.Immediate;\n            Scheduler.DefaultSchedulers.TailRecursion = Scheduler.Immediate;\n            Scheduler.DefaultSchedulers.Iteration = Scheduler.CurrentThread;\n            Scheduler.DefaultSchedulers.TimeBasedOperations = MainThread;\n            Scheduler.DefaultSchedulers.AsyncConversions = Scheduler.ThreadPool;\n        }\n#endif\n        static IScheduler mainThread;\n\n        /// <summary>\n        /// Unity native MainThread Queue Scheduler. Run on mainthread and delayed on coroutine update loop, elapsed time is calculated based on Time.time.\n        /// </summary>\n        public static IScheduler MainThread\n        {\n            get\n            {\n                return mainThread ?? (mainThread = new MainThreadScheduler());\n            }\n        }\n\n        static IScheduler mainThreadIgnoreTimeScale;\n\n        /// <summary>\n        /// Another MainThread scheduler, delay elapsed time is calculated based on Time.unscaledDeltaTime.\n        /// </summary>\n        public static IScheduler MainThreadIgnoreTimeScale\n        {\n            get\n            {\n                return mainThreadIgnoreTimeScale ?? (mainThreadIgnoreTimeScale = new IgnoreTimeScaleMainThreadScheduler());\n            }\n        }\n\n        static IScheduler mainThreadFixedUpdate;\n\n        /// <summary>\n        /// Run on fixed update mainthread, delay elapsed time is calculated based on Time.fixedTime.\n        /// </summary>\n        public static IScheduler MainThreadFixedUpdate\n        {\n            get\n            {\n                return mainThreadFixedUpdate ?? (mainThreadFixedUpdate = new FixedUpdateMainThreadScheduler());\n            }\n        }\n\n        static IScheduler mainThreadEndOfFrame;\n\n        /// <summary>\n        /// Run on end of frame mainthread, delay elapsed time is calculated based on Time.deltaTime.\n        /// </summary>\n        public static IScheduler MainThreadEndOfFrame\n        {\n            get\n            {\n                return mainThreadEndOfFrame ?? (mainThreadEndOfFrame = new EndOfFrameMainThreadScheduler());\n            }\n        }\n\n        class MainThreadScheduler : IScheduler, ISchedulerPeriodic, ISchedulerQueueing\n        {\n            readonly Action<object> scheduleAction;\n\n            public MainThreadScheduler()\n            {\n                MainThreadDispatcher.Initialize();\n                scheduleAction = new Action<object>(Schedule);\n            }\n\n            // delay action is run in StartCoroutine\n            // Okay to action run synchronous and guaranteed run on MainThread\n            IEnumerator DelayAction(TimeSpan dueTime, Action action, ICancelable cancellation)\n            {\n                // zero == every frame\n                if (dueTime == TimeSpan.Zero)\n                {\n                    yield return null; // not immediately, run next frame\n                }\n                else\n                {\n                    yield return new WaitForSeconds((float)dueTime.TotalSeconds);\n                }\n\n                if (cancellation.IsDisposed) yield break;\n                MainThreadDispatcher.UnsafeSend(action);\n            }\n\n            IEnumerator PeriodicAction(TimeSpan period, Action action, ICancelable cancellation)\n            {\n                // zero == every frame\n                if (period == TimeSpan.Zero)\n                {\n                    while (true)\n                    {\n                        yield return null; // not immediately, run next frame\n                        if (cancellation.IsDisposed) yield break;\n\n                        MainThreadDispatcher.UnsafeSend(action);\n                    }\n                }\n                else\n                {\n                    var seconds = (float)(period.TotalMilliseconds / 1000.0);\n                    var yieldInstruction = new WaitForSeconds(seconds); // cache single instruction object\n\n                    while (true)\n                    {\n                        yield return yieldInstruction;\n                        if (cancellation.IsDisposed) yield break;\n\n                        MainThreadDispatcher.UnsafeSend(action);\n                    }\n                }\n            }\n\n            public DateTimeOffset Now\n            {\n                get { return Scheduler.Now; }\n            }\n\n            void Schedule(object state)\n            {\n                var t = (Tuple<BooleanDisposable, Action>)state;\n                if (!t.Item1.IsDisposed)\n                {\n                    t.Item2();\n                }\n            }\n\n            public IDisposable Schedule(Action action)\n            {\n                var d = new BooleanDisposable();\n                MainThreadDispatcher.Post(scheduleAction, Tuple.Create(d, action));\n                return d;\n            }\n\n            public IDisposable Schedule(DateTimeOffset dueTime, Action action)\n            {\n                return Schedule(dueTime - Now, action);\n            }\n\n            public IDisposable Schedule(TimeSpan dueTime, Action action)\n            {\n                var d = new BooleanDisposable();\n                var time = Scheduler.Normalize(dueTime);\n\n                MainThreadDispatcher.SendStartCoroutine(DelayAction(time, action, d));\n\n                return d;\n            }\n\n            public IDisposable SchedulePeriodic(TimeSpan period, Action action)\n            {\n                var d = new BooleanDisposable();\n                var time = Scheduler.Normalize(period);\n\n                MainThreadDispatcher.SendStartCoroutine(PeriodicAction(time, action, d));\n\n                return d;\n            }\n\n            void ScheduleQueueing<T>(object state)\n            {\n                var t = (Tuple<ICancelable, T, Action<T>>)state;\n                if (!t.Item1.IsDisposed)\n                {\n                    t.Item3(t.Item2);\n                }\n            }\n\n            public void ScheduleQueueing<T>(ICancelable cancel, T state, Action<T> action)\n            {\n                MainThreadDispatcher.Post(QueuedAction<T>.Instance, Tuple.Create(cancel, state, action));\n            }\n\n            static class QueuedAction<T>\n            {\n                public static readonly Action<object> Instance = new Action<object>(Invoke);\n\n                public static void Invoke(object state)\n                {\n                    var t = (Tuple<ICancelable, T, Action<T>>)state;\n\n                    if (!t.Item1.IsDisposed)\n                    {\n                        t.Item3(t.Item2);\n                    }\n                }\n            }\n        }\n\n        class IgnoreTimeScaleMainThreadScheduler : IScheduler, ISchedulerPeriodic, ISchedulerQueueing\n        {\n            readonly Action<object> scheduleAction;\n\n            public IgnoreTimeScaleMainThreadScheduler()\n            {\n                MainThreadDispatcher.Initialize();\n                scheduleAction = new Action<object>(Schedule);\n            }\n\n            IEnumerator DelayAction(TimeSpan dueTime, Action action, ICancelable cancellation)\n            {\n                if (dueTime == TimeSpan.Zero)\n                {\n                    yield return null;\n                    if (cancellation.IsDisposed) yield break;\n\n                    MainThreadDispatcher.UnsafeSend(action);\n                }\n                else\n                {\n                    var elapsed = 0f;\n                    var dt = (float)dueTime.TotalSeconds;\n                    while (true)\n                    {\n                        yield return null;\n                        if (cancellation.IsDisposed) break;\n\n                        elapsed += Time.unscaledDeltaTime;\n                        if (elapsed >= dt)\n                        {\n                            MainThreadDispatcher.UnsafeSend(action);\n                            break;\n                        }\n                    }\n                }\n            }\n\n            IEnumerator PeriodicAction(TimeSpan period, Action action, ICancelable cancellation)\n            {\n                // zero == every frame\n                if (period == TimeSpan.Zero)\n                {\n                    while (true)\n                    {\n                        yield return null; // not immediately, run next frame\n                        if (cancellation.IsDisposed) yield break;\n\n                        MainThreadDispatcher.UnsafeSend(action);\n                    }\n                }\n                else\n                {\n                    var elapsed = 0f;\n                    var dt = (float)period.TotalSeconds;\n                    while (true)\n                    {\n                        yield return null;\n                        if (cancellation.IsDisposed) break;\n\n                        elapsed += Time.unscaledDeltaTime;\n                        if (elapsed >= dt)\n                        {\n                            MainThreadDispatcher.UnsafeSend(action);\n                            elapsed = 0;\n                        }\n                    }\n                }\n            }\n\n            public DateTimeOffset Now\n            {\n                get { return Scheduler.Now; }\n            }\n\n            void Schedule(object state)\n            {\n                var t = (Tuple<BooleanDisposable, Action>)state;\n                if (!t.Item1.IsDisposed)\n                {\n                    t.Item2();\n                }\n            }\n\n            public IDisposable Schedule(Action action)\n            {\n                var d = new BooleanDisposable();\n                MainThreadDispatcher.Post(scheduleAction, Tuple.Create(d, action));\n                return d;\n            }\n\n            public IDisposable Schedule(DateTimeOffset dueTime, Action action)\n            {\n                return Schedule(dueTime - Now, action);\n            }\n\n            public IDisposable Schedule(TimeSpan dueTime, Action action)\n            {\n                var d = new BooleanDisposable();\n                var time = Scheduler.Normalize(dueTime);\n\n                MainThreadDispatcher.SendStartCoroutine(DelayAction(time, action, d));\n\n                return d;\n            }\n\n            public IDisposable SchedulePeriodic(TimeSpan period, Action action)\n            {\n                var d = new BooleanDisposable();\n                var time = Scheduler.Normalize(period);\n\n                MainThreadDispatcher.SendStartCoroutine(PeriodicAction(time, action, d));\n\n                return d;\n            }\n\n            public void ScheduleQueueing<T>(ICancelable cancel, T state, Action<T> action)\n            {\n                MainThreadDispatcher.Post(QueuedAction<T>.Instance, Tuple.Create(cancel, state, action));\n            }\n\n            static class QueuedAction<T>\n            {\n                public static readonly Action<object> Instance = new Action<object>(Invoke);\n\n                public static void Invoke(object state)\n                {\n                    var t = (Tuple<ICancelable, T, Action<T>>)state;\n\n                    if (!t.Item1.IsDisposed)\n                    {\n                        t.Item3(t.Item2);\n                    }\n                }\n            }\n        }\n\n        class FixedUpdateMainThreadScheduler : IScheduler, ISchedulerPeriodic, ISchedulerQueueing\n        {\n            public FixedUpdateMainThreadScheduler()\n            {\n                MainThreadDispatcher.Initialize();\n            }\n\n            IEnumerator ImmediateAction<T>(T state, Action<T> action, ICancelable cancellation)\n            {\n                yield return null;\n                if (cancellation.IsDisposed) yield break;\n\n                MainThreadDispatcher.UnsafeSend(action, state);\n            }\n\n            IEnumerator DelayAction(TimeSpan dueTime, Action action, ICancelable cancellation)\n            {\n                if (dueTime == TimeSpan.Zero)\n                {\n                    yield return null;\n                    if (cancellation.IsDisposed) yield break;\n\n                    MainThreadDispatcher.UnsafeSend(action);\n                }\n                else\n                {\n                    var startTime = Time.fixedTime;\n                    var dt = (float)dueTime.TotalSeconds;\n                    while (true)\n                    {\n                        yield return null;\n                        if (cancellation.IsDisposed) break;\n\n                        var elapsed = Time.fixedTime - startTime;\n                        if (elapsed >= dt)\n                        {\n                            MainThreadDispatcher.UnsafeSend(action);\n                            break;\n                        }\n                    }\n                }\n            }\n\n            IEnumerator PeriodicAction(TimeSpan period, Action action, ICancelable cancellation)\n            {\n                // zero == every frame\n                if (period == TimeSpan.Zero)\n                {\n                    while (true)\n                    {\n                        yield return null;\n                        if (cancellation.IsDisposed) yield break;\n\n                        MainThreadDispatcher.UnsafeSend(action);\n                    }\n                }\n                else\n                {\n                    var startTime = Time.fixedTime;\n                    var dt = (float)period.TotalSeconds;\n                    while (true)\n                    {\n                        yield return null;\n                        if (cancellation.IsDisposed) break;\n\n                        var ft = Time.fixedTime;\n                        var elapsed = ft - startTime;\n                        if (elapsed >= dt)\n                        {\n                            MainThreadDispatcher.UnsafeSend(action);\n                            startTime = ft;\n                        }\n                    }\n                }\n            }\n\n            public DateTimeOffset Now\n            {\n                get { return Scheduler.Now; }\n            }\n\n            public IDisposable Schedule(Action action)\n            {\n                return Schedule(TimeSpan.Zero, action);\n            }\n\n            public IDisposable Schedule(DateTimeOffset dueTime, Action action)\n            {\n                return Schedule(dueTime - Now, action);\n            }\n\n            public IDisposable Schedule(TimeSpan dueTime, Action action)\n            {\n                var d = new BooleanDisposable();\n                var time = Scheduler.Normalize(dueTime);\n\n                MainThreadDispatcher.StartFixedUpdateMicroCoroutine(DelayAction(time, action, d));\n\n                return d;\n            }\n\n            public IDisposable SchedulePeriodic(TimeSpan period, Action action)\n            {\n                var d = new BooleanDisposable();\n                var time = Scheduler.Normalize(period);\n\n                MainThreadDispatcher.StartFixedUpdateMicroCoroutine(PeriodicAction(time, action, d));\n\n                return d;\n            }\n\n            public void ScheduleQueueing<T>(ICancelable cancel, T state, Action<T> action)\n            {\n                MainThreadDispatcher.StartFixedUpdateMicroCoroutine(ImmediateAction(state, action, cancel));\n            }\n        }\n\n        class EndOfFrameMainThreadScheduler : IScheduler, ISchedulerPeriodic, ISchedulerQueueing\n        {\n            public EndOfFrameMainThreadScheduler()\n            {\n                MainThreadDispatcher.Initialize();\n            }\n\n            IEnumerator ImmediateAction<T>(T state, Action<T> action, ICancelable cancellation)\n            {\n                yield return null;\n                if (cancellation.IsDisposed) yield break;\n\n                MainThreadDispatcher.UnsafeSend(action, state);\n            }\n\n            IEnumerator DelayAction(TimeSpan dueTime, Action action, ICancelable cancellation)\n            {\n                if (dueTime == TimeSpan.Zero)\n                {\n                    yield return null;\n                    if (cancellation.IsDisposed) yield break;\n\n                    MainThreadDispatcher.UnsafeSend(action);\n                }\n                else\n                {\n                    var elapsed = 0f;\n                    var dt = (float)dueTime.TotalSeconds;\n                    while (true)\n                    {\n                        yield return null;\n                        if (cancellation.IsDisposed) break;\n\n                        elapsed += Time.deltaTime;\n                        if (elapsed >= dt)\n                        {\n                            MainThreadDispatcher.UnsafeSend(action);\n                            break;\n                        }\n                    }\n                }\n            }\n\n            IEnumerator PeriodicAction(TimeSpan period, Action action, ICancelable cancellation)\n            {\n                // zero == every frame\n                if (period == TimeSpan.Zero)\n                {\n                    while (true)\n                    {\n                        yield return null;\n                        if (cancellation.IsDisposed) yield break;\n\n                        MainThreadDispatcher.UnsafeSend(action);\n                    }\n                }\n                else\n                {\n                    var elapsed = 0f;\n                    var dt = (float)period.TotalSeconds;\n                    while (true)\n                    {\n                        yield return null;\n                        if (cancellation.IsDisposed) break;\n                        \n                        elapsed += Time.deltaTime;\n                        if (elapsed >= dt)\n                        {\n                            MainThreadDispatcher.UnsafeSend(action);\n                            elapsed = 0;\n                        }\n                    }\n                }\n            }\n\n            public DateTimeOffset Now\n            {\n                get { return Scheduler.Now; }\n            }\n\n            public IDisposable Schedule(Action action)\n            {\n                return Schedule(TimeSpan.Zero, action);\n            }\n\n            public IDisposable Schedule(DateTimeOffset dueTime, Action action)\n            {\n                return Schedule(dueTime - Now, action);\n            }\n\n            public IDisposable Schedule(TimeSpan dueTime, Action action)\n            {\n                var d = new BooleanDisposable();\n                var time = Scheduler.Normalize(dueTime);\n\n                MainThreadDispatcher.StartEndOfFrameMicroCoroutine(DelayAction(time, action, d));\n\n                return d;\n            }\n\n            public IDisposable SchedulePeriodic(TimeSpan period, Action action)\n            {\n                var d = new BooleanDisposable();\n                var time = Scheduler.Normalize(period);\n\n                MainThreadDispatcher.StartEndOfFrameMicroCoroutine(PeriodicAction(time, action, d));\n\n                return d;\n            }\n\n            public void ScheduleQueueing<T>(ICancelable cancel, T state, Action<T> action)\n            {\n                MainThreadDispatcher.StartEndOfFrameMicroCoroutine(ImmediateAction(state, action, cancel));\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/MainThreadScheduler.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f141c5dc72b97084a85631367a946ee8\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Observable.Unity.cs",
    "content": "﻿#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2)\n#define SupportCustomYieldInstruction\n#endif\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing UniRx.InternalUtil;\nusing UniRx.Triggers;\nusing UnityEngine;\nusing System.Threading;\n\n#if !UniRxLibrary\nusing SchedulerUnity = UniRx.Scheduler;\n#endif\n\nnamespace UniRx\n{\n    public enum FrameCountType\n    {\n        Update,\n        FixedUpdate,\n        EndOfFrame,\n    }\n\n    public enum MainThreadDispatchType\n    {\n        /// <summary>yield return null</summary>\n        Update,\n        FixedUpdate,\n        EndOfFrame,\n        GameObjectUpdate,\n        LateUpdate,\n    }\n\n    public static class FrameCountTypeExtensions\n    {\n        public static YieldInstruction GetYieldInstruction(this FrameCountType frameCountType)\n        {\n            switch (frameCountType)\n            {\n                case FrameCountType.FixedUpdate:\n                    return YieldInstructionCache.WaitForFixedUpdate;\n                case FrameCountType.EndOfFrame:\n                    return YieldInstructionCache.WaitForEndOfFrame;\n                case FrameCountType.Update:\n                default:\n                    return null;\n            }\n        }\n    }\n\n    internal interface ICustomYieldInstructionErrorHandler\n    {\n        bool HasError { get; }\n        Exception Error { get; }\n        bool IsReThrowOnError { get; }\n        void ForceDisableRethrowOnError();\n        void ForceEnableRethrowOnError();\n    }\n\n    public class ObservableYieldInstruction<T> : IEnumerator<T>, ICustomYieldInstructionErrorHandler\n    {\n        readonly IDisposable subscription;\n        readonly CancellationToken cancel;\n        bool reThrowOnError;\n        T current;\n        T result;\n        bool moveNext;\n        bool hasResult;\n        Exception error;\n\n        public ObservableYieldInstruction(IObservable<T> source, bool reThrowOnError, CancellationToken cancel)\n        {\n            this.moveNext = true;\n            this.reThrowOnError = reThrowOnError;\n            this.cancel = cancel;\n            try\n            {\n                this.subscription = source.Subscribe(new ToYieldInstruction(this));\n            }\n            catch\n            {\n                moveNext = false;\n                throw;\n            }\n        }\n\n        public bool HasError\n        {\n            get { return error != null; }\n        }\n\n        public bool HasResult\n        {\n            get { return hasResult; }\n        }\n\n        public bool IsCanceled\n        {\n            get\n            {\n                if (hasResult) return false;\n                if (error != null) return false;\n                return cancel.IsCancellationRequested;\n            }\n        }\n\n        /// <summary>\n        /// HasResult || IsCanceled || HasError\n        /// </summary>\n        public bool IsDone\n        {\n            get\n            {\n                return HasResult || HasError || (cancel.IsCancellationRequested);\n            }\n        }\n\n        public T Result\n        {\n            get { return result; }\n        }\n\n        T IEnumerator<T>.Current\n        {\n            get\n            {\n                return current;\n            }\n        }\n\n        object IEnumerator.Current\n        {\n            get\n            {\n                return current;\n            }\n        }\n\n        public Exception Error\n        {\n            get\n            {\n                return error;\n            }\n        }\n\n        bool IEnumerator.MoveNext()\n        {\n            if (!moveNext)\n            {\n                if (reThrowOnError && HasError)\n                {\n                    Error.Throw();\n                }\n\n                return false;\n            }\n\n            if (cancel.IsCancellationRequested)\n            {\n                subscription.Dispose();\n                return false;\n            }\n\n            return true;\n        }\n\n        bool ICustomYieldInstructionErrorHandler.IsReThrowOnError\n        {\n            get { return reThrowOnError; }\n        }\n\n        void ICustomYieldInstructionErrorHandler.ForceDisableRethrowOnError()\n        {\n            this.reThrowOnError = false;\n        }\n\n        void ICustomYieldInstructionErrorHandler.ForceEnableRethrowOnError()\n        {\n            this.reThrowOnError = true;\n        }\n\n        public void Dispose()\n        {\n            subscription.Dispose();\n        }\n\n        void IEnumerator.Reset()\n        {\n            throw new NotSupportedException();\n        }\n\n        class ToYieldInstruction : IObserver<T>\n        {\n            readonly ObservableYieldInstruction<T> parent;\n\n            public ToYieldInstruction(ObservableYieldInstruction<T> parent)\n            {\n                this.parent = parent;\n            }\n\n            public void OnNext(T value)\n            {\n                parent.current = value;\n            }\n\n            public void OnError(Exception error)\n            {\n                parent.moveNext = false;\n                parent.error = error;\n            }\n\n            public void OnCompleted()\n            {\n                parent.moveNext = false;\n                parent.hasResult = true;\n                parent.result = parent.current;\n            }\n        }\n    }\n\n#if UniRxLibrary\n    public static partial class ObservableUnity\n#else\n    public static partial class Observable\n#endif\n    {\n        readonly static HashSet<Type> YieldInstructionTypes = new HashSet<Type>\n        {\n            #if UNITY_2018_3_OR_NEWER\n#pragma warning disable CS0618\n#endif\n            typeof(WWW),\n            #if UNITY_2018_3_OR_NEWER\n#pragma warning restore CS0618\n#endif\n            typeof(WaitForEndOfFrame),\n            typeof(WaitForFixedUpdate),\n            typeof(WaitForSeconds),\n            typeof(AsyncOperation),\n            typeof(Coroutine)\n        };\n\n#if SupportCustomYieldInstruction\n\n        class EveryAfterUpdateInvoker : IEnumerator\n        {\n            long count = -1;\n            readonly IObserver<long> observer;\n            readonly CancellationToken cancellationToken;\n\n            public EveryAfterUpdateInvoker(IObserver<long> observer, CancellationToken cancellationToken)\n            {\n                this.observer = observer;\n                this.cancellationToken = cancellationToken;\n            }\n\n            public bool MoveNext()\n            {\n                if (!cancellationToken.IsCancellationRequested)\n                {\n                    if (count != -1) // ignore first/immediate invoke\n                    {\n                        observer.OnNext(count++);\n                    }\n                    else\n                    {\n                        count++;\n                    }\n                    return true;\n                }\n                else\n                {\n                    return false;\n                }\n            }\n\n            public object Current\n            {\n                get\n                {\n                    return null;\n                }\n            }\n\n            public void Reset()\n            {\n                throw new NotSupportedException();\n            }\n        }\n\n#endif\n\n\n\n        /// <summary>From has no callback coroutine to IObservable. If publishEveryYield = true then publish OnNext every yield return else return once on enumeration completed.</summary>\n        public static IObservable<Unit> FromCoroutine(Func<IEnumerator> coroutine, bool publishEveryYield = false)\n        {\n            return FromCoroutine<Unit>((observer, cancellationToken) => WrapEnumerator(coroutine(), observer, cancellationToken, publishEveryYield));\n        }\n\n        /// <summary>From has no callback coroutine to IObservable. If publishEveryYield = true then publish OnNext every yield return else return once on enumeration completed.</summary>\n        public static IObservable<Unit> FromCoroutine(Func<CancellationToken, IEnumerator> coroutine, bool publishEveryYield = false)\n        {\n            return FromCoroutine<Unit>((observer, cancellationToken) => WrapEnumerator(coroutine(cancellationToken), observer, cancellationToken, publishEveryYield));\n        }\n\n        /// <summary>\n        /// MicroCoroutine is lightweight, fast coroutine dispatcher.\n        /// IEnumerator supports only yield return null.\n        /// If publishEveryYield = true then publish OnNext every yield return else return once on enumeration completed.\n        /// </summary>\n        public static IObservable<Unit> FromMicroCoroutine(Func<IEnumerator> coroutine, bool publishEveryYield = false, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            return FromMicroCoroutine<Unit>((observer, cancellationToken) => WrapEnumerator(coroutine(), observer, cancellationToken, publishEveryYield), frameCountType);\n        }\n\n        /// <summary>\n        /// MicroCoroutine is lightweight, fast coroutine dispatcher.\n        /// IEnumerator supports only yield return null.\n        /// If publishEveryYield = true then publish OnNext every yield return else return once on enumeration completed.\n        /// </summary>\n        public static IObservable<Unit> FromMicroCoroutine(Func<CancellationToken, IEnumerator> coroutine, bool publishEveryYield = false, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            return FromMicroCoroutine<Unit>((observer, cancellationToken) => WrapEnumerator(coroutine(cancellationToken), observer, cancellationToken, publishEveryYield), frameCountType);\n        }\n\n        static IEnumerator WrapEnumerator(IEnumerator enumerator, IObserver<Unit> observer, CancellationToken cancellationToken, bool publishEveryYield)\n        {\n            var hasNext = default(bool);\n            var raisedError = false;\n            do\n            {\n                try\n                {\n                    hasNext = enumerator.MoveNext();\n                }\n                catch (Exception ex)\n                {\n                    try\n                    {\n                        raisedError = true;\n                        observer.OnError(ex);\n                    }\n                    finally\n                    {\n                        var d = enumerator as IDisposable;\n                        if (d != null)\n                        {\n                            d.Dispose();\n                        }\n                    }\n                    yield break;\n                }\n                if (hasNext && publishEveryYield)\n                {\n                    try\n                    {\n                        observer.OnNext(Unit.Default);\n                    }\n                    catch\n                    {\n                        var d = enumerator as IDisposable;\n                        if (d != null)\n                        {\n                            d.Dispose();\n                        }\n                        throw;\n                    }\n                }\n                if (hasNext)\n                {\n#if SupportCustomYieldInstruction\n                    var current = enumerator.Current;\n                    var customHandler = current as ICustomYieldInstructionErrorHandler;\n                    if (customHandler != null && customHandler.IsReThrowOnError)\n                    {\n                        // If throws exception in Custom YieldInsrtuction, can't handle parent coroutine.\n                        // It is C# limitation.\n                        // so store error info and retrieve from parent.\n                        customHandler.ForceDisableRethrowOnError();\n                        yield return current;\n                        customHandler.ForceEnableRethrowOnError();\n\n                        if (customHandler.HasError)\n                        {\n                            try\n                            {\n                                raisedError = true;\n                                observer.OnError(customHandler.Error);\n                            }\n                            finally\n                            {\n                                var d = enumerator as IDisposable;\n                                if (d != null)\n                                {\n                                    d.Dispose();\n                                }\n                            }\n                            yield break;\n                        }\n                    }\n                    else\n                    {\n                        yield return enumerator.Current; // yield inner YieldInstruction\n                    }\n#else\n                    yield return enumerator.Current; // yield inner YieldInstruction\n#endif\n                }\n            } while (hasNext && !cancellationToken.IsCancellationRequested);\n\n            try\n            {\n                if (!raisedError && !cancellationToken.IsCancellationRequested)\n                {\n                    observer.OnNext(Unit.Default); // last one\n                    observer.OnCompleted();\n                }\n            }\n            finally\n            {\n                var d = enumerator as IDisposable;\n                if (d != null)\n                {\n                    d.Dispose();\n                }\n            }\n        }\n\n        /// <summary>Convert coroutine to typed IObservable. If nullAsNextUpdate = true then yield return null when Enumerator.Current and no null publish observer.OnNext.</summary>\n        public static IObservable<T> FromCoroutineValue<T>(Func<IEnumerator> coroutine, bool nullAsNextUpdate = true)\n        {\n            return FromCoroutine<T>((observer, cancellationToken) => WrapEnumeratorYieldValue<T>(coroutine(), observer, cancellationToken, nullAsNextUpdate));\n        }\n\n        /// <summary>Convert coroutine to typed IObservable. If nullAsNextUpdate = true then yield return null when Enumerator.Current and no null publish observer.OnNext.</summary>\n        public static IObservable<T> FromCoroutineValue<T>(Func<CancellationToken, IEnumerator> coroutine, bool nullAsNextUpdate = true)\n        {\n            return FromCoroutine<T>((observer, cancellationToken) => WrapEnumeratorYieldValue<T>(coroutine(cancellationToken), observer, cancellationToken, nullAsNextUpdate));\n        }\n\n        static IEnumerator WrapEnumeratorYieldValue<T>(IEnumerator enumerator, IObserver<T> observer, CancellationToken cancellationToken, bool nullAsNextUpdate)\n        {\n            var hasNext = default(bool);\n            var current = default(object);\n            var raisedError = false;\n            do\n            {\n                try\n                {\n                    hasNext = enumerator.MoveNext();\n                    if (hasNext) current = enumerator.Current;\n                }\n                catch (Exception ex)\n                {\n                    try\n                    {\n                        raisedError = true;\n                        observer.OnError(ex);\n                    }\n                    finally\n                    {\n                        var d = enumerator as IDisposable;\n                        if (d != null)\n                        {\n                            d.Dispose();\n                        }\n                    }\n                    yield break;\n                }\n\n                if (hasNext)\n                {\n                    if (current != null && YieldInstructionTypes.Contains(current.GetType()))\n                    {\n                        yield return current;\n                    }\n#if SupportCustomYieldInstruction\n                    else if (current is IEnumerator)\n                    {\n                        var customHandler = current as ICustomYieldInstructionErrorHandler;\n                        if (customHandler != null && customHandler.IsReThrowOnError)\n                        {\n                            // If throws exception in Custom YieldInsrtuction, can't handle parent coroutine.\n                            // It is C# limitation.\n                            // so store error info and retrieve from parent.\n                            customHandler.ForceDisableRethrowOnError();\n                            yield return current;\n                            customHandler.ForceEnableRethrowOnError();\n\n                            if (customHandler.HasError)\n                            {\n                                try\n                                {\n                                    raisedError = true;\n                                    observer.OnError(customHandler.Error);\n                                }\n                                finally\n                                {\n                                    var d = enumerator as IDisposable;\n                                    if (d != null)\n                                    {\n                                        d.Dispose();\n                                    }\n                                }\n                                yield break;\n                            }\n                        }\n                        else\n                        {\n                            yield return current;\n                        }\n                    }\n#endif\n                    else if (current == null && nullAsNextUpdate)\n                    {\n                        yield return null;\n                    }\n                    else\n                    {\n                        try\n                        {\n                            observer.OnNext((T)current);\n                        }\n                        catch\n                        {\n                            var d = enumerator as IDisposable;\n                            if (d != null)\n                            {\n                                d.Dispose();\n                            }\n                            throw;\n                        }\n                    }\n                }\n            } while (hasNext && !cancellationToken.IsCancellationRequested);\n\n            try\n            {\n                if (!raisedError && !cancellationToken.IsCancellationRequested)\n                {\n                    observer.OnCompleted();\n                }\n            }\n            finally\n            {\n                var d = enumerator as IDisposable;\n                if (d != null)\n                {\n                    d.Dispose();\n                }\n            }\n        }\n\n        public static IObservable<T> FromCoroutine<T>(Func<IObserver<T>, IEnumerator> coroutine)\n        {\n            return FromCoroutine<T>((observer, cancellationToken) => WrapToCancellableEnumerator(coroutine(observer), observer, cancellationToken));\n        }\n\n        /// <summary>\n        /// MicroCoroutine is lightweight, fast coroutine dispatcher.\n        /// IEnumerator supports only yield return null.\n        /// </summary>\n        public static IObservable<T> FromMicroCoroutine<T>(Func<IObserver<T>, IEnumerator> coroutine, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            return FromMicroCoroutine<T>((observer, cancellationToken) => WrapToCancellableEnumerator(coroutine(observer), observer, cancellationToken), frameCountType);\n        }\n\n        static IEnumerator WrapToCancellableEnumerator<T>(IEnumerator enumerator, IObserver<T> observer, CancellationToken cancellationToken)\n        {\n            var hasNext = default(bool);\n            do\n            {\n                try\n                {\n                    hasNext = enumerator.MoveNext();\n                }\n                catch (Exception ex)\n                {\n                    try\n                    {\n                        observer.OnError(ex);\n                    }\n                    finally\n                    {\n                        var d = enumerator as IDisposable;\n                        if (d != null)\n                        {\n                            d.Dispose();\n                        }\n                    }\n                    yield break;\n                }\n\n                yield return enumerator.Current; // yield inner YieldInstruction\n            } while (hasNext && !cancellationToken.IsCancellationRequested);\n\n            {\n                var d = enumerator as IDisposable;\n                if (d != null)\n                {\n                    d.Dispose();\n                }\n            }\n        }\n\n        public static IObservable<T> FromCoroutine<T>(Func<IObserver<T>, CancellationToken, IEnumerator> coroutine)\n        {\n            return new UniRx.Operators.FromCoroutineObservable<T>(coroutine);\n        }\n\n        /// <summary>\n        /// MicroCoroutine is lightweight, fast coroutine dispatcher.\n        /// IEnumerator supports only yield return null.\n        /// </summary>\n        public static IObservable<T> FromMicroCoroutine<T>(Func<IObserver<T>, CancellationToken, IEnumerator> coroutine, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            return new UniRx.Operators.FromMicroCoroutineObservable<T>(coroutine, frameCountType);\n        }\n\n        public static IObservable<Unit> SelectMany<T>(this IObservable<T> source, IEnumerator coroutine, bool publishEveryYield = false)\n        {\n            return source.SelectMany(FromCoroutine(() => coroutine, publishEveryYield));\n        }\n\n        public static IObservable<Unit> SelectMany<T>(this IObservable<T> source, Func<IEnumerator> selector, bool publishEveryYield = false)\n        {\n            return source.SelectMany(FromCoroutine(() => selector(), publishEveryYield));\n        }\n\n        /// <summary>\n        /// Note: publishEveryYield is always false. If you want to set true, use Observable.FromCoroutine(() => selector(x), true). This is workaround of Unity compiler's bug.\n        /// </summary>\n        public static IObservable<Unit> SelectMany<T>(this IObservable<T> source, Func<T, IEnumerator> selector)\n        {\n            return source.SelectMany(x => FromCoroutine(() => selector(x), false));\n        }\n\n        public static IObservable<Unit> ToObservable(this IEnumerator coroutine, bool publishEveryYield = false)\n        {\n            return FromCoroutine<Unit>((observer, cancellationToken) => WrapEnumerator(coroutine, observer, cancellationToken, publishEveryYield));\n        }\n\n#if SupportCustomYieldInstruction\n\n        public static ObservableYieldInstruction<Unit> ToYieldInstruction(this IEnumerator coroutine)\n        {\n            return ToObservable(coroutine, false).ToYieldInstruction();\n        }\n\n        public static ObservableYieldInstruction<Unit> ToYieldInstruction(this IEnumerator coroutine, bool throwOnError)\n        {\n            return ToObservable(coroutine, false).ToYieldInstruction(throwOnError);\n        }\n\n        public static ObservableYieldInstruction<Unit> ToYieldInstruction(this IEnumerator coroutine, CancellationToken cancellationToken)\n        {\n            return ToObservable(coroutine, false).ToYieldInstruction(cancellationToken);\n        }\n\n        public static ObservableYieldInstruction<Unit> ToYieldInstruction(this IEnumerator coroutine, bool throwOnError, CancellationToken cancellationToken)\n        {\n            return ToObservable(coroutine, false).ToYieldInstruction(throwOnError, cancellationToken);\n        }\n\n#endif\n\n        // variation of FromCoroutine\n\n        /// <summary>\n        /// EveryUpdate calls coroutine's yield return null timing. It is after all Update and before LateUpdate.\n        /// </summary>\n        public static IObservable<long> EveryUpdate()\n        {\n            return FromMicroCoroutine<long>((observer, cancellationToken) => EveryCycleCore(observer, cancellationToken), FrameCountType.Update);\n        }\n\n        public static IObservable<long> EveryFixedUpdate()\n        {\n            return FromMicroCoroutine<long>((observer, cancellationToken) => EveryCycleCore(observer, cancellationToken), FrameCountType.FixedUpdate);\n        }\n\n        public static IObservable<long> EveryEndOfFrame()\n        {\n            return FromMicroCoroutine<long>((observer, cancellationToken) => EveryCycleCore(observer, cancellationToken), FrameCountType.EndOfFrame);\n        }\n\n        static IEnumerator EveryCycleCore(IObserver<long> observer, CancellationToken cancellationToken)\n        {\n            if (cancellationToken.IsCancellationRequested) yield break;\n            var count = 0L;\n            while (true)\n            {\n                yield return null;\n                if (cancellationToken.IsCancellationRequested) yield break;\n\n                observer.OnNext(count++);\n            }\n        }\n\n        /// <summary>\n        /// EveryGameObjectUpdate calls from MainThreadDispatcher's Update.\n        /// </summary>\n        public static IObservable<long> EveryGameObjectUpdate()\n        {\n            return MainThreadDispatcher.UpdateAsObservable().Scan(-1L, (x, y) => x + 1);\n        }\n\n        /// <summary>\n        /// EveryLateUpdate calls from MainThreadDispatcher's OnLateUpdate.\n        /// </summary>\n        public static IObservable<long> EveryLateUpdate()\n        {\n            return MainThreadDispatcher.LateUpdateAsObservable().Scan(-1L, (x, y) => x + 1);\n        }\n\n#if SupportCustomYieldInstruction\n\n        /// <summary>\n        /// [Obsolete]Same as EveryUpdate.\n        /// </summary>\n        [Obsolete]\n        public static IObservable<long> EveryAfterUpdate()\n        {\n            return FromCoroutine<long>((observer, cancellationToken) => new EveryAfterUpdateInvoker(observer, cancellationToken));\n        }\n\n#endif\n\n        #region Observable.Time Frame Extensions\n\n        // Interval, Timer, Delay, Sample, Throttle, Timeout\n\n        public static IObservable<Unit> NextFrame(FrameCountType frameCountType = FrameCountType.Update)\n        {\n            return FromMicroCoroutine<Unit>((observer, cancellation) => NextFrameCore(observer, cancellation), frameCountType);\n        }\n\n        static IEnumerator NextFrameCore(IObserver<Unit> observer, CancellationToken cancellation)\n        {\n            yield return null;\n\n            if (!cancellation.IsCancellationRequested)\n            {\n                observer.OnNext(Unit.Default);\n                observer.OnCompleted();\n            }\n        }\n\n        public static IObservable<long> IntervalFrame(int intervalFrameCount, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            return TimerFrame(intervalFrameCount, intervalFrameCount, frameCountType);\n        }\n\n        public static IObservable<long> TimerFrame(int dueTimeFrameCount, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            return FromMicroCoroutine<long>((observer, cancellation) => TimerFrameCore(observer, dueTimeFrameCount, cancellation), frameCountType);\n        }\n\n        public static IObservable<long> TimerFrame(int dueTimeFrameCount, int periodFrameCount, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            return FromMicroCoroutine<long>((observer, cancellation) => TimerFrameCore(observer, dueTimeFrameCount, periodFrameCount, cancellation), frameCountType);\n        }\n\n        static IEnumerator TimerFrameCore(IObserver<long> observer, int dueTimeFrameCount, CancellationToken cancel)\n        {\n            // normalize\n            if (dueTimeFrameCount <= 0) dueTimeFrameCount = 0;\n\n            var currentFrame = 0;\n\n            // initial phase\n            while (!cancel.IsCancellationRequested)\n            {\n                if (currentFrame++ == dueTimeFrameCount)\n                {\n                    observer.OnNext(0);\n                    observer.OnCompleted();\n                    break;\n                }\n                yield return null;\n            }\n        }\n\n        static IEnumerator TimerFrameCore(IObserver<long> observer, int dueTimeFrameCount, int periodFrameCount, CancellationToken cancel)\n        {\n            // normalize\n            if (dueTimeFrameCount <= 0) dueTimeFrameCount = 0;\n            if (periodFrameCount <= 0) periodFrameCount = 1;\n\n            var sendCount = 0L;\n            var currentFrame = 0;\n\n            // initial phase\n            while (!cancel.IsCancellationRequested)\n            {\n                if (currentFrame++ == dueTimeFrameCount)\n                {\n                    observer.OnNext(sendCount++);\n                    currentFrame = -1;\n                    break;\n                }\n                yield return null;\n            }\n\n            // period phase\n            while (!cancel.IsCancellationRequested)\n            {\n                if (++currentFrame == periodFrameCount)\n                {\n                    observer.OnNext(sendCount++);\n                    currentFrame = 0;\n                }\n                yield return null;\n            }\n        }\n\n        public static IObservable<T> DelayFrame<T>(this IObservable<T> source, int frameCount, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            if (frameCount < 0) throw new ArgumentOutOfRangeException(\"frameCount\");\n            return new UniRx.Operators.DelayFrameObservable<T>(source, frameCount, frameCountType);\n        }\n\n        public static IObservable<T> Sample<T, T2>(this IObservable<T> source, IObservable<T2> sampler)\n        {\n            return new UniRx.Operators.SampleObservable<T, T2>(source, sampler);\n        }\n\n        public static IObservable<T> SampleFrame<T>(this IObservable<T> source, int frameCount, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            if (frameCount < 0) throw new ArgumentOutOfRangeException(\"frameCount\");\n            return new UniRx.Operators.SampleFrameObservable<T>(source, frameCount, frameCountType);\n        }\n\n        public static IObservable<TSource> ThrottleFrame<TSource>(this IObservable<TSource> source, int frameCount, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            if (frameCount < 0) throw new ArgumentOutOfRangeException(\"frameCount\");\n            return new UniRx.Operators.ThrottleFrameObservable<TSource>(source, frameCount, frameCountType);\n        }\n\n        public static IObservable<TSource> ThrottleFirstFrame<TSource>(this IObservable<TSource> source, int frameCount, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            if (frameCount < 0) throw new ArgumentOutOfRangeException(\"frameCount\");\n            return new UniRx.Operators.ThrottleFirstFrameObservable<TSource>(source, frameCount, frameCountType);\n        }\n\n        public static IObservable<T> TimeoutFrame<T>(this IObservable<T> source, int frameCount, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            if (frameCount < 0) throw new ArgumentOutOfRangeException(\"frameCount\");\n            return new UniRx.Operators.TimeoutFrameObservable<T>(source, frameCount, frameCountType);\n        }\n\n        public static IObservable<T> DelayFrameSubscription<T>(this IObservable<T> source, int frameCount, FrameCountType frameCountType = FrameCountType.Update)\n        {\n            if (frameCount < 0) throw new ArgumentOutOfRangeException(\"frameCount\");\n            return new UniRx.Operators.DelayFrameSubscriptionObservable<T>(source, frameCount, frameCountType);\n        }\n\n        #endregion\n\n#if SupportCustomYieldInstruction\n\n        /// <summary>\n        /// Convert to yieldable IEnumerator. e.g. yield return source.ToYieldInstruction();.\n        /// If needs last result, you can take ObservableYieldInstruction.HasResult/Result property.\n        /// This overload throws exception if received OnError events(same as coroutine).\n        /// </summary>\n        public static ObservableYieldInstruction<T> ToYieldInstruction<T>(this IObservable<T> source)\n        {\n            return new ObservableYieldInstruction<T>(source, true, CancellationToken.None);\n        }\n\n        /// <summary>\n        /// Convert to yieldable IEnumerator. e.g. yield return source.ToYieldInstruction();.\n        /// If needs last result, you can take ObservableYieldInstruction.HasResult/Result property.\n        /// This overload throws exception if received OnError events(same as coroutine).\n        /// </summary>\n        public static ObservableYieldInstruction<T> ToYieldInstruction<T>(this IObservable<T> source, CancellationToken cancel)\n        {\n            return new ObservableYieldInstruction<T>(source, true, cancel);\n        }\n\n        /// <summary>\n        /// Convert to yieldable IEnumerator. e.g. yield return source.ToYieldInstruction();.\n        /// If needs last result, you can take ObservableYieldInstruction.HasResult/Result property.\n        /// If throwOnError = false, you can take ObservableYieldInstruction.HasError/Error property.\n        /// </summary>\n        public static ObservableYieldInstruction<T> ToYieldInstruction<T>(this IObservable<T> source, bool throwOnError)\n        {\n            return new ObservableYieldInstruction<T>(source, throwOnError, CancellationToken.None);\n        }\n\n        /// <summary>\n        /// Convert to yieldable IEnumerator. e.g. yield return source.ToYieldInstruction();.\n        /// If needs last result, you can take ObservableYieldInstruction.HasResult/Result property.\n        /// If throwOnError = false, you can take ObservableYieldInstruction.HasError/Error property.\n        /// </summary>\n        public static ObservableYieldInstruction<T> ToYieldInstruction<T>(this IObservable<T> source, bool throwOnError, CancellationToken cancel)\n        {\n            return new ObservableYieldInstruction<T>(source, throwOnError, cancel);\n        }\n\n#endif\n\n        /// <summary>Convert to awaitable IEnumerator.</summary>\n        public static IEnumerator ToAwaitableEnumerator<T>(this IObservable<T> source, CancellationToken cancel = default(CancellationToken))\n        {\n            return ToAwaitableEnumerator<T>(source, Stubs<T>.Ignore, Stubs.Throw, cancel);\n        }\n\n        /// <summary>Convert to awaitable IEnumerator.</summary>\n        public static IEnumerator ToAwaitableEnumerator<T>(this IObservable<T> source, Action<T> onResult, CancellationToken cancel = default(CancellationToken))\n        {\n            return ToAwaitableEnumerator<T>(source, onResult, Stubs.Throw, cancel);\n        }\n\n        /// <summary>Convert to awaitable IEnumerator.</summary>\n        public static IEnumerator ToAwaitableEnumerator<T>(this IObservable<T> source, Action<Exception> onError, CancellationToken cancel = default(CancellationToken))\n        {\n            return ToAwaitableEnumerator<T>(source, Stubs<T>.Ignore, onError, cancel);\n        }\n\n        /// <summary>Convert to awaitable IEnumerator.</summary>\n        public static IEnumerator ToAwaitableEnumerator<T>(this IObservable<T> source, Action<T> onResult, Action<Exception> onError, CancellationToken cancel = default(CancellationToken))\n        {\n            var enumerator = new ObservableYieldInstruction<T>(source, false, cancel);\n            var e = (IEnumerator<T>)enumerator;\n            while (e.MoveNext() && !cancel.IsCancellationRequested)\n            {\n                yield return null;\n            }\n\n            if (cancel.IsCancellationRequested)\n            {\n                enumerator.Dispose();\n                yield break;\n            }\n\n            if (enumerator.HasResult)\n            {\n                onResult(enumerator.Result);\n            }\n            else if (enumerator.HasError)\n            {\n                onError(enumerator.Error);\n            }\n        }\n\n        /// <summary>AutoStart observable as coroutine.</summary>\n        public static Coroutine StartAsCoroutine<T>(this IObservable<T> source, CancellationToken cancel = default(CancellationToken))\n        {\n            return StartAsCoroutine<T>(source, Stubs<T>.Ignore, Stubs.Throw, cancel);\n        }\n\n        /// <summary>AutoStart observable as coroutine.</summary>\n        public static Coroutine StartAsCoroutine<T>(this IObservable<T> source, Action<T> onResult, CancellationToken cancel = default(CancellationToken))\n        {\n            return StartAsCoroutine<T>(source, onResult, Stubs.Throw, cancel);\n        }\n\n        /// <summary>AutoStart observable as coroutine.</summary>\n        public static Coroutine StartAsCoroutine<T>(this IObservable<T> source, Action<Exception> onError, CancellationToken cancel = default(CancellationToken))\n        {\n            return StartAsCoroutine<T>(source, Stubs<T>.Ignore, onError, cancel);\n        }\n\n        /// <summary>AutoStart observable as coroutine.</summary>\n        public static Coroutine StartAsCoroutine<T>(this IObservable<T> source, Action<T> onResult, Action<Exception> onError, CancellationToken cancel = default(CancellationToken))\n        {\n            return MainThreadDispatcher.StartCoroutine(source.ToAwaitableEnumerator(onResult, onError, cancel));\n        }\n\n        public static IObservable<T> ObserveOnMainThread<T>(this IObservable<T> source)\n        {\n            return source.ObserveOn(SchedulerUnity.MainThread);\n        }\n\n        public static IObservable<T> ObserveOnMainThread<T>(this IObservable<T> source, MainThreadDispatchType dispatchType)\n        {\n            switch (dispatchType)\n            {\n                case MainThreadDispatchType.Update:\n                    return source.ObserveOnMainThread(); // faster path\n\n                // others, bit slower\n\n                case MainThreadDispatchType.FixedUpdate:\n                    return source.SelectMany(_ => EveryFixedUpdate().Take(1), (x, _) => x);\n                case MainThreadDispatchType.EndOfFrame:\n                    return source.SelectMany(_ => EveryEndOfFrame().Take(1), (x, _) => x);\n                case MainThreadDispatchType.GameObjectUpdate:\n                    return source.SelectMany(_ => MainThreadDispatcher.UpdateAsObservable().Take(1), (x, _) => x);\n                case MainThreadDispatchType.LateUpdate:\n                    return source.SelectMany(_ => MainThreadDispatcher.LateUpdateAsObservable().Take(1), (x, _) => x);\n                default:\n                    throw new ArgumentException(\"type is invalid\");\n            }\n        }\n\n        public static IObservable<T> SubscribeOnMainThread<T>(this IObservable<T> source)\n        {\n            return source.SubscribeOn(SchedulerUnity.MainThread);\n        }\n\n        // I can't avoid Unity 5.3's uNET weaver bug, pending...\n\n        //public static IObservable<T> SubscribeOnMainThread<T>(this IObservable<T> source, MainThreadDispatchType dispatchType)\n        //{\n        //    switch (dispatchType)\n        //    {\n        //        case MainThreadDispatchType.Update:\n        //            return source.SubscribeOnMainThread(); // faster path\n\n        //        // others, bit slower\n\n        //        case MainThreadDispatchType.FixedUpdate:\n        //            return new UniRx.Operators.SubscribeOnMainThreadObservable<T>(source, EveryFixedUpdate().Take(1));\n        //        case MainThreadDispatchType.EndOfFrame:\n        //            return new UniRx.Operators.SubscribeOnMainThreadObservable<T>(source, EveryEndOfFrame().Take(1));\n        //        case MainThreadDispatchType.GameObjectUpdate:\n        //            return new UniRx.Operators.SubscribeOnMainThreadObservable<T>(source, MainThreadDispatcher.UpdateAsObservable().Select(_ => 0L).Take(1));\n        //        case MainThreadDispatchType.LateUpdate:\n        //            return new UniRx.Operators.SubscribeOnMainThreadObservable<T>(source, MainThreadDispatcher.LateUpdateAsObservable().Select(_ => 0L).Take(1));\n        //        case MainThreadDispatchType.AfterUpdate:\n        //            return new UniRx.Operators.SubscribeOnMainThreadObservable<T>(source, EveryAfterUpdate().Take(1));\n        //        default:\n        //            throw new ArgumentException(\"type is invalid\");\n        //    }\n        //}\n\n        public static IObservable<bool> EveryApplicationPause()\n        {\n            return MainThreadDispatcher.OnApplicationPauseAsObservable().AsObservable();\n        }\n\n        public static IObservable<bool> EveryApplicationFocus()\n        {\n            return MainThreadDispatcher.OnApplicationFocusAsObservable().AsObservable();\n        }\n\n        /// <summary>publish OnNext(Unit) and OnCompleted() on application quit.</summary>\n        public static IObservable<Unit> OnceApplicationQuit()\n        {\n            return MainThreadDispatcher.OnApplicationQuitAsObservable().Take(1);\n        }\n\n        public static IObservable<T> TakeUntilDestroy<T>(this IObservable<T> source, Component target)\n        {\n            return source.TakeUntil(target.OnDestroyAsObservable());\n        }\n\n        public static IObservable<T> TakeUntilDestroy<T>(this IObservable<T> source, GameObject target)\n        {\n            return source.TakeUntil(target.OnDestroyAsObservable());\n        }\n\n        public static IObservable<T> TakeUntilDisable<T>(this IObservable<T> source, Component target)\n        {\n            return source.TakeUntil(target.OnDisableAsObservable());\n        }\n\n        public static IObservable<T> TakeUntilDisable<T>(this IObservable<T> source, GameObject target)\n        {\n            return source.TakeUntil(target.OnDisableAsObservable());\n        }\n\n        public static IObservable<T> RepeatUntilDestroy<T>(this IObservable<T> source, GameObject target)\n        {\n            return RepeatUntilCore(RepeatInfinite(source), target.OnDestroyAsObservable(), target);\n        }\n\n        public static IObservable<T> RepeatUntilDestroy<T>(this IObservable<T> source, Component target)\n        {\n            return RepeatUntilCore(RepeatInfinite(source), target.OnDestroyAsObservable(), (target != null) ? target.gameObject : null);\n        }\n\n        public static IObservable<T> RepeatUntilDisable<T>(this IObservable<T> source, GameObject target)\n        {\n            return RepeatUntilCore(RepeatInfinite(source), target.OnDisableAsObservable(), target);\n        }\n\n        public static IObservable<T> RepeatUntilDisable<T>(this IObservable<T> source, Component target)\n        {\n            return RepeatUntilCore(RepeatInfinite(source), target.OnDisableAsObservable(), (target != null) ? target.gameObject : null);\n        }\n\n        static IObservable<T> RepeatUntilCore<T>(this IEnumerable<IObservable<T>> sources, IObservable<Unit> trigger, GameObject lifeTimeChecker)\n        {\n            return new UniRx.Operators.RepeatUntilObservable<T>(sources, trigger, lifeTimeChecker);\n        }\n\n        public static IObservable<UniRx.FrameInterval<T>> FrameInterval<T>(this IObservable<T> source)\n        {\n            return new UniRx.Operators.FrameIntervalObservable<T>(source);\n        }\n\n        public static IObservable<UniRx.TimeInterval<T>> FrameTimeInterval<T>(this IObservable<T> source, bool ignoreTimeScale = false)\n        {\n            return new UniRx.Operators.FrameTimeIntervalObservable<T>(source, ignoreTimeScale);\n        }\n\n        /// <summary>\n        /// Buffer elements in during target frame counts. Default raise same frame of end(frameCount = 0, frameCountType = EndOfFrame).\n        /// </summary>\n        public static IObservable<IList<T>> BatchFrame<T>(this IObservable<T> source)\n        {\n            // if use default argument, comiler errors ambiguous(Unity's limitation)\n            return BatchFrame<T>(source, 0, FrameCountType.EndOfFrame);\n        }\n\n        /// <summary>\n        /// Buffer elements in during target frame counts.\n        /// </summary>\n        public static IObservable<IList<T>> BatchFrame<T>(this IObservable<T> source, int frameCount, FrameCountType frameCountType)\n        {\n            if (frameCount < 0) throw new ArgumentException(\"frameCount must be >= 0, frameCount:\" + frameCount);\n            return new UniRx.Operators.BatchFrameObservable<T>(source, frameCount, frameCountType);\n        }\n\n        /// <summary>\n        /// Wait command in during target frame counts. Default raise same frame of end(frameCount = 0, frameCountType = EndOfFrame).\n        /// </summary>\n        public static IObservable<Unit> BatchFrame(this IObservable<Unit> source)\n        {\n            return BatchFrame(source, 0, FrameCountType.EndOfFrame);\n        }\n\n        /// <summary>\n        /// Wait command in during target frame counts.\n        /// </summary>\n        public static IObservable<Unit> BatchFrame(this IObservable<Unit> source, int frameCount, FrameCountType frameCountType)\n        {\n            if (frameCount < 0) throw new ArgumentException(\"frameCount must be >= 0, frameCount:\" + frameCount);\n            return new UniRx.Operators.BatchFrameObservable(source, frameCount, frameCountType);\n        }\n\n#if UniRxLibrary\n\n        static IEnumerable<IObservable<T>> RepeatInfinite<T>(IObservable<T> source)\n        {\n            while (true)\n            {\n                yield return source;\n            }\n        }\n\n        internal static class Stubs\n        {\n            public static readonly Action Nop = () => { };\n            public static readonly Action<Exception> Throw = ex => { ex.Throw(); };\n\n            // Stubs<T>.Ignore can't avoid iOS AOT problem.\n            public static void Ignore<T>(T t)\n            {\n            }\n\n            // marker for CatchIgnore and Catch avoid iOS AOT problem.\n            public static IObservable<TSource> CatchIgnore<TSource>(Exception ex)\n            {\n                return Observable.Empty<TSource>();\n            }\n        }\n#endif\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Observable.Unity.cs.meta",
    "content": "fileFormatVersion: 2\nguid: c6ef0a186b9ceaf41af7f2a9f4006216\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ObservableWWW.cs",
    "content": "using System;\nusing System.Collections;\nusing UnityEngine;\n\n#if !UniRxLibrary\nusing ObservableUnity = UniRx.Observable;\n#endif\n\n#if UNITY_2018_3_OR_NEWER\n#pragma warning disable CS0618\n#endif\n\nnamespace UniRx\n{\n    using System.Threading;\n#if !(UNITY_METRO || UNITY_WP8) && (UNITY_4_4 || UNITY_4_3 || UNITY_4_2 || UNITY_4_1 || UNITY_4_0_1 || UNITY_4_0 || UNITY_3_5 || UNITY_3_4 || UNITY_3_3 || UNITY_3_2 || UNITY_3_1 || UNITY_3_0_0 || UNITY_3_0 || UNITY_2_6_1 || UNITY_2_6)\n    // Fallback for Unity versions below 4.5\n    using Hash = System.Collections.Hashtable;\n    using HashEntry = System.Collections.DictionaryEntry;    \n#else\n    // Unity 4.5 release notes: \n    // WWW: deprecated 'WWW(string url, byte[] postData, Hashtable headers)', \n    // use 'public WWW(string url, byte[] postData, Dictionary<string, string> headers)' instead.\n    using Hash = System.Collections.Generic.Dictionary<string, string>;\n    using HashEntry = System.Collections.Generic.KeyValuePair<string, string>;\n#endif\n\n#if UNITY_2018_3_OR_NEWER\n    [Obsolete(\"Use UnityWebRequest, a fully featured replacement which is more efficient and has additional features\")]\n#endif\n    public static partial class ObservableWWW\n    {\n        public static IObservable<string> Get(string url, Hash headers = null, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<string>((observer, cancellation) => FetchText(new WWW(url, null, (headers ?? new Hash())), observer, progress, cancellation));\n        }\n\n        public static IObservable<byte[]> GetAndGetBytes(string url, Hash headers = null, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<byte[]>((observer, cancellation) => FetchBytes(new WWW(url, null, (headers ?? new Hash())), observer, progress, cancellation));\n        }\n        public static IObservable<WWW> GetWWW(string url, Hash headers = null, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<WWW>((observer, cancellation) => Fetch(new WWW(url, null, (headers ?? new Hash())), observer, progress, cancellation));\n        }\n\n        public static IObservable<string> Post(string url, byte[] postData, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<string>((observer, cancellation) => FetchText(new WWW(url, postData), observer, progress, cancellation));\n        }\n\n        public static IObservable<string> Post(string url, byte[] postData, Hash headers, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<string>((observer, cancellation) => FetchText(new WWW(url, postData, headers), observer, progress, cancellation));\n        }\n\n        public static IObservable<string> Post(string url, WWWForm content, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<string>((observer, cancellation) => FetchText(new WWW(url, content), observer, progress, cancellation));\n        }\n\n        public static IObservable<string> Post(string url, WWWForm content, Hash headers, IProgress<float> progress = null)\n        {\n            var contentHeaders = content.headers;\n            return ObservableUnity.FromCoroutine<string>((observer, cancellation) => FetchText(new WWW(url, content.data, MergeHash(contentHeaders, headers)), observer, progress, cancellation));\n        }\n\n        public static IObservable<byte[]> PostAndGetBytes(string url, byte[] postData, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<byte[]>((observer, cancellation) => FetchBytes(new WWW(url, postData), observer, progress, cancellation));\n        }\n\n        public static IObservable<byte[]> PostAndGetBytes(string url, byte[] postData, Hash headers, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<byte[]>((observer, cancellation) => FetchBytes(new WWW(url, postData, headers), observer, progress, cancellation));\n        }\n\n        public static IObservable<byte[]> PostAndGetBytes(string url, WWWForm content, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<byte[]>((observer, cancellation) => FetchBytes(new WWW(url, content), observer, progress, cancellation));\n        }\n\n        public static IObservable<byte[]> PostAndGetBytes(string url, WWWForm content, Hash headers, IProgress<float> progress = null)\n        {\n            var contentHeaders = content.headers;\n            return ObservableUnity.FromCoroutine<byte[]>((observer, cancellation) => FetchBytes(new WWW(url, content.data, MergeHash(contentHeaders, headers)), observer, progress, cancellation));\n        }\n\n        public static IObservable<WWW> PostWWW(string url, byte[] postData, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<WWW>((observer, cancellation) => Fetch(new WWW(url, postData), observer, progress, cancellation));\n        }\n\n        public static IObservable<WWW> PostWWW(string url, byte[] postData, Hash headers, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<WWW>((observer, cancellation) => Fetch(new WWW(url, postData, headers), observer, progress, cancellation));\n        }\n\n        public static IObservable<WWW> PostWWW(string url, WWWForm content, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<WWW>((observer, cancellation) => Fetch(new WWW(url, content), observer, progress, cancellation));\n        }\n\n        public static IObservable<WWW> PostWWW(string url, WWWForm content, Hash headers, IProgress<float> progress = null)\n        {\n            var contentHeaders = content.headers;\n            return ObservableUnity.FromCoroutine<WWW>((observer, cancellation) => Fetch(new WWW(url, content.data, MergeHash(contentHeaders, headers)), observer, progress, cancellation));\n        }\n\n        public static IObservable<AssetBundle> LoadFromCacheOrDownload(string url, int version, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<AssetBundle>((observer, cancellation) => FetchAssetBundle(WWW.LoadFromCacheOrDownload(url, version), observer, progress, cancellation));\n        }\n\n        public static IObservable<AssetBundle> LoadFromCacheOrDownload(string url, int version, uint crc, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<AssetBundle>((observer, cancellation) => FetchAssetBundle(WWW.LoadFromCacheOrDownload(url, version, crc), observer, progress, cancellation));\n        }\n\n        // over Unity5 supports Hash128\n#if !(UNITY_4_7 || UNITY_4_6 || UNITY_4_5 || UNITY_4_4 || UNITY_4_3 || UNITY_4_2 || UNITY_4_1 || UNITY_4_0_1 || UNITY_4_0 || UNITY_3_5 || UNITY_3_4 || UNITY_3_3 || UNITY_3_2 || UNITY_3_1 || UNITY_3_0_0 || UNITY_3_0 || UNITY_2_6_1 || UNITY_2_6)\n        public static IObservable<AssetBundle> LoadFromCacheOrDownload(string url, Hash128 hash128, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<AssetBundle>((observer, cancellation) => FetchAssetBundle(WWW.LoadFromCacheOrDownload(url, hash128), observer, progress, cancellation));\n        }\n\n        public static IObservable<AssetBundle> LoadFromCacheOrDownload(string url, Hash128 hash128, uint crc, IProgress<float> progress = null)\n        {\n            return ObservableUnity.FromCoroutine<AssetBundle>((observer, cancellation) => FetchAssetBundle(WWW.LoadFromCacheOrDownload(url, hash128, crc), observer, progress, cancellation));\n        }\n#endif\n\n        // over 4.5, Hash define is Dictionary.\n        // below Unity 4.5, WWW only supports Hashtable.\n        // Unity 4.5, 4.6 WWW supports Dictionary and [Obsolete]Hashtable but WWWForm.content is Hashtable.\n        // Unity 5.0 WWW only supports Dictionary and WWWForm.content is also Dictionary.\n#if !(UNITY_METRO || UNITY_WP8) && (UNITY_4_5 || UNITY_4_6 || UNITY_4_7)\n        static Hash MergeHash(Hashtable wwwFormHeaders, Hash externalHeaders)\n        {\n            var newHeaders = new Hash();\n            foreach (DictionaryEntry item in wwwFormHeaders)\n            {\n                newHeaders[item.Key.ToString()] = item.Value.ToString();\n            }\n            foreach (HashEntry item in externalHeaders)\n            {\n                newHeaders[item.Key] =  item.Value;\n            }\n            return newHeaders;\n        }\n#else\n        static Hash MergeHash(Hash wwwFormHeaders, Hash externalHeaders)\n        {\n            foreach (HashEntry item in externalHeaders)\n            {\n                wwwFormHeaders[item.Key] = item.Value;\n            }\n            return wwwFormHeaders;\n        }\n#endif\n\n        static IEnumerator Fetch(WWW www, IObserver<WWW> observer, IProgress<float> reportProgress, CancellationToken cancel)\n        {\n            using (www)\n            {\n                if (reportProgress != null)\n                {\n                    while (!www.isDone && !cancel.IsCancellationRequested)\n                    {\n                        try\n                        {\n                            reportProgress.Report(www.progress);\n                        }\n                        catch (Exception ex)\n                        {\n                            observer.OnError(ex);\n                            yield break;\n                        }\n                        yield return null;\n                    }\n                }\n                else\n                {\n                    if (!www.isDone)\n                    {\n                        yield return www;\n                    }\n                }\n\n                if (cancel.IsCancellationRequested)\n                {\n                    yield break;\n                }\n\n                if (reportProgress != null)\n                {\n                    try\n                    {\n                        reportProgress.Report(www.progress);\n                    }\n                    catch (Exception ex)\n                    {\n                        observer.OnError(ex);\n                        yield break;\n                    }\n                }\n\n                if (!string.IsNullOrEmpty(www.error))\n                {\n                    observer.OnError(new WWWErrorException(www, www.text));\n                }\n                else\n                {\n                    observer.OnNext(www);\n                    observer.OnCompleted();\n                }\n            }\n        }\n\n        static IEnumerator FetchText(WWW www, IObserver<string> observer, IProgress<float> reportProgress, CancellationToken cancel)\n        {\n            using (www)\n            {\n                if (reportProgress != null)\n                {\n                    while (!www.isDone && !cancel.IsCancellationRequested)\n                    {\n                        try\n                        {\n                            reportProgress.Report(www.progress);\n                        }\n                        catch (Exception ex)\n                        {\n                            observer.OnError(ex);\n                            yield break;\n                        }\n                        yield return null;\n                    }\n                }\n                else\n                {\n                    if (!www.isDone)\n                    {\n                        yield return www;\n                    }\n                }\n\n                if (cancel.IsCancellationRequested)\n                {\n                    yield break;\n                }\n\n                if (reportProgress != null)\n                {\n                    try\n                    {\n                        reportProgress.Report(www.progress);\n                    }\n                    catch (Exception ex)\n                    {\n                        observer.OnError(ex);\n                        yield break;\n                    }\n                }\n\n                if (!string.IsNullOrEmpty(www.error))\n                {\n                    observer.OnError(new WWWErrorException(www, www.text));\n                }\n                else\n                {\n                    observer.OnNext(www.text);\n                    observer.OnCompleted();\n                }\n            }\n        }\n\n        static IEnumerator FetchBytes(WWW www, IObserver<byte[]> observer, IProgress<float> reportProgress, CancellationToken cancel)\n        {\n            using (www)\n            {\n                if (reportProgress != null)\n                {\n                    while (!www.isDone && !cancel.IsCancellationRequested)\n                    {\n                        try\n                        {\n                            reportProgress.Report(www.progress);\n                        }\n                        catch (Exception ex)\n                        {\n                            observer.OnError(ex);\n                            yield break;\n                        }\n                        yield return null;\n                    }\n                }\n                else\n                {\n                    if (!www.isDone)\n                    {\n                        yield return www;\n                    }\n                }\n\n                if (cancel.IsCancellationRequested)\n                {\n                    yield break;\n                }\n\n                if (reportProgress != null)\n                {\n                    try\n                    {\n                        reportProgress.Report(www.progress);\n                    }\n                    catch (Exception ex)\n                    {\n                        observer.OnError(ex);\n                        yield break;\n                    }\n                }\n\n                if (!string.IsNullOrEmpty(www.error))\n                {\n                    observer.OnError(new WWWErrorException(www, www.text));\n                }\n                else\n                {\n                    observer.OnNext(www.bytes);\n                    observer.OnCompleted();\n                }\n            }\n        }\n\n        static IEnumerator FetchAssetBundle(WWW www, IObserver<AssetBundle> observer, IProgress<float> reportProgress, CancellationToken cancel)\n        {\n            using (www)\n            {\n                if (reportProgress != null)\n                {\n                    while (!www.isDone && !cancel.IsCancellationRequested)\n                    {\n                        try\n                        {\n                            reportProgress.Report(www.progress);\n                        }\n                        catch (Exception ex)\n                        {\n                            observer.OnError(ex);\n                            yield break;\n                        }\n                        yield return null;\n                    }\n                }\n                else\n                {\n                    if (!www.isDone)\n                    {\n                        yield return www;\n                    }\n                }\n\n                if (cancel.IsCancellationRequested)\n                {\n                    yield break;\n                }\n\n                if (reportProgress != null)\n                {\n                    try\n                    {\n                        reportProgress.Report(www.progress);\n                    }\n                    catch (Exception ex)\n                    {\n                        observer.OnError(ex);\n                        yield break;\n                    }\n                }\n\n                if (!string.IsNullOrEmpty(www.error))\n                {\n                    observer.OnError(new WWWErrorException(www, \"\"));\n                }\n                else\n                {\n                    observer.OnNext(www.assetBundle);\n                    observer.OnCompleted();\n                }\n            }\n        }\n    }\n\n    public class WWWErrorException : Exception\n    {\n        public string RawErrorMessage { get; private set; }\n        public bool HasResponse { get; private set; }\n        public string Text { get; private set; }\n        public System.Net.HttpStatusCode StatusCode { get; private set; }\n        public System.Collections.Generic.Dictionary<string, string> ResponseHeaders { get; private set; }\n        public WWW WWW { get; private set; }\n\n        // cache the text because if www was disposed, can't access it.\n        public WWWErrorException(WWW www, string text)\n        {\n            this.WWW = www;\n            this.RawErrorMessage = www.error;\n            this.ResponseHeaders = www.responseHeaders;\n            this.HasResponse = false;\n            this.Text = text; \n\n            var splitted = RawErrorMessage.Split(' ', ':');\n            if (splitted.Length != 0)\n            {\n                int statusCode;\n                if (int.TryParse(splitted[0], out statusCode))\n                {\n                    this.HasResponse = true;\n                    this.StatusCode = (System.Net.HttpStatusCode)statusCode;\n                }\n            }\n        }\n\n        public override string ToString()\n        {\n            var text = this.Text;\n            if (string.IsNullOrEmpty(text))\n            {\n                return RawErrorMessage;\n            }\n            else\n            {\n                return RawErrorMessage + \" \" + text;\n            }\n        }\n    }\n}\n\n#if UNITY_2018_3_OR_NEWER\n#pragma warning restore CS0618\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ObservableWWW.cs.meta",
    "content": "fileFormatVersion: 2\nguid: ba71e5544e233dd4b83d4c5a6c696d05\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ObserveExtensions.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Threading;\nusing UniRx.InternalUtil;\nusing UniRx.Triggers;\n\n#if !UniRxLibrary\nusing ObservableUnity = UniRx.Observable;\n#endif\n\nnamespace UniRx\n{\n    public static partial class ObserveExtensions\n    {\n        /// <summary>\n        /// Publish target property when value is changed. If source is destroyed/destructed, publish OnCompleted.\n        /// </summary>\n        /// <param name=\"fastDestroyCheck\">If true and target is UnityObject, use destroyed check by additional component. It is faster check for lifecycle but needs initial cost.</param>\n        public static IObservable<TProperty> ObserveEveryValueChanged<TSource, TProperty>(this TSource source, Func<TSource, TProperty> propertySelector, FrameCountType frameCountType = FrameCountType.Update, bool fastDestroyCheck = false)\n            where TSource : class\n        {\n            return ObserveEveryValueChanged(source, propertySelector, frameCountType, UnityEqualityComparer.GetDefault<TProperty>(), fastDestroyCheck);\n        }\n\n        /// <summary>\n        /// Publish target property when value is changed. If source is destroyed/destructed, publish OnCompleted.\n        /// </summary>\n        public static IObservable<TProperty> ObserveEveryValueChanged<TSource, TProperty>(this TSource source, Func<TSource, TProperty> propertySelector, FrameCountType frameCountType, IEqualityComparer<TProperty> comparer)\n            where TSource : class\n        {\n            return ObserveEveryValueChanged(source, propertySelector, frameCountType, comparer, false);\n        }\n\n        /// <summary>\n        /// Publish target property when value is changed. If source is destroyed/destructed, publish OnCompleted.\n        /// </summary>\n        /// <param name=\"fastDestroyCheck\">If true and target is UnityObject, use destroyed check by additional component. It is faster check for lifecycle but needs initial cost.</param>\n        public static IObservable<TProperty> ObserveEveryValueChanged<TSource, TProperty>(this TSource source, Func<TSource, TProperty> propertySelector, FrameCountType frameCountType, IEqualityComparer<TProperty> comparer, bool fastDestroyCheck)\n            where TSource : class\n        {\n            if (source == null) return Observable.Empty<TProperty>();\n            if (comparer == null) comparer = UnityEqualityComparer.GetDefault<TProperty>();\n\n            var unityObject = source as UnityEngine.Object;\n            var isUnityObject = source is UnityEngine.Object;\n            if (isUnityObject && unityObject == null) return Observable.Empty<TProperty>();\n\n            // MicroCoroutine does not publish value immediately, so publish value on subscribe.\n            if (isUnityObject)\n            {\n                return ObservableUnity.FromMicroCoroutine<TProperty>((observer, cancellationToken) =>\n                {\n                    if (unityObject != null)\n                    {\n                        var firstValue = default(TProperty);\n                        try\n                        {\n                            firstValue = propertySelector((TSource)(object)unityObject);\n                        }\n                        catch (Exception ex)\n                        {\n                            observer.OnError(ex);\n                            return EmptyEnumerator();\n                        }\n\n                        observer.OnNext(firstValue);\n                        return PublishUnityObjectValueChanged(unityObject, firstValue, propertySelector, comparer, observer, cancellationToken, fastDestroyCheck);\n                    }\n                    else\n                    {\n                        observer.OnCompleted();\n                        return EmptyEnumerator();\n                    }\n                }, frameCountType);\n            }\n            else\n            {\n                var reference = new WeakReference(source);\n                source = null;\n\n                return ObservableUnity.FromMicroCoroutine<TProperty>((observer, cancellationToken) =>\n                {\n                    var target = reference.Target;\n                    if (target != null)\n                    {\n                        var firstValue = default(TProperty);\n                        try\n                        {\n                            firstValue = propertySelector((TSource)target);\n                        }\n                        catch (Exception ex)\n                        {\n                            observer.OnError(ex);\n                            return EmptyEnumerator();\n                        }\n                        finally\n                        {\n                            target = null;\n                        }\n\n                        observer.OnNext(firstValue);\n                        return PublishPocoValueChanged(reference, firstValue, propertySelector, comparer, observer, cancellationToken);\n                    }\n                    else\n                    {\n                        observer.OnCompleted();\n                        return EmptyEnumerator();\n                    }\n                }, frameCountType);\n            }\n        }\n\n        static IEnumerator EmptyEnumerator()\n        {\n            yield break;\n        }\n\n        static IEnumerator PublishPocoValueChanged<TSource, TProperty>(WeakReference sourceReference, TProperty firstValue, Func<TSource, TProperty> propertySelector, IEqualityComparer<TProperty> comparer, IObserver<TProperty> observer, CancellationToken cancellationToken)\n        {\n            var currentValue = default(TProperty);\n            var prevValue = firstValue;\n\n            while (!cancellationToken.IsCancellationRequested)\n            {\n                var target = sourceReference.Target;\n                if (target != null)\n                {\n                    try\n                    {\n                        currentValue = propertySelector((TSource)target);\n                    }\n                    catch (Exception ex)\n                    {\n                        observer.OnError(ex);\n                        yield break;\n                    }\n                    finally\n                    {\n                        target = null; // remove reference(must need!)\n                    }\n                }\n                else\n                {\n                    observer.OnCompleted();\n                    yield break;\n                }\n\n                if (!comparer.Equals(currentValue, prevValue))\n                {\n                    observer.OnNext(currentValue);\n                    prevValue = currentValue;\n                }\n\n                yield return null;\n            }\n        }\n\n        static IEnumerator PublishUnityObjectValueChanged<TSource, TProperty>(UnityEngine.Object unityObject, TProperty firstValue, Func<TSource, TProperty> propertySelector, IEqualityComparer<TProperty> comparer, IObserver<TProperty> observer, CancellationToken cancellationToken, bool fastDestroyCheck)\n        {\n            var currentValue = default(TProperty);\n            var prevValue = firstValue;\n\n            var source = (TSource)(object)unityObject;\n\n            if (fastDestroyCheck)\n            {\n                ObservableDestroyTrigger destroyTrigger = null;\n                {\n                    var gameObject = unityObject as UnityEngine.GameObject;\n                    if (gameObject == null)\n                    {\n                        var comp = unityObject as UnityEngine.Component;\n                        if (comp != null)\n                        {\n                            gameObject = comp.gameObject;\n                        }\n                    }\n\n                    // can't use faster path\n                    if (gameObject == null) goto STANDARD_LOOP;\n\n                    destroyTrigger = GetOrAddDestroyTrigger(gameObject);\n                }\n\n                // fast compare path\n                while (!cancellationToken.IsCancellationRequested)\n                {\n                    var isDestroyed = destroyTrigger.IsActivated\n                        ? !destroyTrigger.IsCalledOnDestroy\n                        : (unityObject != null);\n\n                    if (isDestroyed)\n                    {\n                        try\n                        {\n                            currentValue = propertySelector(source);\n                        }\n                        catch (Exception ex)\n                        {\n                            observer.OnError(ex);\n                            yield break;\n                        }\n                    }\n                    else\n                    {\n                        observer.OnCompleted();\n                        yield break;\n                    }\n\n                    if (!comparer.Equals(currentValue, prevValue))\n                    {\n                        observer.OnNext(currentValue);\n                        prevValue = currentValue;\n                    }\n\n                    yield return null;\n                }\n\n                yield break;\n            }\n\n            STANDARD_LOOP:\n            while (!cancellationToken.IsCancellationRequested)\n            {\n                if (unityObject != null)\n                {\n                    try\n                    {\n                        currentValue = propertySelector(source);\n                    }\n                    catch (Exception ex)\n                    {\n                        observer.OnError(ex);\n                        yield break;\n                    }\n                }\n                else\n                {\n                    observer.OnCompleted();\n                    yield break;\n                }\n\n                if (!comparer.Equals(currentValue, prevValue))\n                {\n                    observer.OnNext(currentValue);\n                    prevValue = currentValue;\n                }\n\n                yield return null;\n            }\n        }\n\n        static ObservableDestroyTrigger GetOrAddDestroyTrigger(UnityEngine.GameObject go)\n        {\n            var dt = go.GetComponent<ObservableDestroyTrigger>();\n            if (dt == null)\n            {\n                dt = go.AddComponent<ObservableDestroyTrigger>();\n            }\n            return dt;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ObserveExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8741793924a6c2f4ea22ba27031d531f\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/BatchFrame.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class BatchFrameObservable<T> : OperatorObservableBase<IList<T>>\n    {\n        readonly IObservable<T> source;\n        readonly int frameCount;\n        readonly FrameCountType frameCountType;\n\n        public BatchFrameObservable(IObservable<T> source, int frameCount, FrameCountType frameCountType)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.frameCount = frameCount;\n            this.frameCountType = frameCountType;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<IList<T>> observer, IDisposable cancel)\n        {\n            return new BatchFrame(this, observer, cancel).Run();\n        }\n\n        class BatchFrame : OperatorObserverBase<T, IList<T>>\n        {\n            readonly BatchFrameObservable<T> parent;\n            readonly object gate = new object();\n            readonly BooleanDisposable cancellationToken = new BooleanDisposable();\n            readonly System.Collections.IEnumerator timer;\n            bool isRunning;\n            bool isCompleted;\n            List<T> list;\n\n            public BatchFrame(BatchFrameObservable<T> parent, IObserver<IList<T>> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.timer = new ReusableEnumerator(this);\n            }\n\n            public IDisposable Run()\n            {\n                list = new List<T>();\n                var sourceSubscription = parent.source.Subscribe(this);\n                return StableCompositeDisposable.Create(sourceSubscription, cancellationToken);\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    if (isCompleted) return;\n                    list.Add(value);\n                    if (!isRunning)\n                    {\n                        isRunning = true;\n                        timer.Reset(); // reuse\n\n                        switch (parent.frameCountType)\n                        {\n                            case FrameCountType.Update:\n                                MainThreadDispatcher.StartUpdateMicroCoroutine(timer);\n                                break;\n                            case FrameCountType.FixedUpdate:\n                                MainThreadDispatcher.StartFixedUpdateMicroCoroutine(timer);\n                                break;\n                            case FrameCountType.EndOfFrame:\n                                MainThreadDispatcher.StartEndOfFrameMicroCoroutine(timer);\n                                break;\n                            default:\n                                break;\n                        }\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                List<T> currentList;\n                lock (gate)\n                {\n                    isCompleted = true;\n                    currentList = list;\n                }\n                if (currentList.Count != 0)\n                {\n                    observer.OnNext(currentList);\n                }\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n\n            // reuse, no gc allocate\n            class ReusableEnumerator : System.Collections.IEnumerator\n            {\n                readonly BatchFrame parent;\n                int currentFrame;\n\n                public ReusableEnumerator(BatchFrame parent)\n                {\n                    this.parent = parent;\n                }\n\n                public object Current\n                {\n                    get { return null; }\n                }\n\n                public bool MoveNext()\n                {\n                    if (parent.cancellationToken.IsDisposed) return false;\n\n                    List<T> currentList;\n                    lock (parent.gate)\n                    {\n                        if (currentFrame++ == parent.parent.frameCount)\n                        {\n                            if (parent.isCompleted) return false;\n\n                            currentList = parent.list;\n                            parent.list = new List<T>();\n                            parent.isRunning = false;\n\n                            // exit lock \n                        }\n                        else\n                        {\n                            return true;\n                        }\n                    }\n\n                    parent.observer.OnNext(currentList);\n                    return false;\n                }\n\n                public void Reset()\n                {\n                    currentFrame = 0;\n                }\n            }\n        }\n    }\n\n    internal class BatchFrameObservable : OperatorObservableBase<Unit>\n    {\n        readonly IObservable<Unit> source;\n        readonly int frameCount;\n        readonly FrameCountType frameCountType;\n\n        public BatchFrameObservable(IObservable<Unit> source, int frameCount, FrameCountType frameCountType)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.frameCount = frameCount;\n            this.frameCountType = frameCountType;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<Unit> observer, IDisposable cancel)\n        {\n            return new BatchFrame(this, observer, cancel).Run();\n        }\n\n        class BatchFrame : OperatorObserverBase<Unit, Unit>\n        {\n            readonly BatchFrameObservable parent;\n            readonly object gate = new object();\n            readonly BooleanDisposable cancellationToken = new BooleanDisposable();\n            readonly System.Collections.IEnumerator timer;\n\n            bool isRunning;\n            bool isCompleted;\n\n            public BatchFrame(BatchFrameObservable parent, IObserver<Unit> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.timer = new ReusableEnumerator(this);\n            }\n\n            public IDisposable Run()\n            {\n                var sourceSubscription = parent.source.Subscribe(this);\n                return StableCompositeDisposable.Create(sourceSubscription, cancellationToken);\n            }\n\n            public override void OnNext(Unit value)\n            {\n                lock (gate)\n                {\n                    if (!isRunning)\n                    {\n                        isRunning = true;\n                        timer.Reset(); // reuse\n\n                        switch (parent.frameCountType)\n                        {\n                            case FrameCountType.Update:\n                                MainThreadDispatcher.StartUpdateMicroCoroutine(timer);\n                                break;\n                            case FrameCountType.FixedUpdate:\n                                MainThreadDispatcher.StartFixedUpdateMicroCoroutine(timer);\n                                break;\n                            case FrameCountType.EndOfFrame:\n                                MainThreadDispatcher.StartEndOfFrameMicroCoroutine(timer);\n                                break;\n                            default:\n                                break;\n                        }\n                    }\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                bool running;\n                lock (gate)\n                {\n                    running = isRunning;\n                    isCompleted = true;\n                }\n                if (running)\n                {\n                    observer.OnNext(Unit.Default);\n                }\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n\n            // reuse, no gc allocate\n            class ReusableEnumerator : System.Collections.IEnumerator\n            {\n                readonly BatchFrame parent;\n                int currentFrame;\n\n                public ReusableEnumerator(BatchFrame parent)\n                {\n                    this.parent = parent;\n                }\n\n                public object Current\n                {\n                    get { return null; }\n                }\n\n                public bool MoveNext()\n                {\n                    if (parent.cancellationToken.IsDisposed) return false;\n\n                    lock (parent.gate)\n                    {\n                        if (currentFrame++ == parent.parent.frameCount)\n                        {\n                            if (parent.isCompleted) return false;\n                            parent.isRunning = false;\n\n                            // exit lock \n                        }\n                        else\n                        {\n                            return true;\n                        }\n                    }\n\n                    parent.observer.OnNext(Unit.Default);\n                    return false;\n                }\n\n                public void Reset()\n                {\n                    currentFrame = 0;\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/BatchFrame.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 74a2b6b8c63d1144f914c7f0d6719a36\ntimeCreated: 1467771656\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/DelayFrame.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\n\nnamespace UniRx.Operators\n{\n    internal class DelayFrameObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly int frameCount;\n        readonly FrameCountType frameCountType;\n\n        public DelayFrameObservable(IObservable<T> source, int frameCount, FrameCountType frameCountType)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.frameCount = frameCount;\n            this.frameCountType = frameCountType;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new DelayFrame(this, observer, cancel).Run();\n        }\n\n        class DelayFrame : OperatorObserverBase<T, T>\n        {\n            readonly DelayFrameObservable<T> parent;\n            readonly object gate = new object();\n            readonly QueuePool pool = new QueuePool();\n            int runningEnumeratorCount;\n            bool readyDrainEnumerator;\n            bool running;\n            IDisposable sourceSubscription;\n            Queue<T> currentQueueReference;\n            bool calledCompleted;\n            bool hasError;\n            Exception error;\n            BooleanDisposable cancelationToken;\n\n            public DelayFrame(DelayFrameObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                cancelationToken = new BooleanDisposable();\n\n                var _sourceSubscription = new SingleAssignmentDisposable();\n                sourceSubscription = _sourceSubscription;\n                _sourceSubscription.Disposable = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(cancelationToken, sourceSubscription);\n            }\n\n            IEnumerator DrainQueue(Queue<T> q, int frameCount)\n            {\n                lock (gate)\n                {\n                    readyDrainEnumerator = false; // use next queue.\n                    running = false;\n                }\n\n                while (!cancelationToken.IsDisposed && frameCount-- != 0)\n                {\n                    yield return null;\n                }\n\n                try\n                {\n                    if (q != null)\n                    {\n                        while (q.Count > 0 && !hasError)\n                        {\n                            if (cancelationToken.IsDisposed) break;\n\n                            lock (gate)\n                            {\n                                running = true;\n                            }\n\n                            var value = q.Dequeue();\n                            observer.OnNext(value);\n\n                            lock (gate)\n                            {\n                                running = false;\n                            }\n                        }\n\n                        if (q.Count == 0)\n                        {\n                            pool.Return(q);\n                        }\n                    }\n\n                    if (hasError)\n                    {\n                        if (!cancelationToken.IsDisposed)\n                        {\n                            cancelationToken.Dispose();\n\n                            try { observer.OnError(error); } finally { Dispose(); }\n                        }\n                    }\n                    else if (calledCompleted)\n                    {\n                        lock (gate)\n                        {\n                            // not self only\n                            if (runningEnumeratorCount != 1) yield break;\n                        }\n\n                        if (!cancelationToken.IsDisposed)\n                        {\n                            cancelationToken.Dispose();\n\n                            try { observer.OnCompleted(); }\n                            finally { Dispose(); }\n                        }\n                    }\n                }\n                finally\n                {\n                    lock (gate)\n                    {\n                        runningEnumeratorCount--;\n                    }\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                if (cancelationToken.IsDisposed) return;\n\n                Queue<T> targetQueue = null;\n                lock (gate)\n                {\n                    if (!readyDrainEnumerator)\n                    {\n                        readyDrainEnumerator = true;\n                        runningEnumeratorCount++;\n                        targetQueue = currentQueueReference = pool.Get();\n                        targetQueue.Enqueue(value);\n                    }\n                    else\n                    {\n                        if (currentQueueReference != null) // null - if doesn't start OnNext and start OnCompleted\n                        {\n                            currentQueueReference.Enqueue(value);\n                        }\n                        return;\n                    }\n                }\n\n                switch (parent.frameCountType)\n                {\n                    case FrameCountType.Update:\n                        MainThreadDispatcher.StartUpdateMicroCoroutine(DrainQueue(targetQueue, parent.frameCount));\n                        break;\n                    case FrameCountType.FixedUpdate:\n                        MainThreadDispatcher.StartFixedUpdateMicroCoroutine(DrainQueue(targetQueue, parent.frameCount));\n                        break;\n                    case FrameCountType.EndOfFrame:\n                        MainThreadDispatcher.StartEndOfFrameMicroCoroutine(DrainQueue(targetQueue, parent.frameCount));\n                        break;\n                    default:\n                        throw new ArgumentException(\"Invalid FrameCountType:\" + parent.frameCountType);\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                sourceSubscription.Dispose(); // stop subscription\n\n                if (cancelationToken.IsDisposed) return;\n\n                lock (gate)\n                {\n                    if (running)\n                    {\n                        hasError = true;\n                        this.error = error;\n                        return;\n                    }\n                }\n\n                cancelationToken.Dispose();\n                try { base.observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                sourceSubscription.Dispose(); // stop subscription\n\n                if (cancelationToken.IsDisposed) return;\n\n                lock (gate)\n                {\n                    calledCompleted = true;\n\n                    if (!readyDrainEnumerator)\n                    {\n                        readyDrainEnumerator = true;\n                        runningEnumeratorCount++;\n                    }\n                    else\n                    {\n                        return;\n                    }\n                }\n\n                switch (parent.frameCountType)\n                {\n                    case FrameCountType.Update:\n                        MainThreadDispatcher.StartUpdateMicroCoroutine(DrainQueue(null, parent.frameCount));\n                        break;\n                    case FrameCountType.FixedUpdate:\n                        MainThreadDispatcher.StartFixedUpdateMicroCoroutine(DrainQueue(null, parent.frameCount));\n                        break;\n                    case FrameCountType.EndOfFrame:\n                        MainThreadDispatcher.StartEndOfFrameMicroCoroutine(DrainQueue(null, parent.frameCount));\n                        break;\n                    default:\n                        throw new ArgumentException(\"Invalid FrameCountType:\" + parent.frameCountType);\n                }\n            }\n        }\n\n        class QueuePool\n        {\n            readonly object gate = new object();\n            readonly Queue<Queue<T>> pool = new Queue<Queue<T>>(2);\n\n            public Queue<T> Get()\n            {\n                lock (gate)\n                {\n                    if (pool.Count == 0)\n                    {\n                        return new Queue<T>(2);\n                    }\n                    else\n                    {\n                        return pool.Dequeue();\n                    }\n                }\n            }\n\n            public void Return(Queue<T> q)\n            {\n                lock (gate)\n                {\n                    pool.Enqueue(q);\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/DelayFrame.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 868f75a703f1a944a801ab9c9b4512aa\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/DelayFrameSubscription.cs",
    "content": "﻿using System;\n\n#if UniRxLibrary\nusing UnityObservable = UniRx.ObservableUnity;\n#else\nusing UnityObservable = UniRx.Observable;\n#endif\n\nnamespace UniRx.Operators\n{\n    internal class DelayFrameSubscriptionObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly int frameCount;\n        readonly FrameCountType frameCountType;\n\n        public DelayFrameSubscriptionObservable(IObservable<T> source, int frameCount, FrameCountType frameCountType)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.frameCount = frameCount;\n            this.frameCountType = frameCountType;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            var d = new MultipleAssignmentDisposable();\n            d.Disposable = UnityObservable.TimerFrame(frameCount, frameCountType)\n                .SubscribeWithState3(observer, d, source, (_, o, disp, s) =>\n                {\n                    disp.Disposable = s.Subscribe(o);\n                });\n\n            return d;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/DelayFrameSubscription.cs.meta",
    "content": "fileFormatVersion: 2\nguid: ecfef95eedf36c2448944fb8932f682c\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FrameInterval.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class FrameIntervalObservable<T> : OperatorObservableBase<UniRx.FrameInterval<T>>\n    {\n        readonly IObservable<T> source;\n\n        public FrameIntervalObservable(IObservable<T> source)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<UniRx.FrameInterval<T>> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new FrameInterval(observer, cancel));\n        }\n\n        class FrameInterval : OperatorObserverBase<T, UniRx.FrameInterval<T>>\n        {\n            int lastFrame;\n\n            public FrameInterval(IObserver<UniRx.FrameInterval<T>> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.lastFrame = UnityEngine.Time.frameCount;\n            }\n\n            public override void OnNext(T value)\n            {\n                var now = UnityEngine.Time.frameCount;\n                var span = now - lastFrame;\n                lastFrame = now;\n\n                base.observer.OnNext(new UniRx.FrameInterval<T>(value, span));\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FrameInterval.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a731a1a74be20a04a9d7dedc5ceefab2\ntimeCreated: 1467771656\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FrameTimeInterval.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class FrameTimeIntervalObservable<T> : OperatorObservableBase<UniRx.TimeInterval<T>>\n    {\n        readonly IObservable<T> source;\n        readonly bool ignoreTimeScale;\n\n        public FrameTimeIntervalObservable(IObservable<T> source, bool ignoreTimeScale)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.ignoreTimeScale = ignoreTimeScale;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<UniRx.TimeInterval<T>> observer, IDisposable cancel)\n        {\n            return source.Subscribe(new FrameTimeInterval(this, observer, cancel));\n        }\n\n        class FrameTimeInterval : OperatorObserverBase<T, UniRx.TimeInterval<T>>\n        {\n            readonly FrameTimeIntervalObservable<T> parent;\n            float lastTime;\n\n            public FrameTimeInterval(FrameTimeIntervalObservable<T> parent, IObserver<UniRx.TimeInterval<T>> observer, IDisposable cancel)\n                : base(observer, cancel)\n            {\n                this.parent = parent;\n                this.lastTime = (parent.ignoreTimeScale)\n                    ? UnityEngine.Time.unscaledTime\n                    : UnityEngine.Time.time;\n            }\n\n            public override void OnNext(T value)\n            {\n                var now = (parent.ignoreTimeScale)\n                    ? UnityEngine.Time.unscaledTime\n                    : UnityEngine.Time.time;\n                var span = now - lastTime;\n                lastTime = now;\n\n                base.observer.OnNext(new UniRx.TimeInterval<T>(value, TimeSpan.FromSeconds(span)));\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FrameTimeInterval.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a55cce9ef638364409d1227a25a32421\ntimeCreated: 1467771656\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FromCoroutine.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Threading;\n\nnamespace UniRx.Operators\n{\n    internal class FromCoroutineObservable<T> : OperatorObservableBase<T>\n    {\n        readonly Func<IObserver<T>, CancellationToken, IEnumerator> coroutine;\n\n        public FromCoroutineObservable(Func<IObserver<T>, CancellationToken, IEnumerator> coroutine)\n            : base(false)\n        {\n            this.coroutine = coroutine;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            var fromCoroutineObserver = new FromCoroutine(observer, cancel);\n\n#if (NETFX_CORE || NET_4_6 || NET_STANDARD_2_0 || UNITY_WSA_10_0)\n            var moreCancel = new CancellationDisposable();\n            var token = moreCancel.Token;\n#else\n            var moreCancel = new BooleanDisposable();\n            var token = new CancellationToken(moreCancel);\n#endif\n\n            MainThreadDispatcher.SendStartCoroutine(coroutine(fromCoroutineObserver, token));\n\n            return moreCancel;\n        }\n\n        class FromCoroutine : OperatorObserverBase<T, T>\n        {\n            public FromCoroutine(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n\n    internal class FromMicroCoroutineObservable<T> : OperatorObservableBase<T>\n    {\n        readonly Func<IObserver<T>, CancellationToken, IEnumerator> coroutine;\n        readonly FrameCountType frameCountType;\n\n        public FromMicroCoroutineObservable(Func<IObserver<T>, CancellationToken, IEnumerator> coroutine, FrameCountType frameCountType)\n            : base(false)\n        {\n            this.coroutine = coroutine;\n            this.frameCountType = frameCountType;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            var microCoroutineObserver = new FromMicroCoroutine(observer, cancel);\n\n#if (NETFX_CORE || NET_4_6 || NET_STANDARD_2_0 || UNITY_WSA_10_0)\n            var moreCancel = new CancellationDisposable();\n            var token = moreCancel.Token;\n#else\n            var moreCancel = new BooleanDisposable();\n            var token = new CancellationToken(moreCancel);\n#endif\n\n            switch (frameCountType)\n            {\n                case FrameCountType.Update:\n                    MainThreadDispatcher.StartUpdateMicroCoroutine(coroutine(microCoroutineObserver, token));\n                    break;\n                case FrameCountType.FixedUpdate:\n                    MainThreadDispatcher.StartFixedUpdateMicroCoroutine(coroutine(microCoroutineObserver, token));\n                    break;\n                case FrameCountType.EndOfFrame:\n                    MainThreadDispatcher.StartEndOfFrameMicroCoroutine(coroutine(microCoroutineObserver, token));\n                    break;\n                default:\n                    throw new ArgumentException(\"Invalid FrameCountType:\" + frameCountType);\n            }\n\n            return moreCancel;\n        }\n\n        class FromMicroCoroutine : OperatorObserverBase<T, T>\n        {\n            public FromMicroCoroutine(IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n            }\n\n            public override void OnNext(T value)\n            {\n                try\n                {\n                    base.observer.OnNext(value);\n                }\n                catch\n                {\n                    Dispose();\n                    throw;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                try { observer.OnCompleted(); }\n                finally { Dispose(); }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FromCoroutine.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e83ddad992535fb4f8a68a1e7ef8be60\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/RepeatUntil.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nnamespace UniRx.Operators\n{\n    internal class RepeatUntilObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IEnumerable<IObservable<T>> sources;\n        readonly IObservable<Unit> trigger;\n        readonly GameObject lifeTimeChecker;\n\n        public RepeatUntilObservable(IEnumerable<IObservable<T>> sources, IObservable<Unit> trigger, GameObject lifeTimeChecker)\n            : base(true)\n        {\n            this.sources = sources;\n            this.trigger = trigger;\n            this.lifeTimeChecker = lifeTimeChecker;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new RepeatUntil(this, observer, cancel).Run();\n        }\n\n        class RepeatUntil : OperatorObserverBase<T, T>\n        {\n            readonly RepeatUntilObservable<T> parent;\n            readonly object gate = new object();\n\n            IEnumerator<IObservable<T>> e;\n            SerialDisposable subscription;\n            SingleAssignmentDisposable schedule;\n            Action nextSelf;\n            bool isStopped;\n            bool isDisposed;\n            bool isFirstSubscribe;\n            IDisposable stopper;\n\n            public RepeatUntil(RepeatUntilObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                isFirstSubscribe = true;\n                isDisposed = false;\n                isStopped = false;\n                e = parent.sources.GetEnumerator();\n                subscription = new SerialDisposable();\n                schedule = new SingleAssignmentDisposable();\n\n                stopper = parent.trigger.Subscribe(_ =>\n                {\n                    lock (gate)\n                    {\n                        isStopped = true;\n                        e.Dispose();\n                        subscription.Dispose();\n                        schedule.Dispose();\n                        observer.OnCompleted();\n                    }\n                }, observer.OnError);\n\n                schedule.Disposable = Scheduler.CurrentThread.Schedule(RecursiveRun);\n\n                return new CompositeDisposable(schedule, subscription, stopper, Disposable.Create(() =>\n                {\n                    lock (gate)\n                    {\n                        isDisposed = true;\n                        e.Dispose();\n                    }\n                }));\n            }\n\n            void RecursiveRun(Action self)\n            {\n                lock (gate)\n                {\n                    this.nextSelf = self;\n                    if (isDisposed) return;\n                    if (isStopped) return;\n\n                    var current = default(IObservable<T>);\n                    var hasNext = false;\n                    var ex = default(Exception);\n\n                    try\n                    {\n                        hasNext = e.MoveNext();\n                        if (hasNext)\n                        {\n                            current = e.Current;\n                            if (current == null) throw new InvalidOperationException(\"sequence is null.\");\n                        }\n                        else\n                        {\n                            e.Dispose();\n                        }\n                    }\n                    catch (Exception exception)\n                    {\n                        ex = exception;\n                        e.Dispose();\n                    }\n\n                    if (ex != null)\n                    {\n                        stopper.Dispose();\n                        observer.OnError(ex);\n                        return;\n                    }\n\n                    if (!hasNext)\n                    {\n                        stopper.Dispose();\n                        observer.OnCompleted();\n                        return;\n                    }\n\n                    var source = e.Current;\n                    var d = new SingleAssignmentDisposable();\n                    subscription.Disposable = d;\n\n                    if (isFirstSubscribe)\n                    {\n                        isFirstSubscribe = false;\n                        d.Disposable = source.Subscribe(this);\n                    }\n                    else\n                    {\n                        MainThreadDispatcher.SendStartCoroutine(SubscribeAfterEndOfFrame(d, source, this, parent.lifeTimeChecker));\n                    }\n                }\n            }\n\n            static IEnumerator SubscribeAfterEndOfFrame(SingleAssignmentDisposable d, IObservable<T> source, IObserver<T> observer, GameObject lifeTimeChecker)\n            {\n                yield return YieldInstructionCache.WaitForEndOfFrame;\n                if (!d.IsDisposed && lifeTimeChecker != null)\n                {\n                    d.Disposable = source.Subscribe(observer);\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                base.observer.OnNext(value);\n            }\n\n            public override void OnError(Exception error)\n            {\n                try { observer.OnError(error); }\n                finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                if (!isDisposed)\n                {\n                    this.nextSelf();\n                }\n                else\n                {\n                    e.Dispose();\n                    if (!isDisposed)\n                    {\n                        try { observer.OnCompleted(); }\n                        finally { Dispose(); }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/RepeatUntil.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 93507e8a72a71094f870c8dbe1e5bed8\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/SampleFrame.cs",
    "content": "﻿using System;\n\n#if UniRxLibrary\nusing UnityObservable = UniRx.ObservableUnity;\n#else\nusing UnityObservable = UniRx.Observable;\n#endif\n\nnamespace UniRx.Operators\n{\n    internal class SampleFrameObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly int frameCount;\n        readonly FrameCountType frameCountType;\n\n        public SampleFrameObservable(IObservable<T> source, int frameCount, FrameCountType frameCountType) : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.frameCount = frameCount;\n            this.frameCountType = frameCountType;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new SampleFrame(this, observer, cancel).Run();\n        }\n\n        class SampleFrame : OperatorObserverBase<T, T>\n        {\n            readonly SampleFrameObservable<T> parent;\n            readonly object gate = new object();\n            T latestValue = default(T);\n            bool isUpdated = false;\n            bool isCompleted = false;\n            SingleAssignmentDisposable sourceSubscription;\n\n            public SampleFrame(SampleFrameObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                sourceSubscription = new SingleAssignmentDisposable();\n                sourceSubscription.Disposable = parent.source.Subscribe(this);\n                \n                var scheduling = UnityObservable.IntervalFrame(parent.frameCount, parent.frameCountType)\n                    .Subscribe(new SampleFrameTick(this));\n\n                return StableCompositeDisposable.Create(sourceSubscription, scheduling);\n            }\n\n            void OnNextTick(long _)\n            {\n                lock (gate)\n                {\n                    if (isUpdated)\n                    {\n                        var value = latestValue;\n                        isUpdated = false;\n                        observer.OnNext(value);\n                    }\n                    if (isCompleted)\n                    {\n                        try { observer.OnCompleted(); } finally { Dispose(); }\n                    }\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    latestValue = value;\n                    isUpdated = true;\n                }\n            }\n\n            public override void OnError(Exception error)\n            {\n                lock (gate)\n                {\n                    try { base.observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                lock (gate)\n                {\n                    isCompleted = true;\n                    sourceSubscription.Dispose();\n                }\n            }\n            class SampleFrameTick : IObserver<long>\n            {\n                readonly SampleFrame parent;\n\n                public SampleFrameTick(SampleFrame parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnCompleted()\n                {\n                }\n\n                public void OnError(Exception error)\n                {\n                }\n\n                public void OnNext(long _)\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.isUpdated)\n                        {\n                            var value = parent.latestValue;\n                            parent.isUpdated = false;\n                            parent.observer.OnNext(value);\n                        }\n                        if (parent.isCompleted)\n                        {\n                            try { parent.observer.OnCompleted(); } finally { parent.Dispose(); }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/SampleFrame.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e04c7fc1929a3db458bf7ae31bcd9e55\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/SubscribeOnMainThread.cs",
    "content": "﻿using System;\n\nnamespace UniRx.Operators\n{\n    internal class SubscribeOnMainThreadObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly IObservable<long> subscribeTrigger;\n\n        public SubscribeOnMainThreadObservable(IObservable<T> source, IObservable<long> subscribeTrigger)\n            : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.subscribeTrigger = subscribeTrigger;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            var m = new SingleAssignmentDisposable();\n            var d = new SerialDisposable();\n            d.Disposable = m;\n\n            m.Disposable = subscribeTrigger.SubscribeWithState3(observer, d, source, (_, o, disp, s) =>\n            {\n                disp.Disposable = s.Subscribe(o);\n            });\n\n            return d;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/SubscribeOnMainThread.cs.meta",
    "content": "fileFormatVersion: 2\nguid: da3fd97518766ab43827991b7b5d4270\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/ThrottleFirstFrame.cs",
    "content": "﻿using System;\n\n#if UniRxLibrary\nusing UnityObservable = UniRx.ObservableUnity;\n#else\nusing UnityObservable = UniRx.Observable;\n#endif\n\nnamespace UniRx.Operators\n{\n    internal class ThrottleFirstFrameObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly int frameCount;\n        readonly FrameCountType frameCountType;\n\n        public ThrottleFirstFrameObservable(IObservable<T> source, int frameCount, FrameCountType frameCountType) : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.frameCount = frameCount;\n            this.frameCountType = frameCountType;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new ThrottleFirstFrame(this, observer, cancel).Run();\n        }\n\n        class ThrottleFirstFrame : OperatorObserverBase<T, T>\n        {\n            readonly ThrottleFirstFrameObservable<T> parent;\n            readonly object gate = new object();\n            bool open = true;\n            SerialDisposable cancelable;\n\n            ThrottleFirstFrameTick tick;\n\n            public ThrottleFirstFrame(ThrottleFirstFrameObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                tick = new ThrottleFirstFrameTick(this);\n                cancelable = new SerialDisposable();\n\n                var subscription = parent.source.Subscribe(this);\n                return StableCompositeDisposable.Create(cancelable, subscription);\n            }\n\n            void OnNext()\n            {\n                lock (gate)\n                {\n                    open = true;\n                }\n            }\n\n            public override void OnNext(T value)\n            {\n                lock (gate)\n                {\n                    if (!open) return;\n                    observer.OnNext(value);\n                    open = false;\n                }\n\n                var d = new SingleAssignmentDisposable();\n                cancelable.Disposable = d;\n                d.Disposable = UnityObservable.TimerFrame(parent.frameCount, parent.frameCountType)\n                    .Subscribe(tick);\n            }\n\n            public override void OnError(Exception error)\n            {\n                cancelable.Dispose();\n\n                lock (gate)\n                {\n                    try { observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                cancelable.Dispose();\n\n                lock (gate)\n                {\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n\n            // immutable, can share.\n            class ThrottleFirstFrameTick : IObserver<long>\n            {\n                readonly ThrottleFirstFrame parent;\n\n                public ThrottleFirstFrameTick(ThrottleFirstFrame parent)\n                {\n                    this.parent = parent;\n                }\n\n                public void OnCompleted()\n                {\n                }\n\n                public void OnError(Exception error)\n                {\n                }\n\n                public void OnNext(long _)\n                {\n                    lock (parent.gate)\n                    {\n                        parent.open = true;\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/ThrottleFirstFrame.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 3ec92e777b0b4d949967b0663ce8bee8\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/ThrottleFrame.cs",
    "content": "﻿using System;\n\n#if UniRxLibrary\nusing UnityObservable = UniRx.ObservableUnity;\n#else\nusing UnityObservable = UniRx.Observable;\n#endif\n\nnamespace UniRx.Operators\n{\n    internal class ThrottleFrameObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly int frameCount;\n        readonly FrameCountType frameCountType;\n\n        public ThrottleFrameObservable(IObservable<T> source, int frameCount, FrameCountType frameCountType) : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.frameCount = frameCount;\n            this.frameCountType = frameCountType;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new ThrottleFrame(this, observer, cancel).Run();\n        }\n\n        class ThrottleFrame : OperatorObserverBase<T, T>\n        {\n            readonly ThrottleFrameObservable<T> parent;\n            readonly object gate = new object();\n            T latestValue = default(T);\n            bool hasValue = false;\n            SerialDisposable cancelable;\n            ulong id = 0;\n\n            public ThrottleFrame(ThrottleFrameObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                cancelable = new SerialDisposable();\n                var subscription = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(cancelable, subscription);\n            }\n\n            public override void OnNext(T value)\n            {\n                ulong currentid;\n                lock (gate)\n                {\n                    hasValue = true;\n                    latestValue = value;\n                    id = unchecked(id + 1);\n                    currentid = id;\n                }\n\n                var d = new SingleAssignmentDisposable();\n                cancelable.Disposable = d;\n                d.Disposable = UnityObservable.TimerFrame(parent.frameCount, parent.frameCountType)\n                    .Subscribe(new ThrottleFrameTick(this, currentid));\n            }\n\n            public override void OnError(Exception error)\n            {\n                cancelable.Dispose();\n\n                lock (gate)\n                {\n                    hasValue = false;\n                    id = unchecked(id + 1);\n                    try { observer.OnError(error); } finally { Dispose(); }\n                }\n            }\n\n            public override void OnCompleted()\n            {\n                cancelable.Dispose();\n\n                lock (gate)\n                {\n                    if (hasValue)\n                    {\n                        observer.OnNext(latestValue);\n                    }\n                    hasValue = false;\n                    id = unchecked(id + 1);\n                    try { observer.OnCompleted(); } finally { Dispose(); }\n                }\n            }\n\n            class ThrottleFrameTick : IObserver<long>\n            {\n                readonly ThrottleFrame parent;\n                readonly ulong currentid;\n\n                public ThrottleFrameTick(ThrottleFrame parent, ulong currentid)\n                {\n                    this.parent = parent;\n                    this.currentid = currentid;\n                }\n\n                public void OnCompleted()\n                {\n                }\n\n                public void OnError(Exception error)\n                {\n                }\n\n                public void OnNext(long _)\n                {\n                    lock (parent.gate)\n                    {\n                        if (parent.hasValue && parent.id == currentid)\n                        {\n                            parent.observer.OnNext(parent.latestValue);\n                        }\n                        parent.hasValue = false;\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/ThrottleFrame.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2c4ef0bfcfe787543999c7a6cda03c07\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/TimeoutFrame.cs",
    "content": "﻿using System;\n\n#if UniRxLibrary\nusing UnityObservable = UniRx.ObservableUnity;\n#else\nusing UnityObservable = UniRx.Observable;\n#endif\n\nnamespace UniRx.Operators\n{\n    internal class TimeoutFrameObservable<T> : OperatorObservableBase<T>\n    {\n        readonly IObservable<T> source;\n        readonly int frameCount;\n        readonly FrameCountType frameCountType;\n\n        public TimeoutFrameObservable(IObservable<T> source, int frameCount, FrameCountType frameCountType) : base(source.IsRequiredSubscribeOnCurrentThread())\n        {\n            this.source = source;\n            this.frameCount = frameCount;\n            this.frameCountType = frameCountType;\n        }\n\n        protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)\n        {\n            return new TimeoutFrame(this, observer, cancel).Run();\n        }\n\n        class TimeoutFrame : OperatorObserverBase<T, T>\n        {\n            readonly TimeoutFrameObservable<T> parent;\n            readonly object gate = new object();\n            ulong objectId = 0ul;\n            bool isTimeout = false;\n            SingleAssignmentDisposable sourceSubscription;\n            SerialDisposable timerSubscription;\n\n            public TimeoutFrame(TimeoutFrameObservable<T> parent, IObserver<T> observer, IDisposable cancel) : base(observer, cancel)\n            {\n                this.parent = parent;\n            }\n\n            public IDisposable Run()\n            {\n                sourceSubscription = new SingleAssignmentDisposable();\n                timerSubscription = new SerialDisposable();\n                timerSubscription.Disposable = RunTimer(objectId);\n                sourceSubscription.Disposable = parent.source.Subscribe(this);\n\n                return StableCompositeDisposable.Create(timerSubscription, sourceSubscription);\n            }\n\n            IDisposable RunTimer(ulong timerId)\n            {\n                return UnityObservable.TimerFrame(parent.frameCount, parent.frameCountType)\n                    .Subscribe(new TimeoutFrameTick(this, timerId));\n            }\n\n            public override void OnNext(T value)\n            {\n                ulong useObjectId;\n                bool timeout;\n                lock (gate)\n                {\n                    timeout = isTimeout;\n                    objectId++;\n                    useObjectId = objectId;\n                }\n                if (timeout) return;\n\n                timerSubscription.Disposable = Disposable.Empty; // cancel old timer\n                observer.OnNext(value);\n                timerSubscription.Disposable = RunTimer(useObjectId);\n            }\n\n            public override void OnError(Exception error)\n            {\n                bool timeout;\n                lock (gate)\n                {\n                    timeout = isTimeout;\n                    objectId++;\n                }\n                if (timeout) return;\n\n                timerSubscription.Dispose();\n                try { observer.OnError(error); } finally { Dispose(); }\n            }\n\n            public override void OnCompleted()\n            {\n                bool timeout;\n                lock (gate)\n                {\n                    timeout = isTimeout;\n                    objectId++;\n                }\n                if (timeout) return;\n\n                timerSubscription.Dispose();\n                try { observer.OnCompleted(); } finally { Dispose(); }\n            }\n\n            class TimeoutFrameTick : IObserver<long>\n            {\n                readonly TimeoutFrame parent;\n                readonly ulong timerId;\n\n                public TimeoutFrameTick(TimeoutFrame parent, ulong timerId)\n                {\n                    this.parent = parent;\n                    this.timerId = timerId;\n                }\n\n                public void OnCompleted()\n                {\n                }\n\n                public void OnError(Exception error)\n                {\n                }\n\n                public void OnNext(long _)\n                {\n\n\n                    lock (parent.gate)\n                    {\n                        if (parent.objectId == timerId)\n                        {\n                            parent.isTimeout = true;\n                        }\n                    }\n                    if (parent.isTimeout)\n                    {\n                        try { parent.observer.OnError(new TimeoutException()); } finally { parent.Dispose(); }\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/TimeoutFrame.cs.meta",
    "content": "fileFormatVersion: 2\nguid: c27be0a585d78a944bccd31b86ee6722\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Operators.meta",
    "content": "fileFormatVersion: 2\nguid: 4d126dc4a05228e418759d57f7661329\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveCollection.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace UniRx\n{\n    public struct CollectionAddEvent<T> : IEquatable<CollectionAddEvent<T>>\n    {\n        public int Index { get; private set; }\n        public T Value { get; private set; }\n\n        public CollectionAddEvent(int index, T value)\n            :this()\n        {\n            Index = index;\n            Value = value;\n        }\n\n        public override string ToString()\n        {\n            return string.Format(\"Index:{0} Value:{1}\", Index, Value);\n        }\n\n        public override int GetHashCode()\n        {\n            return Index.GetHashCode() ^ EqualityComparer<T>.Default.GetHashCode(Value) << 2;\n        }\n\n        public bool Equals(CollectionAddEvent<T> other)\n        {\n            return Index.Equals(other.Index) && EqualityComparer<T>.Default.Equals(Value, other.Value);\n        }\n    }\n\n    public struct CollectionRemoveEvent<T> : IEquatable<CollectionRemoveEvent<T>>\n    {\n        public int Index { get; private set; }\n        public T Value { get; private set; }\n\n        public CollectionRemoveEvent(int index, T value)\n            : this()\n        {\n            Index = index;\n            Value = value;\n        }\n\n        public override string ToString()\n        {\n            return string.Format(\"Index:{0} Value:{1}\", Index, Value);\n        }\n\n        public override int GetHashCode()\n        {\n            return Index.GetHashCode() ^ EqualityComparer<T>.Default.GetHashCode(Value) << 2;\n        }\n\n        public bool Equals(CollectionRemoveEvent<T> other)\n        {\n            return Index.Equals(other.Index) && EqualityComparer<T>.Default.Equals(Value, other.Value);\n        }\n    }\n\n    public struct CollectionMoveEvent<T> : IEquatable<CollectionMoveEvent<T>>\n    {\n        public int OldIndex { get; private set; }\n        public int NewIndex { get; private set; }\n        public T Value { get; private set; }\n\n        public CollectionMoveEvent(int oldIndex, int newIndex, T value)\n            : this()\n        {\n            OldIndex = oldIndex;\n            NewIndex = newIndex;\n            Value = value;\n        }\n\n        public override string ToString()\n        {\n            return string.Format(\"OldIndex:{0} NewIndex:{1} Value:{2}\", OldIndex, NewIndex, Value);\n        }\n\n        public override int GetHashCode()\n        {\n            return OldIndex.GetHashCode() ^ NewIndex.GetHashCode() << 2 ^ EqualityComparer<T>.Default.GetHashCode(Value) >> 2;\n        }\n\n        public bool Equals(CollectionMoveEvent<T> other)\n        {\n            return OldIndex.Equals(other.OldIndex) && NewIndex.Equals(other.NewIndex) && EqualityComparer<T>.Default.Equals(Value, other.Value);\n        }\n    }\n\n    public struct CollectionReplaceEvent<T> : IEquatable<CollectionReplaceEvent<T>>\n    {\n        public int Index { get; private set; }\n        public T OldValue { get; private set; }\n        public T NewValue { get; private set; }\n\n        public CollectionReplaceEvent(int index, T oldValue, T newValue)\n            : this()\n        {\n            Index = index;\n            OldValue = oldValue;\n            NewValue = newValue;\n        }\n\n        public override string ToString()\n        {\n            return string.Format(\"Index:{0} OldValue:{1} NewValue:{2}\", Index, OldValue, NewValue);\n        }\n\n        public override int GetHashCode()\n        {\n            return Index.GetHashCode() ^ EqualityComparer<T>.Default.GetHashCode(OldValue) << 2 ^ EqualityComparer<T>.Default.GetHashCode(NewValue) >> 2;\n        }\n\n        public bool Equals(CollectionReplaceEvent<T> other)\n        {\n            return Index.Equals(other.Index)\n                && EqualityComparer<T>.Default.Equals(OldValue, other.OldValue)\n                && EqualityComparer<T>.Default.Equals(NewValue, other.NewValue);\n        }\n    }\n\n    // IReadOnlyList<out T> is from .NET 4.5\n    public interface IReadOnlyReactiveCollection<T> : IEnumerable<T>\n    {\n        int Count { get; }\n        T this[int index] { get; }\n        IObservable<CollectionAddEvent<T>> ObserveAdd();\n        IObservable<int> ObserveCountChanged(bool notifyCurrentCount = false);\n        IObservable<CollectionMoveEvent<T>> ObserveMove();\n        IObservable<CollectionRemoveEvent<T>> ObserveRemove();\n        IObservable<CollectionReplaceEvent<T>> ObserveReplace();\n        IObservable<Unit> ObserveReset();\n    }\n\n    public interface IReactiveCollection<T> : IList<T>, IReadOnlyReactiveCollection<T>\n    {\n        new int Count { get; }\n        new T this[int index] { get; set; }\n        void Move(int oldIndex, int newIndex);\n    }\n\n    [Serializable]\n    public class ReactiveCollection<T> : Collection<T>, IReactiveCollection<T>, IDisposable\n    {\n        [NonSerialized]\n        bool isDisposed = false;\n\n        public ReactiveCollection()\n        {\n\n        }\n\n        public ReactiveCollection(IEnumerable<T> collection)\n        {\n            if (collection == null) throw new ArgumentNullException(\"collection\");\n\n            foreach (var item in collection)\n            {\n                Add(item);\n            }\n        }\n\n        public ReactiveCollection(List<T> list)\n            : base(list != null ? new List<T>(list) : null)\n        {\n        }\n\n        protected override void ClearItems()\n        {\n            var beforeCount = Count;\n            base.ClearItems();\n\n            if (collectionReset != null) collectionReset.OnNext(Unit.Default);\n            if (beforeCount > 0)\n            {\n                if (countChanged != null) countChanged.OnNext(Count);\n            }\n        }\n\n        protected override void InsertItem(int index, T item)\n        {\n            base.InsertItem(index, item);\n\n            if (collectionAdd != null) collectionAdd.OnNext(new CollectionAddEvent<T>(index, item));\n            if (countChanged != null) countChanged.OnNext(Count);\n        }\n\n        public void Move(int oldIndex, int newIndex)\n        {\n            MoveItem(oldIndex, newIndex);\n        }\n\n        protected virtual void MoveItem(int oldIndex, int newIndex)\n        {\n            T item = this[oldIndex];\n            base.RemoveItem(oldIndex);\n            base.InsertItem(newIndex, item);\n\n            if (collectionMove != null) collectionMove.OnNext(new CollectionMoveEvent<T>(oldIndex, newIndex, item));\n        }\n\n        protected override void RemoveItem(int index)\n        {\n            T item = this[index];\n            base.RemoveItem(index);\n\n            if (collectionRemove != null) collectionRemove.OnNext(new CollectionRemoveEvent<T>(index, item));\n            if (countChanged != null) countChanged.OnNext(Count);\n        }\n\n        protected override void SetItem(int index, T item)\n        {\n            T oldItem = this[index];\n            base.SetItem(index, item);\n\n            if (collectionReplace != null) collectionReplace.OnNext(new CollectionReplaceEvent<T>(index, oldItem, item));\n        }\n\n\n        [NonSerialized]\n        Subject<int> countChanged = null;\n        public IObservable<int> ObserveCountChanged(bool notifyCurrentCount = false)\n        {\n            if (isDisposed) return Observable.Empty<int>();\n\n            var subject = countChanged ?? (countChanged = new Subject<int>());\n            if (notifyCurrentCount)\n            {\n                return subject.StartWith(() => this.Count);\n            }\n            else\n            {\n                return subject;\n            }\n        }\n\n        [NonSerialized]\n        Subject<Unit> collectionReset = null;\n        public IObservable<Unit> ObserveReset()\n        {\n            if (isDisposed) return Observable.Empty<Unit>();\n            return collectionReset ?? (collectionReset = new Subject<Unit>());\n        }\n\n        [NonSerialized]\n        Subject<CollectionAddEvent<T>> collectionAdd = null;\n        public IObservable<CollectionAddEvent<T>> ObserveAdd()\n        {\n            if (isDisposed) return Observable.Empty<CollectionAddEvent<T>>();\n            return collectionAdd ?? (collectionAdd = new Subject<CollectionAddEvent<T>>());\n        }\n\n        [NonSerialized]\n        Subject<CollectionMoveEvent<T>> collectionMove = null;\n        public IObservable<CollectionMoveEvent<T>> ObserveMove()\n        {\n            if (isDisposed) return Observable.Empty<CollectionMoveEvent<T>>();\n            return collectionMove ?? (collectionMove = new Subject<CollectionMoveEvent<T>>());\n        }\n\n        [NonSerialized]\n        Subject<CollectionRemoveEvent<T>> collectionRemove = null;\n        public IObservable<CollectionRemoveEvent<T>> ObserveRemove()\n        {\n            if (isDisposed) return Observable.Empty<CollectionRemoveEvent<T>>();\n            return collectionRemove ?? (collectionRemove = new Subject<CollectionRemoveEvent<T>>());\n        }\n\n        [NonSerialized]\n        Subject<CollectionReplaceEvent<T>> collectionReplace = null;\n        public IObservable<CollectionReplaceEvent<T>> ObserveReplace()\n        {\n            if (isDisposed) return Observable.Empty<CollectionReplaceEvent<T>>();\n            return collectionReplace ?? (collectionReplace = new Subject<CollectionReplaceEvent<T>>());\n        }\n\n        void DisposeSubject<TSubject>(ref Subject<TSubject> subject)\n        {\n            if (subject != null)\n            {\n                try\n                {\n                    subject.OnCompleted();\n                }\n                finally\n                {\n                    subject.Dispose();\n                    subject = null;\n                }\n            }\n        }\n\n        #region IDisposable Support\n\n        private bool disposedValue = false;\n\n        protected virtual void Dispose(bool disposing)\n        {\n            if (!disposedValue)\n            {\n                if (disposing)\n                {\n                    DisposeSubject(ref collectionReset);\n                    DisposeSubject(ref collectionAdd);\n                    DisposeSubject(ref collectionMove);\n                    DisposeSubject(ref collectionRemove);\n                    DisposeSubject(ref collectionReplace);\n                    DisposeSubject(ref countChanged);\n                }\n\n                disposedValue = true;\n            }\n        }\n\n        public void Dispose()\n        {\n            Dispose(true);\n        }\n        \n        #endregion\n    }\n\n    public static partial class ReactiveCollectionExtensions\n    {\n        public static ReactiveCollection<T> ToReactiveCollection<T>(this IEnumerable<T> source)\n        {\n            return new ReactiveCollection<T>(source);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveCollection.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2e22185fb1dbcef42bc613efd4769011\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveCommand.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading;\n\n#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\nusing System.Threading.Tasks;\nusing UniRx.InternalUtil;\n#endif\nnamespace UniRx\n{\n    public interface IReactiveCommand<T> : IObservable<T>\n    {\n        IReadOnlyReactiveProperty<bool> CanExecute { get; }\n        bool Execute(T parameter);\n    }\n\n    public interface IAsyncReactiveCommand<T>\n    {\n        IReadOnlyReactiveProperty<bool> CanExecute { get; }\n        IDisposable Execute(T parameter);\n        IDisposable Subscribe(Func<T, IObservable<Unit>> asyncAction);\n    }\n\n    /// <summary>\n    /// Represents ReactiveCommand&lt;Unit&gt;\n    /// </summary>\n    public class ReactiveCommand : ReactiveCommand<Unit>\n    {\n        /// <summary>\n        /// CanExecute is always true.\n        /// </summary>\n        public ReactiveCommand()\n            : base()\n        { }\n\n        /// <summary>\n        /// CanExecute is changed from canExecute sequence.\n        /// </summary>\n        public ReactiveCommand(IObservable<bool> canExecuteSource, bool initialValue = true)\n            : base(canExecuteSource, initialValue)\n        {\n        }\n\n        /// <summary>Push null to subscribers.</summary>\n        public bool Execute()\n        {\n            return Execute(Unit.Default);\n        }\n\n        /// <summary>Force push parameter to subscribers.</summary>\n        public void ForceExecute()\n        {\n            ForceExecute(Unit.Default);\n        }\n    }\n\n    public class ReactiveCommand<T> : IReactiveCommand<T>, IDisposable\n    {\n        readonly Subject<T> trigger = new Subject<T>();\n        readonly IDisposable canExecuteSubscription;\n\n        ReactiveProperty<bool> canExecute;\n        public IReadOnlyReactiveProperty<bool> CanExecute\n        {\n            get\n            {\n                return canExecute;\n            }\n        }\n\n        public bool IsDisposed { get; private set; }\n\n        /// <summary>\n        /// CanExecute is always true.\n        /// </summary>\n        public ReactiveCommand()\n        {\n            this.canExecute = new ReactiveProperty<bool>(true);\n            this.canExecuteSubscription = Disposable.Empty;\n        }\n\n        /// <summary>\n        /// CanExecute is changed from canExecute sequence.\n        /// </summary>\n        public ReactiveCommand(IObservable<bool> canExecuteSource, bool initialValue = true)\n        {\n            this.canExecute = new ReactiveProperty<bool>(initialValue);\n            this.canExecuteSubscription = canExecuteSource\n                .DistinctUntilChanged()\n                .SubscribeWithState(canExecute, (b, c) => c.Value = b);\n        }\n\n        /// <summary>Push parameter to subscribers when CanExecute.</summary>\n        public bool Execute(T parameter)\n        {\n            if (canExecute.Value)\n            {\n                trigger.OnNext(parameter);\n                return true;\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        /// <summary>Force push parameter to subscribers.</summary>\n        public void ForceExecute(T parameter)\n        {\n            trigger.OnNext(parameter);\n        }\n\n        /// <summary>Subscribe execute.</summary>\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            return trigger.Subscribe(observer);\n        }\n\n        /// <summary>\n        /// Stop all subscription and lock CanExecute is false.\n        /// </summary>\n        public void Dispose()\n        {\n            if (IsDisposed) return;\n\n            IsDisposed = true;\n            canExecute.Dispose();\n            trigger.OnCompleted();\n            trigger.Dispose();\n            canExecuteSubscription.Dispose();\n        }\n    }\n\n    /// <summary>\n    /// Variation of ReactiveCommand, when executing command then CanExecute = false after CanExecute = true.\n    /// </summary>\n    public class AsyncReactiveCommand : AsyncReactiveCommand<Unit>\n    {\n        /// <summary>\n        /// CanExecute is automatically changed when executing to false and finished to true.\n        /// </summary>\n        public AsyncReactiveCommand()\n            : base()\n        {\n\n        }\n\n        /// <summary>\n        /// CanExecute is automatically changed when executing to false and finished to true.\n        /// </summary>\n        public AsyncReactiveCommand(IObservable<bool> canExecuteSource)\n            : base(canExecuteSource)\n        {\n        }\n\n        /// <summary>\n        /// CanExecute is automatically changed when executing to false and finished to true.\n        /// The source is shared between other AsyncReactiveCommand.\n        /// </summary>\n        public AsyncReactiveCommand(IReactiveProperty<bool> sharedCanExecute)\n            : base(sharedCanExecute)\n        {\n        }\n\n        public IDisposable Execute()\n        {\n            return base.Execute(Unit.Default);\n        }\n    }\n\n    /// <summary>\n    /// Variation of ReactiveCommand, canExecute is changed when executing command then CanExecute = false after CanExecute = true.\n    /// </summary>\n    public class AsyncReactiveCommand<T> : IAsyncReactiveCommand<T>\n    {\n        UniRx.InternalUtil.ImmutableList<Func<T, IObservable<Unit>>> asyncActions = UniRx.InternalUtil.ImmutableList<Func<T, IObservable<Unit>>>.Empty;\n\n        readonly object gate = new object();\n        readonly IReactiveProperty<bool> canExecuteSource;\n        readonly IReadOnlyReactiveProperty<bool> canExecute;\n\n        public IReadOnlyReactiveProperty<bool> CanExecute\n        {\n            get\n            {\n                return canExecute;\n            }\n        }\n\n        public bool IsDisposed { get; private set; }\n\n        /// <summary>\n        /// CanExecute is automatically changed when executing to false and finished to true.\n        /// </summary>\n        public AsyncReactiveCommand()\n        {\n            this.canExecuteSource = new ReactiveProperty<bool>(true);\n            this.canExecute = canExecuteSource;\n        }\n\n        /// <summary>\n        /// CanExecute is automatically changed when executing to false and finished to true.\n        /// </summary>\n        public AsyncReactiveCommand(IObservable<bool> canExecuteSource)\n        {\n            this.canExecuteSource = new ReactiveProperty<bool>(true);\n            this.canExecute = this.canExecuteSource.CombineLatest(canExecuteSource, (x, y) => x && y).ToReactiveProperty();\n        }\n\n        /// <summary>\n        /// CanExecute is automatically changed when executing to false and finished to true.\n        /// The source is shared between other AsyncReactiveCommand.\n        /// </summary>\n        public AsyncReactiveCommand(IReactiveProperty<bool> sharedCanExecute)\n        {\n            this.canExecuteSource = sharedCanExecute;\n            this.canExecute = sharedCanExecute;\n        }\n\n        /// <summary>Push parameter to subscribers when CanExecute.</summary>\n        public IDisposable Execute(T parameter)\n        {\n            if (canExecute.Value)\n            {\n                canExecuteSource.Value = false;\n                var a = asyncActions.Data;\n                if (a.Length == 1)\n                {\n                    try\n                    {\n                        var asyncState = a[0].Invoke(parameter) ?? Observable.ReturnUnit();\n                        return asyncState.Finally(() => canExecuteSource.Value = true).Subscribe();\n                    }\n                    catch\n                    {\n                        canExecuteSource.Value = true;\n                        throw;\n                    }\n                }\n                else\n                {\n                    var xs = new IObservable<Unit>[a.Length];\n                    try\n                    {\n                        for (int i = 0; i < a.Length; i++)\n                        {\n                            xs[i] = a[i].Invoke(parameter) ?? Observable.ReturnUnit();\n                        }\n                    }\n                    catch\n                    {\n                        canExecuteSource.Value = true;\n                        throw;\n                    }\n\n                    return Observable.WhenAll(xs).Finally(() => canExecuteSource.Value = true).Subscribe();\n                }\n            }\n            else\n            {\n                return Disposable.Empty;\n            }\n        }\n\n        /// <summary>Subscribe execute.</summary>\n        public IDisposable Subscribe(Func<T, IObservable<Unit>> asyncAction)\n        {\n            lock (gate)\n            {\n                asyncActions = asyncActions.Add(asyncAction);\n            }\n\n            return new Subscription(this, asyncAction);\n        }\n\n        /// <summary>\n        /// Stop all subscription and lock CanExecute is false.\n        /// </summary>\n        public void Dispose()\n        {\n            if (IsDisposed) return;\n\n            IsDisposed = true;\n            asyncActions = UniRx.InternalUtil.ImmutableList<Func<T, IObservable<Unit>>>.Empty;\n        }\n        class Subscription : IDisposable\n        {\n            readonly AsyncReactiveCommand<T> parent;\n            readonly Func<T, IObservable<Unit>> asyncAction;\n\n            public Subscription(AsyncReactiveCommand<T> parent, Func<T, IObservable<Unit>> asyncAction)\n            {\n                this.parent = parent;\n                this.asyncAction = asyncAction;\n            }\n\n            public void Dispose()\n            {\n                lock (parent.gate)\n                {\n                    parent.asyncActions = parent.asyncActions.Remove(asyncAction);\n                }\n            }\n        }\n    }\n\n    public static class ReactiveCommandExtensions\n    {\n        /// <summary>\n        /// Create non parameter commands. CanExecute is changed from canExecute sequence.\n        /// </summary>\n        public static ReactiveCommand ToReactiveCommand(this IObservable<bool> canExecuteSource, bool initialValue = true)\n        {\n            return new ReactiveCommand(canExecuteSource, initialValue);\n        }\n\n        /// <summary>\n        /// Create parametered comamnds. CanExecute is changed from canExecute sequence.\n        /// </summary>\n        public static ReactiveCommand<T> ToReactiveCommand<T>(this IObservable<bool> canExecuteSource, bool initialValue = true)\n        {\n            return new ReactiveCommand<T>(canExecuteSource, initialValue);\n        }\n\n#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n\n        static readonly Action<object> Callback = CancelCallback;\n\n        static void CancelCallback(object state)\n        {\n            var tuple = (Tuple<ICancellableTaskCompletionSource, IDisposable>)state;\n            tuple.Item2.Dispose();\n            tuple.Item1.TrySetCanceled();\n        }\n\n        public static Task<T> WaitUntilExecuteAsync<T>(this IReactiveCommand<T> source, CancellationToken cancellationToken = default(CancellationToken))\n        {\n            var tcs = new CancellableTaskCompletionSource<T>();\n\n            var disposable = new SingleAssignmentDisposable();\n            disposable.Disposable = source.Subscribe(x =>\n            {\n                disposable.Dispose(); // finish subscription.\n                tcs.TrySetResult(x);\n            }, ex => tcs.TrySetException(ex), () => tcs.TrySetCanceled());\n\n            cancellationToken.Register(Callback, Tuple.Create(tcs, disposable.Disposable), false);\n\n            return tcs.Task;\n        }\n\n        public static System.Runtime.CompilerServices.TaskAwaiter<T> GetAwaiter<T>(this IReactiveCommand<T> command)\n        {\n            return command.WaitUntilExecuteAsync(CancellationToken.None).GetAwaiter();\n        }\n\n#endif\n\n#if !UniRxLibrary\n\n        // for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\n        /// <summary>\n        /// Bind ReactiveCommand to button's interactable and onClick.\n        /// </summary>\n        public static IDisposable BindTo(this IReactiveCommand<Unit> command, UnityEngine.UI.Button button)\n        {\n            var d1 = command.CanExecute.SubscribeToInteractable(button);\n            var d2 = button.OnClickAsObservable().SubscribeWithState(command, (x, c) => c.Execute(x));\n            return StableCompositeDisposable.Create(d1, d2);\n        }\n\n        /// <summary>\n        /// Bind ReactiveCommand to button's interactable and onClick and register onClick action to command.\n        /// </summary>\n        public static IDisposable BindToOnClick(this IReactiveCommand<Unit> command, UnityEngine.UI.Button button, Action<Unit> onClick)\n        {\n            var d1 = command.CanExecute.SubscribeToInteractable(button);\n            var d2 = button.OnClickAsObservable().SubscribeWithState(command, (x, c) => c.Execute(x));\n            var d3 = command.Subscribe(onClick);\n\n            return StableCompositeDisposable.Create(d1, d2, d3);\n        }\n\n        /// <summary>\n        /// Bind canExecuteSource to button's interactable and onClick and register onClick action to command.\n        /// </summary>\n        public static IDisposable BindToButtonOnClick(this IObservable<bool> canExecuteSource, UnityEngine.UI.Button button, Action<Unit> onClick, bool initialValue = true)\n        {\n            return ToReactiveCommand(canExecuteSource, initialValue).BindToOnClick(button, onClick);\n        }\n\n#endif\n\n#endif\n    }\n\n    public static class AsyncReactiveCommandExtensions\n    {\n        public static AsyncReactiveCommand ToAsyncReactiveCommand(this IReactiveProperty<bool> sharedCanExecuteSource)\n        {\n            return new AsyncReactiveCommand(sharedCanExecuteSource);\n        }\n\n        public static AsyncReactiveCommand<T> ToAsyncReactiveCommand<T>(this IReactiveProperty<bool> sharedCanExecuteSource)\n        {\n            return new AsyncReactiveCommand<T>(sharedCanExecuteSource);\n        }\n\n#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n\n        static readonly Action<object> Callback = CancelCallback;\n\n        static void CancelCallback(object state)\n        {\n            var tuple = (Tuple<ICancellableTaskCompletionSource, IDisposable>)state;\n            tuple.Item2.Dispose();\n            tuple.Item1.TrySetCanceled();\n        }\n\n        public static Task<T> WaitUntilExecuteAsync<T>(this IAsyncReactiveCommand<T> source, CancellationToken cancellationToken = default(CancellationToken))\n        {\n            var tcs = new CancellableTaskCompletionSource<T>();\n\n            var subscription = source.Subscribe(x => { tcs.TrySetResult(x); return Observable.ReturnUnit(); });\n            cancellationToken.Register(Callback, Tuple.Create(tcs, subscription), false);\n\n            return tcs.Task;\n        }\n\n        public static System.Runtime.CompilerServices.TaskAwaiter<T> GetAwaiter<T>(this IAsyncReactiveCommand<T> command)\n        {\n            return command.WaitUntilExecuteAsync(CancellationToken.None).GetAwaiter();\n        }\n\n#endif\n\n\n#if !UniRxLibrary\n\n        // for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\n        /// <summary>\n        /// Bind AsyncRaectiveCommand to button's interactable and onClick.\n        /// </summary>\n        public static IDisposable BindTo(this IAsyncReactiveCommand<Unit> command, UnityEngine.UI.Button button)\n        {\n            var d1 = command.CanExecute.SubscribeToInteractable(button);\n            var d2 = button.OnClickAsObservable().SubscribeWithState(command, (x, c) => c.Execute(x));\n\n            return StableCompositeDisposable.Create(d1, d2);\n        }\n\n        /// <summary>\n        /// Bind AsyncRaectiveCommand to button's interactable and onClick and register async action to command.\n        /// </summary>\n        public static IDisposable BindToOnClick(this IAsyncReactiveCommand<Unit> command, UnityEngine.UI.Button button, Func<Unit, IObservable<Unit>> asyncOnClick)\n        {\n            var d1 = command.CanExecute.SubscribeToInteractable(button);\n            var d2 = button.OnClickAsObservable().SubscribeWithState(command, (x, c) => c.Execute(x));\n            var d3 = command.Subscribe(asyncOnClick);\n\n            return StableCompositeDisposable.Create(d1, d2, d3);\n        }\n\n        /// <summary>\n        /// Create AsyncReactiveCommand and bind to button's interactable and onClick and register async action to command.\n        /// </summary>\n        public static IDisposable BindToOnClick(this UnityEngine.UI.Button button, Func<Unit, IObservable<Unit>> asyncOnClick)\n        {\n            return new AsyncReactiveCommand().BindToOnClick(button, asyncOnClick);\n        }\n\n        /// <summary>\n        /// Create AsyncReactiveCommand and bind sharedCanExecuteSource source to button's interactable and onClick and register async action to command.\n        /// </summary>\n        public static IDisposable BindToOnClick(this UnityEngine.UI.Button button, IReactiveProperty<bool> sharedCanExecuteSource, Func<Unit, IObservable<Unit>> asyncOnClick)\n        {\n            return sharedCanExecuteSource.ToAsyncReactiveCommand().BindToOnClick(button, asyncOnClick);\n        }\n#endif\n\n#endif\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveCommand.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 939b249fde5252f45a4404e7648931ed\ntimeCreated: 1462927720\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveDictionary.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Runtime.Serialization;\n\nnamespace UniRx\n{\n    public struct DictionaryAddEvent<TKey, TValue> : IEquatable<DictionaryAddEvent<TKey, TValue>>\n    {\n        public TKey Key { get; private set; }\n        public TValue Value { get; private set; }\n\n        public DictionaryAddEvent(TKey key, TValue value)\n            : this()\n        {\n            Key = key;\n            Value = value;\n        }\n\n        public override string ToString()\n        {\n            return string.Format(\"Key:{0} Value:{1}\", Key, Value);\n        }\n\n        public override int GetHashCode()\n        {\n            return EqualityComparer<TKey>.Default.GetHashCode(Key) ^ EqualityComparer<TValue>.Default.GetHashCode(Value) << 2;\n        }\n\n        public bool Equals(DictionaryAddEvent<TKey, TValue> other)\n        {\n            return EqualityComparer<TKey>.Default.Equals(Key, other.Key) && EqualityComparer<TValue>.Default.Equals(Value, other.Value);\n        }\n    }\n\n    public struct DictionaryRemoveEvent<TKey, TValue> : IEquatable<DictionaryRemoveEvent<TKey, TValue>>\n    {\n        public TKey Key { get; private set; }\n        public TValue Value { get; private set; }\n\n        public DictionaryRemoveEvent(TKey key, TValue value)\n            : this()\n        {\n            Key = key;\n            Value = value;\n        }\n\n        public override string ToString()\n        {\n            return string.Format(\"Key:{0} Value:{1}\", Key, Value);\n        }\n\n        public override int GetHashCode()\n        {\n            return EqualityComparer<TKey>.Default.GetHashCode(Key) ^ EqualityComparer<TValue>.Default.GetHashCode(Value) << 2;\n        }\n\n        public bool Equals(DictionaryRemoveEvent<TKey, TValue> other)\n        {\n            return EqualityComparer<TKey>.Default.Equals(Key, other.Key) && EqualityComparer<TValue>.Default.Equals(Value, other.Value);\n        }\n    }\n\n    public struct DictionaryReplaceEvent<TKey, TValue> : IEquatable<DictionaryReplaceEvent<TKey, TValue>>\n    {\n        public TKey Key { get; private set; }\n        public TValue OldValue { get; private set; }\n        public TValue NewValue { get; private set; }\n\n        public DictionaryReplaceEvent(TKey key, TValue oldValue, TValue newValue)\n            : this()\n        {\n            Key = key;\n            OldValue = oldValue;\n            NewValue = newValue;\n        }\n\n        public override string ToString()\n        {\n            return string.Format(\"Key:{0} OldValue:{1} NewValue:{2}\", Key, OldValue, NewValue);\n        }\n\n        public override int GetHashCode()\n        {\n            return EqualityComparer<TKey>.Default.GetHashCode(Key) ^ EqualityComparer<TValue>.Default.GetHashCode(OldValue) << 2 ^ EqualityComparer<TValue>.Default.GetHashCode(NewValue) >> 2;\n        }\n\n        public bool Equals(DictionaryReplaceEvent<TKey, TValue> other)\n        {\n            return EqualityComparer<TKey>.Default.Equals(Key, other.Key) && EqualityComparer<TValue>.Default.Equals(OldValue, other.OldValue) && EqualityComparer<TValue>.Default.Equals(NewValue, other.NewValue);\n        }\n    }\n\n    // IReadOnlyDictionary is from .NET 4.5\n    public interface IReadOnlyReactiveDictionary<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>>\n    {\n        int Count { get; }\n        TValue this[TKey index] { get; }\n        bool ContainsKey(TKey key);\n        bool TryGetValue(TKey key, out TValue value);\n\n        IObservable<DictionaryAddEvent<TKey, TValue>> ObserveAdd();\n        IObservable<int> ObserveCountChanged(bool notifyCurrentCount = false);\n        IObservable<DictionaryRemoveEvent<TKey, TValue>> ObserveRemove();\n        IObservable<DictionaryReplaceEvent<TKey, TValue>> ObserveReplace();\n        IObservable<Unit> ObserveReset();\n    }\n\n    public interface IReactiveDictionary<TKey, TValue> : IReadOnlyReactiveDictionary<TKey, TValue>, IDictionary<TKey, TValue>\n    {\n    }\n\n    [Serializable]\n    public class ReactiveDictionary<TKey, TValue> : IReactiveDictionary<TKey, TValue>, IDictionary<TKey, TValue>, IEnumerable, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IDictionary, IDisposable\n#if !UNITY_METRO\n        , ISerializable, IDeserializationCallback\n#endif\n    {\n        [NonSerialized]\n        bool isDisposed = false;\n\n#if !UniRxLibrary\n        [UnityEngine.SerializeField]\n#endif\n        readonly Dictionary<TKey, TValue> inner;\n\n        public ReactiveDictionary()\n        {\n            inner = new Dictionary<TKey, TValue>();\n        }\n\n        public ReactiveDictionary(IEqualityComparer<TKey> comparer)\n        {\n            inner = new Dictionary<TKey, TValue>(comparer);\n        }\n\n        public ReactiveDictionary(Dictionary<TKey, TValue> innerDictionary)\n        {\n            inner = innerDictionary;\n        }\n\n        public TValue this[TKey key]\n        {\n            get\n            {\n                return inner[key];\n            }\n\n            set\n            {\n                TValue oldValue;\n                if (TryGetValue(key, out oldValue))\n                {\n                    inner[key] = value;\n                    if (dictionaryReplace != null) dictionaryReplace.OnNext(new DictionaryReplaceEvent<TKey, TValue>(key, oldValue, value));\n                }\n                else\n                {\n                    inner[key] = value;\n                    if (dictionaryAdd != null) dictionaryAdd.OnNext(new DictionaryAddEvent<TKey, TValue>(key, value));\n                    if (countChanged != null) countChanged.OnNext(Count);\n                }\n            }\n        }\n\n        public int Count\n        {\n            get\n            {\n                return inner.Count;\n            }\n        }\n\n        public Dictionary<TKey, TValue>.KeyCollection Keys\n        {\n            get\n            {\n                return inner.Keys;\n            }\n        }\n\n        public Dictionary<TKey, TValue>.ValueCollection Values\n        {\n            get\n            {\n                return inner.Values;\n            }\n        }\n\n        public void Add(TKey key, TValue value)\n        {\n            inner.Add(key, value);\n\n            if (dictionaryAdd != null) dictionaryAdd.OnNext(new DictionaryAddEvent<TKey, TValue>(key, value));\n            if (countChanged != null) countChanged.OnNext(Count);\n        }\n\n        public void Clear()\n        {\n            var beforeCount = Count;\n            inner.Clear();\n\n            if (collectionReset != null) collectionReset.OnNext(Unit.Default);\n            if (beforeCount > 0)\n            {\n                if (countChanged != null) countChanged.OnNext(Count);\n            }\n        }\n\n        public bool Remove(TKey key)\n        {\n            TValue oldValue;\n            if (inner.TryGetValue(key, out oldValue))\n            {\n                var isSuccessRemove = inner.Remove(key);\n                if (isSuccessRemove)\n                {\n                    if (dictionaryRemove != null) dictionaryRemove.OnNext(new DictionaryRemoveEvent<TKey, TValue>(key, oldValue));\n                    if (countChanged != null) countChanged.OnNext(Count);\n                }\n                return isSuccessRemove;\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        public bool ContainsKey(TKey key)\n        {\n            return inner.ContainsKey(key);\n        }\n\n        public bool TryGetValue(TKey key, out TValue value)\n        {\n            return inner.TryGetValue(key, out value);\n        }\n\n        public Dictionary<TKey, TValue>.Enumerator GetEnumerator()\n        {\n            return inner.GetEnumerator();\n        }\n\n        void DisposeSubject<TSubject>(ref Subject<TSubject> subject)\n        {\n            if (subject != null)\n            {\n                try\n                {\n                    subject.OnCompleted();\n                }\n                finally\n                {\n                    subject.Dispose();\n                    subject = null;\n                }\n            }\n        }\n\n        #region IDisposable Support\n\n        private bool disposedValue = false;\n\n        protected virtual void Dispose(bool disposing)\n        {\n            if (!disposedValue)\n            {\n                if (disposing)\n                {\n                    DisposeSubject(ref countChanged);\n                    DisposeSubject(ref collectionReset);\n                    DisposeSubject(ref dictionaryAdd);\n                    DisposeSubject(ref dictionaryRemove);\n                    DisposeSubject(ref dictionaryReplace);\n                }\n\n                disposedValue = true;\n            }\n        }\n\n        public void Dispose()\n        {\n            Dispose(true);\n        }\n\n        #endregion\n\n\n        #region Observe\n\n        [NonSerialized]\n        Subject<int> countChanged = null;\n        public IObservable<int> ObserveCountChanged(bool notifyCurrentCount = false)\n        {\n            if (isDisposed) return Observable.Empty<int>();\n\n            var subject = countChanged ?? (countChanged = new Subject<int>());\n            if (notifyCurrentCount)\n            {\n                return subject.StartWith(() => this.Count);\n            }\n            else\n            {\n                return subject;\n            }\n        }\n\n        [NonSerialized]\n        Subject<Unit> collectionReset = null;\n        public IObservable<Unit> ObserveReset()\n        {\n            if (isDisposed) return Observable.Empty<Unit>();\n            return collectionReset ?? (collectionReset = new Subject<Unit>());\n        }\n\n        [NonSerialized]\n        Subject<DictionaryAddEvent<TKey, TValue>> dictionaryAdd = null;\n        public IObservable<DictionaryAddEvent<TKey, TValue>> ObserveAdd()\n        {\n            if (isDisposed) return Observable.Empty<DictionaryAddEvent<TKey, TValue>>();\n            return dictionaryAdd ?? (dictionaryAdd = new Subject<DictionaryAddEvent<TKey, TValue>>());\n        }\n\n        [NonSerialized]\n        Subject<DictionaryRemoveEvent<TKey, TValue>> dictionaryRemove = null;\n        public IObservable<DictionaryRemoveEvent<TKey, TValue>> ObserveRemove()\n        {\n            if (isDisposed) return Observable.Empty<DictionaryRemoveEvent<TKey, TValue>>();\n            return dictionaryRemove ?? (dictionaryRemove = new Subject<DictionaryRemoveEvent<TKey, TValue>>());\n        }\n\n        [NonSerialized]\n        Subject<DictionaryReplaceEvent<TKey, TValue>> dictionaryReplace = null;\n        public IObservable<DictionaryReplaceEvent<TKey, TValue>> ObserveReplace()\n        {\n            if (isDisposed) return Observable.Empty<DictionaryReplaceEvent<TKey, TValue>>();\n            return dictionaryReplace ?? (dictionaryReplace = new Subject<DictionaryReplaceEvent<TKey, TValue>>());\n        }\n\n        #endregion\n\n        #region implement explicit\n\n        object IDictionary.this[object key]\n        {\n            get\n            {\n                return this[(TKey)key];\n            }\n\n            set\n            {\n                this[(TKey)key] = (TValue)value;\n            }\n        }\n\n\n        bool IDictionary.IsFixedSize\n        {\n            get\n            {\n                return ((IDictionary)inner).IsFixedSize;\n            }\n        }\n\n        bool IDictionary.IsReadOnly\n        {\n            get\n            {\n                return ((IDictionary)inner).IsReadOnly;\n            }\n        }\n\n        bool ICollection.IsSynchronized\n        {\n            get\n            {\n                return ((IDictionary)inner).IsSynchronized;\n            }\n        }\n\n        ICollection IDictionary.Keys\n        {\n            get\n            {\n                return ((IDictionary)inner).Keys;\n            }\n        }\n\n        object ICollection.SyncRoot\n        {\n            get\n            {\n                return ((IDictionary)inner).SyncRoot;\n            }\n        }\n\n        ICollection IDictionary.Values\n        {\n            get\n            {\n                return ((IDictionary)inner).Values;\n            }\n        }\n\n\n        bool ICollection<KeyValuePair<TKey, TValue>>.IsReadOnly\n        {\n            get\n            {\n                return ((ICollection<KeyValuePair<TKey, TValue>>)inner).IsReadOnly;\n            }\n        }\n\n        ICollection<TKey> IDictionary<TKey, TValue>.Keys\n        {\n            get\n            {\n                return inner.Keys;\n            }\n        }\n\n        ICollection<TValue> IDictionary<TKey, TValue>.Values\n        {\n            get\n            {\n                return inner.Values;\n            }\n        }\n\n        void IDictionary.Add(object key, object value)\n        {\n            Add((TKey)key, (TValue)value);\n        }\n\n        bool IDictionary.Contains(object key)\n        {\n            return ((IDictionary)inner).Contains(key);\n        }\n\n        void ICollection.CopyTo(Array array, int index)\n        {\n            ((IDictionary)inner).CopyTo(array, index);\n        }\n\n#if !UNITY_METRO\n\n        public void GetObjectData(SerializationInfo info, StreamingContext context)\n        {\n            ((ISerializable)inner).GetObjectData(info, context);\n        }\n\n        public void OnDeserialization(object sender)\n        {\n            ((IDeserializationCallback)inner).OnDeserialization(sender);\n        }\n\n#endif\n\n        void IDictionary.Remove(object key)\n        {\n            Remove((TKey)key);\n        }\n\n        void ICollection<KeyValuePair<TKey, TValue>>.Add(KeyValuePair<TKey, TValue> item)\n        {\n            Add((TKey)item.Key, (TValue)item.Value);\n        }\n\n        bool ICollection<KeyValuePair<TKey, TValue>>.Contains(KeyValuePair<TKey, TValue> item)\n        {\n            return ((ICollection<KeyValuePair<TKey, TValue>>)inner).Contains(item);\n        }\n\n        void ICollection<KeyValuePair<TKey, TValue>>.CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)\n        {\n            ((ICollection<KeyValuePair<TKey, TValue>>)inner).CopyTo(array, arrayIndex);\n        }\n\n        IEnumerator<KeyValuePair<TKey, TValue>> IEnumerable<KeyValuePair<TKey, TValue>>.GetEnumerator()\n        {\n            return ((ICollection<KeyValuePair<TKey, TValue>>)inner).GetEnumerator();\n        }\n\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            return inner.GetEnumerator();\n        }\n\n        bool ICollection<KeyValuePair<TKey, TValue>>.Remove(KeyValuePair<TKey, TValue> item)\n        {\n            TValue v;\n            if (TryGetValue(item.Key, out v))\n            {\n                if (EqualityComparer<TValue>.Default.Equals(v, item.Value))\n                {\n                    Remove(item.Key);\n                    return true;\n                }\n            }\n\n            return false;\n        }\n\n        IDictionaryEnumerator IDictionary.GetEnumerator()\n        {\n            return ((IDictionary)inner).GetEnumerator();\n        }\n\n        #endregion\n    }\n\n    public static partial class ReactiveDictionaryExtensions\n    {\n        public static ReactiveDictionary<TKey, TValue> ToReactiveDictionary<TKey, TValue>(this Dictionary<TKey, TValue> dictionary)\n        {\n            return new ReactiveDictionary<TKey, TValue>(dictionary);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveDictionary.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 12cd1079b0fe33f429f9f174c1f849af\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveProperty.cs",
    "content": "﻿#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n#endif\n\nusing System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing UniRx.InternalUtil;\n#if !UniRxLibrary\nusing UnityEngine;\n#endif\n#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\nusing System.Threading.Tasks;\n#endif\n\nnamespace UniRx\n{\n    public interface IReadOnlyReactiveProperty<T> : IObservable<T>\n    {\n        T Value { get; }\n        bool HasValue { get; }\n    }\n\n    public interface IReactiveProperty<T> : IReadOnlyReactiveProperty<T>\n    {\n        new T Value { get; set; }\n    }\n\n    internal interface IObserverLinkedList<T>\n    {\n        void UnsubscribeNode(ObserverNode<T> node);\n    }\n\n    internal sealed class ObserverNode<T> : IObserver<T>, IDisposable\n    {\n        readonly IObserver<T> observer;\n        IObserverLinkedList<T> list;\n\n        public ObserverNode<T> Previous { get; internal set; }\n        public ObserverNode<T> Next { get; internal set; }\n\n        public ObserverNode(IObserverLinkedList<T> list, IObserver<T> observer)\n        {\n            this.list = list;\n            this.observer = observer;\n        }\n\n        public void OnNext(T value)\n        {\n            observer.OnNext(value);\n        }\n\n        public void OnError(Exception error)\n        {\n            observer.OnError(error);\n        }\n\n        public void OnCompleted()\n        {\n            observer.OnCompleted();\n        }\n\n        public void Dispose()\n        {\n            var sourceList = Interlocked.Exchange(ref list, null);\n            if (sourceList != null)\n            {\n                sourceList.UnsubscribeNode(this);\n                sourceList = null;\n            }\n        }\n    }\n\n    /// <summary>\n    /// Lightweight property broker.\n    /// </summary>\n    [Serializable]\n    public class ReactiveProperty<T> : IReactiveProperty<T>, IDisposable, IOptimizedObservable<T>, IObserverLinkedList<T>\n    {\n#if !UniRxLibrary\n        static readonly IEqualityComparer<T> defaultEqualityComparer = UnityEqualityComparer.GetDefault<T>();\n#else\n        static readonly IEqualityComparer<T> defaultEqualityComparer = EqualityComparer<T>.Default;\n#endif\n\n#if !UniRxLibrary\n        [SerializeField]\n#endif\n        T value = default(T);\n\n        [NonSerialized]\n        ObserverNode<T> root;\n\n        [NonSerialized]\n        ObserverNode<T> last;\n\n        [NonSerialized]\n        bool isDisposed = false;\n\n        protected virtual IEqualityComparer<T> EqualityComparer\n        {\n            get\n            {\n                return defaultEqualityComparer;\n            }\n        }\n\n        public T Value\n        {\n            get\n            {\n                return value;\n            }\n            set\n            {\n                if (!EqualityComparer.Equals(this.value, value))\n                {\n                    SetValue(value);\n                    if (isDisposed)\n                        return;\n\n                    RaiseOnNext(ref value);\n                }\n            }\n        }\n\n        // always true, allows empty constructor 'can' publish value on subscribe.\n        // because sometimes value is deserialized from UnityEngine.\n        public bool HasValue\n        {\n            get\n            {\n                return true;\n            }\n        }\n\n        public ReactiveProperty()\n            : this(default(T))\n        {\n        }\n\n        public ReactiveProperty(T initialValue)\n        {\n            SetValue(initialValue);\n        }\n\n        void RaiseOnNext(ref T value)\n        {\n            var node = root;\n            while (node != null)\n            {\n                node.OnNext(value);\n                node = node.Next;\n            }\n        }\n\n        protected virtual void SetValue(T value)\n        {\n            this.value = value;\n        }\n\n        public void SetValueAndForceNotify(T value)\n        {\n            SetValue(value);\n            if (isDisposed)\n                return;\n\n            RaiseOnNext(ref value);\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            if (isDisposed)\n            {\n                observer.OnCompleted();\n                return Disposable.Empty;\n            }\n\n            // raise latest value on subscribe\n            observer.OnNext(value);\n\n            // subscribe node, node as subscription.\n            var next = new ObserverNode<T>(this, observer);\n            if (root == null)\n            {\n                root = last = next;\n            }\n            else\n            {\n                last.Next = next;\n                next.Previous = last;\n                last = next;\n            }\n            return next;\n        }\n\n        void IObserverLinkedList<T>.UnsubscribeNode(ObserverNode<T> node)\n        {\n            if (node == root)\n            {\n                root = node.Next;\n            }\n            if (node == last)\n            {\n                last = node.Previous;\n            }\n\n            if (node.Previous != null)\n            {\n                node.Previous.Next = node.Next;\n            }\n            if (node.Next != null)\n            {\n                node.Next.Previous = node.Previous;\n            }\n        }\n\n        public void Dispose()\n        {\n            Dispose(true);\n            GC.SuppressFinalize(this);\n        }\n\n        protected virtual void Dispose(bool disposing)\n        {\n            if (isDisposed) return;\n\n            var node = root;\n            root = last = null;\n            isDisposed = true;\n\n            while (node != null)\n            {\n                node.OnCompleted();\n                node = node.Next;\n            }\n        }\n\n        public override string ToString()\n        {\n            return (value == null) ? \"(null)\" : value.ToString();\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n    }\n\n    /// <summary>\n    /// Lightweight property broker.\n    /// </summary>\n    public class ReadOnlyReactiveProperty<T> : IReadOnlyReactiveProperty<T>, IDisposable, IOptimizedObservable<T>, IObserverLinkedList<T>, IObserver<T>\n    {\n#if !UniRxLibrary\n        static readonly IEqualityComparer<T> defaultEqualityComparer = UnityEqualityComparer.GetDefault<T>();\n#else\n        static readonly IEqualityComparer<T> defaultEqualityComparer = EqualityComparer<T>.Default;\n#endif\n\n        readonly bool distinctUntilChanged = true;\n        bool canPublishValueOnSubscribe = false;\n        bool isDisposed = false;\n        bool isSourceCompleted = false;\n\n        T latestValue = default(T);\n        Exception lastException = null;\n        IDisposable sourceConnection = null;\n\n        ObserverNode<T> root;\n        ObserverNode<T> last;\n\n        public T Value\n        {\n            get\n            {\n                return latestValue;\n            }\n        }\n\n        public bool HasValue\n        {\n            get\n            {\n                return canPublishValueOnSubscribe;\n            }\n        }\n\n        protected virtual IEqualityComparer<T> EqualityComparer\n        {\n            get\n            {\n                return defaultEqualityComparer;\n            }\n        }\n\n        public ReadOnlyReactiveProperty(IObservable<T> source)\n        {\n            this.sourceConnection = source.Subscribe(this);\n        }\n\n        public ReadOnlyReactiveProperty(IObservable<T> source, bool distinctUntilChanged)\n        {\n            this.distinctUntilChanged = distinctUntilChanged;\n            this.sourceConnection = source.Subscribe(this);\n        }\n\n        public ReadOnlyReactiveProperty(IObservable<T> source, T initialValue)\n        {\n            this.latestValue = initialValue;\n            this.canPublishValueOnSubscribe = true;\n            this.sourceConnection = source.Subscribe(this);\n        }\n\n        public ReadOnlyReactiveProperty(IObservable<T> source, T initialValue, bool distinctUntilChanged)\n        {\n            this.distinctUntilChanged = distinctUntilChanged;\n            this.latestValue = initialValue;\n            this.canPublishValueOnSubscribe = true;\n            this.sourceConnection = source.Subscribe(this);\n        }\n\n        public IDisposable Subscribe(IObserver<T> observer)\n        {\n            if (lastException != null)\n            {\n                observer.OnError(lastException);\n                return Disposable.Empty;\n            }\n\n            if (isSourceCompleted)\n            {\n                if (canPublishValueOnSubscribe)\n                {\n                    observer.OnNext(latestValue);\n                    observer.OnCompleted();\n                    return Disposable.Empty;\n                }\n                else\n                {\n                    observer.OnCompleted();\n                    return Disposable.Empty;\n                }\n            }\n\n            if (isDisposed)\n            {\n                observer.OnCompleted();\n                return Disposable.Empty;\n            }\n\n            if (canPublishValueOnSubscribe)\n            {\n                observer.OnNext(latestValue);\n            }\n\n            // subscribe node, node as subscription.\n            var next = new ObserverNode<T>(this, observer);\n            if (root == null)\n            {\n                root = last = next;\n            }\n            else\n            {\n                last.Next = next;\n                next.Previous = last;\n                last = next;\n            }\n\n            return next;\n        }\n\n        public void Dispose()\n        {\n            Dispose(true);\n            GC.SuppressFinalize(this);\n        }\n\n        protected virtual void Dispose(bool disposing)\n        {\n            if (isDisposed) return;\n            sourceConnection.Dispose();\n\n            var node = root;\n            root = last = null;\n            isDisposed = true;\n\n            while (node != null)\n            {\n                node.OnCompleted();\n                node = node.Next;\n            }\n        }\n\n        void IObserverLinkedList<T>.UnsubscribeNode(ObserverNode<T> node)\n        {\n            if (node == root)\n            {\n                root = node.Next;\n            }\n            if (node == last)\n            {\n                last = node.Previous;\n            }\n\n            if (node.Previous != null)\n            {\n                node.Previous.Next = node.Next;\n            }\n            if (node.Next != null)\n            {\n                node.Next.Previous = node.Previous;\n            }\n        }\n\n        void IObserver<T>.OnNext(T value)\n        {\n            if (isDisposed) return;\n\n            if (canPublishValueOnSubscribe)\n            {\n                if (distinctUntilChanged && EqualityComparer.Equals(this.latestValue, value))\n                {\n                    return;\n                }\n            }\n\n            canPublishValueOnSubscribe = true;\n\n            // SetValue\n            this.latestValue = value;\n\n            // call source.OnNext\n            var node = root;\n            while (node != null)\n            {\n                node.OnNext(value);\n                node = node.Next;\n            }\n        }\n\n        void IObserver<T>.OnError(Exception error)\n        {\n            lastException = error;\n\n            // call source.OnError\n            var node = root;\n            while (node != null)\n            {\n                node.OnError(error);\n                node = node.Next;\n            }\n\n            root = last = null;\n        }\n\n        void IObserver<T>.OnCompleted()\n        {\n            isSourceCompleted = true;\n            root = last = null;\n        }\n\n        public override string ToString()\n        {\n            return (latestValue == null) ? \"(null)\" : latestValue.ToString();\n        }\n\n        public bool IsRequiredSubscribeOnCurrentThread()\n        {\n            return false;\n        }\n    }\n\n    /// <summary>\n    /// Extension methods of ReactiveProperty&lt;T&gt;\n    /// </summary>\n    public static class ReactivePropertyExtensions\n    {\n        public static IReadOnlyReactiveProperty<T> ToReactiveProperty<T>(this IObservable<T> source)\n        {\n            return new ReadOnlyReactiveProperty<T>(source);\n        }\n\n        public static IReadOnlyReactiveProperty<T> ToReactiveProperty<T>(this IObservable<T> source, T initialValue)\n        {\n            return new ReadOnlyReactiveProperty<T>(source, initialValue);\n        }\n\n        public static ReadOnlyReactiveProperty<T> ToReadOnlyReactiveProperty<T>(this IObservable<T> source)\n        {\n            return new ReadOnlyReactiveProperty<T>(source);\n        }\n\n#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n\n        static readonly Action<object> Callback = CancelCallback;\n\n        static void CancelCallback(object state)\n        {\n            var tuple = (Tuple<ICancellableTaskCompletionSource, IDisposable>)state;\n            tuple.Item2.Dispose();\n            tuple.Item1.TrySetCanceled();\n        }\n\n        public static Task<T> WaitUntilValueChangedAsync<T>(this IReadOnlyReactiveProperty<T> source, CancellationToken cancellationToken = default(CancellationToken))\n        {\n            var tcs = new CancellableTaskCompletionSource<T>();\n\n            var disposable = new SingleAssignmentDisposable();\n            if (source.HasValue)\n            {\n                // Skip first value\n                var isFirstValue = true;\n                disposable.Disposable = source.Subscribe(x =>\n                {\n                    if (isFirstValue)\n                    {\n                        isFirstValue = false;\n                        return;\n                    }\n                    else\n                    {\n                        disposable.Dispose(); // finish subscription.\n                        tcs.TrySetResult(x);\n                    }\n                }, ex => tcs.TrySetException(ex), () => tcs.TrySetCanceled());\n            }\n            else\n            {\n                disposable.Disposable = source.Subscribe(x =>\n                {\n                    disposable.Dispose(); // finish subscription.\n                    tcs.TrySetResult(x);\n                }, ex => tcs.TrySetException(ex), () => tcs.TrySetCanceled());\n            }\n\n            cancellationToken.Register(Callback, Tuple.Create(tcs, disposable.Disposable), false);\n\n            return tcs.Task;\n        }\n\n        public static System.Runtime.CompilerServices.TaskAwaiter<T> GetAwaiter<T>(this IReadOnlyReactiveProperty<T> source)\n        {\n            return source.WaitUntilValueChangedAsync(CancellationToken.None).GetAwaiter();\n        }\n\n#endif\n\n        /// <summary>\n        /// Create ReadOnlyReactiveProperty with distinctUntilChanged: false.\n        /// </summary>\n        public static ReadOnlyReactiveProperty<T> ToSequentialReadOnlyReactiveProperty<T>(this IObservable<T> source)\n        {\n            return new ReadOnlyReactiveProperty<T>(source, distinctUntilChanged: false);\n        }\n\n        public static ReadOnlyReactiveProperty<T> ToReadOnlyReactiveProperty<T>(this IObservable<T> source, T initialValue)\n        {\n            return new ReadOnlyReactiveProperty<T>(source, initialValue);\n        }\n\n        /// <summary>\n        /// Create ReadOnlyReactiveProperty with distinctUntilChanged: false.\n        /// </summary>\n        public static ReadOnlyReactiveProperty<T> ToSequentialReadOnlyReactiveProperty<T>(this IObservable<T> source, T initialValue)\n        {\n            return new ReadOnlyReactiveProperty<T>(source, initialValue, distinctUntilChanged: false);\n        }\n\n        public static IObservable<T> SkipLatestValueOnSubscribe<T>(this IReadOnlyReactiveProperty<T> source)\n        {\n            return source.HasValue ? source.Skip(1) : source;\n        }\n\n        // for multiple toggle or etc..\n\n        /// <summary>\n        /// Lastest values of each sequence are all true.\n        /// </summary>\n        public static IObservable<bool> CombineLatestValuesAreAllTrue(this IEnumerable<IObservable<bool>> sources)\n        {\n            return sources.CombineLatest().Select(xs =>\n            {\n                foreach (var item in xs)\n                {\n                    if (item == false)\n                        return false;\n                }\n                return true;\n            });\n        }\n\n\n        /// <summary>\n        /// Lastest values of each sequence are all false.\n        /// </summary>\n        public static IObservable<bool> CombineLatestValuesAreAllFalse(this IEnumerable<IObservable<bool>> sources)\n        {\n            return sources.CombineLatest().Select(xs =>\n            {\n                foreach (var item in xs)\n                {\n                    if (item == true)\n                        return false;\n                }\n                return true;\n            });\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveProperty.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 88e12aa895fef434fbe3ea0cc8f57301\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ScenePlaybackDetector.cs",
    "content": "#if UNITY_EDITOR\n\nusing UnityEditor;\nusing UnityEditor.Callbacks;\nusing UnityEngine;\n\nnamespace UniRx\n{\n    [InitializeOnLoad]\n    public class ScenePlaybackDetector\n    {\n        private static bool _isPlaying = false;\n\n        private static bool AboutToStartScene\n        {\n            get\n            {\n                return EditorPrefs.GetBool(\"AboutToStartScene\");\n            }\n            set\n            {\n                EditorPrefs.SetBool(\"AboutToStartScene\", value);\n            }\n        }\n\n        public static bool IsPlaying\n        {\n            get\n            {\n                return _isPlaying;\n            }\n            set\n            {\n                if (_isPlaying != value)\n                {\n                    _isPlaying = value;\n                }\n            }\n        }\n\n        // This callback is notified after scripts have been reloaded.\n        [DidReloadScripts]\n        public static void OnDidReloadScripts()\n        {\n            // Filter DidReloadScripts callbacks to the moment where playmodeState transitions into isPlaying.\n            if (AboutToStartScene)\n            {\n                IsPlaying = true;\n            }\n        }\n\n        // InitializeOnLoad ensures that this constructor is called when the Unity Editor is started.\n        static ScenePlaybackDetector()\n        {\n#if UNITY_2017_2_OR_NEWER\n            EditorApplication.playModeStateChanged += e =>\n#else\n            EditorApplication.playmodeStateChanged += () =>\n#endif\n            {\n                // Before scene start:          isPlayingOrWillChangePlaymode = false;  isPlaying = false\n                // Pressed Playback button:     isPlayingOrWillChangePlaymode = true;   isPlaying = false\n                // Playing:                     isPlayingOrWillChangePlaymode = false;  isPlaying = true\n                // Pressed stop button:         isPlayingOrWillChangePlaymode = true;   isPlaying = true\n                if (EditorApplication.isPlayingOrWillChangePlaymode && !EditorApplication.isPlaying)\n                {\n                    AboutToStartScene = true;\n                }\n                else\n                {\n                    AboutToStartScene = false;\n                }\n\n                // Detect when playback is stopped.\n                if (!EditorApplication.isPlaying)\n                {\n                    IsPlaying = false;\n                }\n            };\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/ScenePlaybackDetector.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8d380d86e2ef6674c83ca983a1604273\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Toolkit/ObjectPool.cs",
    "content": "﻿#if UNITY_5_3_OR_NEWER\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx.Toolkit\n{\n    /// <summary>\n    /// Bass class of ObjectPool.\n    /// </summary>\n    public abstract class ObjectPool<T> : IDisposable\n        where T : UnityEngine.Component\n    {\n        bool isDisposed = false;\n        Queue<T> q;\n\n        /// <summary>\n        /// Limit of instace count.\n        /// </summary>\n        protected int MaxPoolCount\n        {\n            get\n            {\n                return int.MaxValue;\n            }\n        }\n\n        /// <summary>\n        /// Create instance when needed.\n        /// </summary>\n        protected abstract T CreateInstance();\n\n        /// <summary>\n        /// Called before return to pool, useful for set active object(it is default behavior).\n        /// </summary>\n        protected virtual void OnBeforeRent(T instance)\n        {\n            instance.gameObject.SetActive(true);\n        }\n\n        /// <summary>\n        /// Called before return to pool, useful for set inactive object(it is default behavior).\n        /// </summary>\n        protected virtual void OnBeforeReturn(T instance)\n        {\n            instance.gameObject.SetActive(false);\n        }\n\n        /// <summary>\n        /// Called when clear or disposed, useful for destroy instance or other finalize method.\n        /// </summary>\n        protected virtual void OnClear(T instance)\n        {\n            if (instance == null) return;\n\n            var go = instance.gameObject;\n            if (go == null) return;\n            UnityEngine.Object.Destroy(go);\n        }\n\n        /// <summary>\n        /// Current pooled object count.\n        /// </summary>\n        public int Count\n        {\n            get\n            {\n                if (q == null) return 0;\n                return q.Count;\n            }\n        }\n\n        /// <summary>\n        /// Get instance from pool.\n        /// </summary>\n        public T Rent()\n        {\n            if (isDisposed) throw new ObjectDisposedException(\"ObjectPool was already disposed.\");\n            if (q == null) q = new Queue<T>();\n\n            var instance = (q.Count > 0)\n                ? q.Dequeue()\n                : CreateInstance();\n\n            OnBeforeRent(instance);\n            return instance;\n        }\n\n        /// <summary>\n        /// Return instance to pool.\n        /// </summary>\n        public void Return(T instance)\n        {\n            if (isDisposed) throw new ObjectDisposedException(\"ObjectPool was already disposed.\");\n            if (instance == null) throw new ArgumentNullException(\"instance\");\n\n            if (q == null) q = new Queue<T>();\n\n            if ((q.Count + 1) == MaxPoolCount)\n            {\n                throw new InvalidOperationException(\"Reached Max PoolSize\");\n            }\n\n            OnBeforeReturn(instance);\n            q.Enqueue(instance);\n        }\n\n        /// <summary>\n        /// Clear pool.\n        /// </summary>\n        public void Clear(bool callOnBeforeRent = false)\n        {\n            if (q == null) return;\n            while (q.Count != 0)\n            {\n                var instance = q.Dequeue();\n                if (callOnBeforeRent)\n                {\n                    OnBeforeRent(instance);\n                }\n                OnClear(instance);\n            }\n        }\n\n        /// <summary>\n        /// Trim pool instances. \n        /// </summary>\n        /// <param name=\"instanceCountRatio\">0.0f = clear all ~ 1.0f = live all.</param>\n        /// <param name=\"minSize\">Min pool count.</param>\n        /// <param name=\"callOnBeforeRent\">If true, call OnBeforeRent before OnClear.</param>\n        public void Shrink(float instanceCountRatio, int minSize, bool callOnBeforeRent = false)\n        {\n            if (q == null) return;\n\n            if (instanceCountRatio <= 0) instanceCountRatio = 0;\n            if (instanceCountRatio >= 1.0f) instanceCountRatio = 1.0f;\n\n            var size = (int)(q.Count * instanceCountRatio);\n            size = Math.Max(minSize, size);\n\n            while (q.Count > size)\n            {\n                var instance = q.Dequeue();\n                if (callOnBeforeRent)\n                {\n                    OnBeforeRent(instance);\n                }\n                OnClear(instance);\n            }\n        }\n\n        /// <summary>\n        /// If needs shrink pool frequently, start check timer.\n        /// </summary>\n        /// <param name=\"checkInterval\">Interval of call Shrink.</param>\n        /// <param name=\"instanceCountRatio\">0.0f = clearAll ~ 1.0f = live all.</param>\n        /// <param name=\"minSize\">Min pool count.</param>\n        /// <param name=\"callOnBeforeRent\">If true, call OnBeforeRent before OnClear.</param>\n        public IDisposable StartShrinkTimer(TimeSpan checkInterval, float instanceCountRatio, int minSize, bool callOnBeforeRent = false)\n        {\n            return Observable.Interval(checkInterval)\n                .TakeWhile(_ => !isDisposed)\n                .Subscribe(_ =>\n                {\n                    Shrink(instanceCountRatio, minSize, callOnBeforeRent);\n                });\n        }\n\n        /// <summary>\n        /// Fill pool before rent operation.\n        /// </summary>\n        /// <param name=\"preloadCount\">Pool instance count.</param>\n        /// <param name=\"threshold\">Create count per frame.</param>\n        public IObservable<Unit> PreloadAsync(int preloadCount, int threshold)\n        {\n            if (q == null) q = new Queue<T>(preloadCount);\n\n            return Observable.FromMicroCoroutine<Unit>((observer, cancel) => PreloadCore(preloadCount, threshold, observer, cancel));\n        }\n\n        IEnumerator PreloadCore(int preloadCount, int threshold, IObserver<Unit> observer, CancellationToken cancellationToken)\n        {\n            while (Count < preloadCount && !cancellationToken.IsCancellationRequested)\n            {\n                var requireCount = preloadCount - Count;\n                if (requireCount <= 0) break;\n\n                var createCount = Math.Min(requireCount, threshold);\n\n                for (int i = 0; i < createCount; i++)\n                {\n                    try\n                    {\n                        var instance = CreateInstance();\n                        Return(instance);\n                    }\n                    catch (Exception ex)\n                    {\n                        observer.OnError(ex);\n                        yield break;\n                    }\n                }\n                yield return null; // next frame.\n            }\n\n            observer.OnNext(Unit.Default);\n            observer.OnCompleted();\n        }\n\n        #region IDisposable Support\n\n        protected virtual void Dispose(bool disposing)\n        {\n            if (!isDisposed)\n            {\n                if (disposing)\n                {\n                    Clear(false);\n                }\n\n                isDisposed = true;\n            }\n        }\n\n        public void Dispose()\n        {\n            Dispose(true);\n        }\n\n        #endregion\n    }\n\n    /// <summary>\n    /// Bass class of ObjectPool. If needs asynchronous initialization, use this instead of standard ObjectPool.\n    /// </summary>\n    public abstract class AsyncObjectPool<T> : IDisposable\n        where T : UnityEngine.Component\n    {\n        bool isDisposed = false;\n        Queue<T> q;\n\n        /// <summary>\n        /// Limit of instace count.\n        /// </summary>\n        protected int MaxPoolCount\n        {\n            get\n            {\n                return int.MaxValue;\n            }\n        }\n\n        /// <summary>\n        /// Create instance when needed.\n        /// </summary>\n        protected abstract IObservable<T> CreateInstanceAsync();\n\n        /// <summary>\n        /// Called before return to pool, useful for set active object(it is default behavior).\n        /// </summary>\n        protected virtual void OnBeforeRent(T instance)\n        {\n            instance.gameObject.SetActive(true);\n        }\n\n        /// <summary>\n        /// Called before return to pool, useful for set inactive object(it is default behavior).\n        /// </summary>\n        protected virtual void OnBeforeReturn(T instance)\n        {\n            instance.gameObject.SetActive(false);\n        }\n\n        /// <summary>\n        /// Called when clear or disposed, useful for destroy instance or other finalize method.\n        /// </summary>\n        protected virtual void OnClear(T instance)\n        {\n            if (instance == null) return;\n\n            var go = instance.gameObject;\n            if (go == null) return;\n            UnityEngine.Object.Destroy(go);\n        }\n\n        /// <summary>\n        /// Current pooled object count.\n        /// </summary>\n        public int Count\n        {\n            get\n            {\n                if (q == null) return 0;\n                return q.Count;\n            }\n        }\n\n        /// <summary>\n        /// Get instance from pool.\n        /// </summary>\n        public IObservable<T> RentAsync()\n        {\n            if (isDisposed) throw new ObjectDisposedException(\"ObjectPool was already disposed.\");\n            if (q == null) q = new Queue<T>();\n\n            if (q.Count > 0)\n            {\n                var instance = q.Dequeue();\n                OnBeforeRent(instance);\n                return Observable.Return(instance);\n            }\n            else\n            {\n                var instance = CreateInstanceAsync();\n                return instance.Do(x => OnBeforeRent(x));\n            }\n        }\n\n        /// <summary>\n        /// Return instance to pool.\n        /// </summary>\n        public void Return(T instance)\n        {\n            if (isDisposed) throw new ObjectDisposedException(\"ObjectPool was already disposed.\");\n            if (instance == null) throw new ArgumentNullException(\"instance\");\n\n            if (q == null) q = new Queue<T>();\n\n            if ((q.Count + 1) == MaxPoolCount)\n            {\n                throw new InvalidOperationException(\"Reached Max PoolSize\");\n            }\n\n            OnBeforeReturn(instance);\n            q.Enqueue(instance);\n        }\n\n        /// <summary>\n        /// Trim pool instances. \n        /// </summary>\n        /// <param name=\"instanceCountRatio\">0.0f = clear all ~ 1.0f = live all.</param>\n        /// <param name=\"minSize\">Min pool count.</param>\n        /// <param name=\"callOnBeforeRent\">If true, call OnBeforeRent before OnClear.</param>\n        public void Shrink(float instanceCountRatio, int minSize, bool callOnBeforeRent = false)\n        {\n            if (q == null) return;\n\n            if (instanceCountRatio <= 0) instanceCountRatio = 0;\n            if (instanceCountRatio >= 1.0f) instanceCountRatio = 1.0f;\n\n            var size = (int)(q.Count * instanceCountRatio);\n            size = Math.Max(minSize, size);\n\n            while (q.Count > size)\n            {\n                var instance = q.Dequeue();\n                if (callOnBeforeRent)\n                {\n                    OnBeforeRent(instance);\n                }\n                OnClear(instance);\n            }\n        }\n\n        /// <summary>\n        /// If needs shrink pool frequently, start check timer.\n        /// </summary>\n        /// <param name=\"checkInterval\">Interval of call Shrink.</param>\n        /// <param name=\"instanceCountRatio\">0.0f = clearAll ~ 1.0f = live all.</param>\n        /// <param name=\"minSize\">Min pool count.</param>\n        /// <param name=\"callOnBeforeRent\">If true, call OnBeforeRent before OnClear.</param>\n        public IDisposable StartShrinkTimer(TimeSpan checkInterval, float instanceCountRatio, int minSize, bool callOnBeforeRent = false)\n        {\n            return Observable.Interval(checkInterval)\n                .TakeWhile(_ => !isDisposed)\n                .Subscribe(_ =>\n                {\n                    Shrink(instanceCountRatio, minSize, callOnBeforeRent);\n                });\n        }\n\n        /// <summary>\n        /// Clear pool.\n        /// </summary>\n        public void Clear(bool callOnBeforeRent = false)\n        {\n            if (q == null) return;\n            while (q.Count != 0)\n            {\n                var instance = q.Dequeue();\n                if (callOnBeforeRent)\n                {\n                    OnBeforeRent(instance);\n                }\n                OnClear(instance);\n            }\n        }\n\n        /// <summary>\n        /// Fill pool before rent operation.\n        /// </summary>\n        /// <param name=\"preloadCount\">Pool instance count.</param>\n        /// <param name=\"threshold\">Create count per frame.</param>\n        public IObservable<Unit> PreloadAsync(int preloadCount, int threshold)\n        {\n            if (q == null) q = new Queue<T>(preloadCount);\n\n            return Observable.FromMicroCoroutine<Unit>((observer, cancel) => PreloadCore(preloadCount, threshold, observer, cancel));\n        }\n\n        IEnumerator PreloadCore(int preloadCount, int threshold, IObserver<Unit> observer, CancellationToken cancellationToken)\n        {\n            while (Count < preloadCount && !cancellationToken.IsCancellationRequested)\n            {\n                var requireCount = preloadCount - Count;\n                if (requireCount <= 0) break;\n\n                var createCount = Math.Min(requireCount, threshold);\n\n                var loaders = new IObservable<Unit>[createCount];\n                for (int i = 0; i < createCount; i++)\n                {\n                    var instanceFuture = CreateInstanceAsync();\n                    loaders[i] = instanceFuture.ForEachAsync(x => Return(x));\n                }\n\n                var awaiter = Observable.WhenAll(loaders).ToYieldInstruction(false, cancellationToken);\n                while (!(awaiter.HasResult || awaiter.IsCanceled || awaiter.HasError))\n                {\n                    yield return null;\n                }\n\n                if (awaiter.HasError)\n                {\n                    observer.OnError(awaiter.Error);\n                    yield break;\n                }\n                else if (awaiter.IsCanceled)\n                {\n                    yield break; // end.\n                }\n            }\n\n            observer.OnNext(Unit.Default);\n            observer.OnCompleted();\n        }\n\n        #region IDisposable Support\n\n        protected virtual void Dispose(bool disposing)\n        {\n            if (!isDisposed)\n            {\n                if (disposing)\n                {\n                    Clear(false);\n                }\n\n                isDisposed = true;\n            }\n        }\n\n        public void Dispose()\n        {\n            Dispose(true);\n        }\n\n        #endregion\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Toolkit/ObjectPool.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f4980e1e001c7e94fab3250ba284dc91\ntimeCreated: 1468655394\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Toolkit.meta",
    "content": "fileFormatVersion: 2\nguid: 726595c7d6d85824887a77691e3ca50a\nfolderAsset: yes\ntimeCreated: 1468655394\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableAnimatorTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableAnimatorTrigger : ObservableTriggerBase\n    {\n        Subject<int> onAnimatorIK;\n\n        /// <summary>Callback for setting up animation IK (inverse kinematics).</summary>\n        void OnAnimatorIK(int layerIndex)\n        {\n            if (onAnimatorIK != null) onAnimatorIK.OnNext(layerIndex);\n        }\n\n        /// <summary>Callback for setting up animation IK (inverse kinematics).</summary>\n        public IObservable<int> OnAnimatorIKAsObservable()\n        {\n            return onAnimatorIK ?? (onAnimatorIK = new Subject<int>());\n        }\n\n        Subject<Unit> onAnimatorMove;\n\n        /// <summary>Callback for processing animation movements for modifying root motion.</summary>\n        void OnAnimatorMove()\n        {\n            if (onAnimatorMove != null) onAnimatorMove.OnNext(Unit.Default);\n        }\n\n        /// <summary>Callback for processing animation movements for modifying root motion.</summary>\n        public IObservable<Unit> OnAnimatorMoveAsObservable()\n        {\n            return onAnimatorMove ?? (onAnimatorMove = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onAnimatorIK != null)\n            {\n                onAnimatorIK.OnCompleted();\n            }\n            if (onAnimatorMove != null)\n            {\n                onAnimatorMove.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableAnimatorTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e03f9257cc6667f4082439aa77d6f01e\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableBeginDragTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableBeginDragTrigger : ObservableTriggerBase, IEventSystemHandler, IBeginDragHandler\n    {\n        Subject<PointerEventData> onBeginDrag;\n\n        void IBeginDragHandler.OnBeginDrag(PointerEventData eventData)\n        {\n            if (onBeginDrag != null) onBeginDrag.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnBeginDragAsObservable()\n        {\n            return onBeginDrag ?? (onBeginDrag = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onBeginDrag != null)\n            {\n                onBeginDrag.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableBeginDragTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 3a81a9b6bec6b4f4fba7e0047cd989f6\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCancelTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableCancelTrigger : ObservableTriggerBase, IEventSystemHandler, ICancelHandler\n    {\n        Subject<BaseEventData> onCancel;\n\n        void ICancelHandler.OnCancel(BaseEventData eventData)\n        {\n            if (onCancel != null) onCancel.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnCancelAsObservable()\n        {\n            return onCancel ?? (onCancel = new Subject<BaseEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onCancel != null)\n            {\n                onCancel.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCancelTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4c0a9070b7cc23746b2c0e2db3ec16cd\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCanvasGroupChangedTrigger.cs",
    "content": "﻿// after uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System;\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableCanvasGroupChangedTrigger : ObservableTriggerBase\n    {\n        Subject<Unit> onCanvasGroupChanged;\n\n        // Callback that is sent if the canvas group is changed\n        void OnCanvasGroupChanged()\n        {\n            if (onCanvasGroupChanged != null) onCanvasGroupChanged.OnNext(Unit.Default);\n        }\n\n        /// <summary>Callback that is sent if the canvas group is changed.</summary>\n        public IObservable<Unit> OnCanvasGroupChangedAsObservable()\n        {\n            return onCanvasGroupChanged ?? (onCanvasGroupChanged = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onCanvasGroupChanged != null)\n            {\n                onCanvasGroupChanged.OnCompleted();\n            }\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCanvasGroupChangedTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 54095d3e740f7714085d0568207cbfe0\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCollision2DTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableCollision2DTrigger : ObservableTriggerBase\n    {\n        Subject<Collision2D> onCollisionEnter2D;\n\n        /// <summary>Sent when an incoming collider makes contact with this object's collider (2D physics only).</summary>\n         void OnCollisionEnter2D(Collision2D coll)\n        {\n            if (onCollisionEnter2D != null) onCollisionEnter2D.OnNext(coll);\n        }\n\n        /// <summary>Sent when an incoming collider makes contact with this object's collider (2D physics only).</summary>\n        public IObservable<Collision2D> OnCollisionEnter2DAsObservable()\n        {\n            return onCollisionEnter2D ?? (onCollisionEnter2D = new Subject<Collision2D>());\n        }\n\n        Subject<Collision2D> onCollisionExit2D;\n\n        /// <summary>Sent when a collider on another object stops touching this object's collider (2D physics only).</summary>\n         void OnCollisionExit2D(Collision2D coll)\n        {\n            if (onCollisionExit2D != null) onCollisionExit2D.OnNext(coll);\n        }\n\n        /// <summary>Sent when a collider on another object stops touching this object's collider (2D physics only).</summary>\n        public IObservable<Collision2D> OnCollisionExit2DAsObservable()\n        {\n            return onCollisionExit2D ?? (onCollisionExit2D = new Subject<Collision2D>());\n        }\n\n        Subject<Collision2D> onCollisionStay2D;\n\n        /// <summary>Sent each frame where a collider on another object is touching this object's collider (2D physics only).</summary>\n         void OnCollisionStay2D(Collision2D coll)\n        {\n            if (onCollisionStay2D != null) onCollisionStay2D.OnNext(coll);\n        }\n\n        /// <summary>Sent each frame where a collider on another object is touching this object's collider (2D physics only).</summary>\n        public IObservable<Collision2D> OnCollisionStay2DAsObservable()\n        {\n            return onCollisionStay2D ?? (onCollisionStay2D = new Subject<Collision2D>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onCollisionEnter2D != null)\n            {\n                onCollisionEnter2D.OnCompleted();\n            }\n            if (onCollisionExit2D != null)\n            {\n                onCollisionExit2D.OnCompleted();\n            }\n            if (onCollisionStay2D != null)\n            {\n                onCollisionStay2D.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCollision2DTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1be7847b61f30f24daa5762db87a5b19\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCollisionTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableCollisionTrigger : ObservableTriggerBase\n    {\n        Subject<Collision> onCollisionEnter;\n\n        /// <summary>OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.</summary>\n         void OnCollisionEnter(Collision collision)\n        {\n            if (onCollisionEnter != null) onCollisionEnter.OnNext(collision);\n        }\n\n        /// <summary>OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.</summary>\n        public IObservable<Collision> OnCollisionEnterAsObservable()\n        {\n            return onCollisionEnter ?? (onCollisionEnter = new Subject<Collision>());\n        }\n\n        Subject<Collision> onCollisionExit;\n\n        /// <summary>OnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.</summary>\n         void OnCollisionExit(Collision collisionInfo)\n        {\n            if (onCollisionExit != null) onCollisionExit.OnNext(collisionInfo);\n        }\n\n        /// <summary>OnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.</summary>\n        public IObservable<Collision> OnCollisionExitAsObservable()\n        {\n            return onCollisionExit ?? (onCollisionExit = new Subject<Collision>());\n        }\n\n        Subject<Collision> onCollisionStay;\n\n        /// <summary>OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.</summary>\n         void OnCollisionStay(Collision collisionInfo)\n        {\n            if (onCollisionStay != null) onCollisionStay.OnNext(collisionInfo);\n        }\n\n        /// <summary>OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.</summary>\n        public IObservable<Collision> OnCollisionStayAsObservable()\n        {\n            return onCollisionStay ?? (onCollisionStay = new Subject<Collision>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onCollisionEnter != null)\n            {\n                onCollisionEnter.OnCompleted();\n            }\n            if (onCollisionExit != null)\n            {\n                onCollisionExit.OnCompleted();\n            }\n            if (onCollisionStay != null)\n            {\n                onCollisionStay.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCollisionTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 10b917196cbfcf74898ce1686e205d04\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDeselectTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableDeselectTrigger : ObservableTriggerBase, IEventSystemHandler, IDeselectHandler\n    {\n        Subject<BaseEventData> onDeselect;\n\n        void IDeselectHandler.OnDeselect(BaseEventData eventData)\n        {\n            if (onDeselect != null) onDeselect.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnDeselectAsObservable()\n        {\n            return onDeselect ?? (onDeselect = new Subject<BaseEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onDeselect != null)\n            {\n                onDeselect.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDeselectTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9fe6f69c4d869c04e8a1924aab1d3694\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDestroyTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableDestroyTrigger : MonoBehaviour\n    {\n        bool calledDestroy = false;\n        Subject<Unit> onDestroy;\n        CompositeDisposable disposablesOnDestroy;\n\n        [Obsolete(\"Internal Use.\")]\n        internal bool IsMonitoredActivate { get; set; }\n\n        public bool IsActivated { get; private set; }\n\n        /// <summary>\n        /// Check called OnDestroy.\n        /// This property does not guarantees GameObject was destroyed,\n        /// when gameObject is deactive, does not raise OnDestroy.\n        /// </summary>\n        public bool IsCalledOnDestroy { get { return calledDestroy; } }\n\n        void Awake()\n        {\n            IsActivated = true;\n        }\n\n        /// <summary>This function is called when the MonoBehaviour will be destroyed.</summary>\n        void OnDestroy()\n        {\n            if (!calledDestroy)\n            {\n                calledDestroy = true;\n                if (disposablesOnDestroy != null) disposablesOnDestroy.Dispose();\n                if (onDestroy != null) { onDestroy.OnNext(Unit.Default); onDestroy.OnCompleted(); }\n            }\n        }\n\n        /// <summary>This function is called when the MonoBehaviour will be destroyed.</summary>\n        public IObservable<Unit> OnDestroyAsObservable()\n        {\n            if (this == null) return Observable.Return(Unit.Default);\n            if (calledDestroy) return Observable.Return(Unit.Default);\n            return onDestroy ?? (onDestroy = new Subject<Unit>());\n        }\n\n        /// <summary>Invoke OnDestroy, this method is used on internal.</summary>\n        public void ForceRaiseOnDestroy()\n        {\n            OnDestroy();\n        }\n\n        public void AddDisposableOnDestroy(IDisposable disposable)\n        {\n            if (calledDestroy)\n            {\n                disposable.Dispose();\n                return;\n            }\n\n            if (disposablesOnDestroy == null) disposablesOnDestroy = new CompositeDisposable();\n            disposablesOnDestroy.Add(disposable);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDestroyTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: cb219b23cdf4b314f94a27bca3cc8012\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDragTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableDragTrigger : ObservableTriggerBase, IEventSystemHandler, IDragHandler\n    {\n        Subject<PointerEventData> onDrag;\n\n        void IDragHandler.OnDrag(PointerEventData eventData)\n        {\n            if (onDrag != null) onDrag.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnDragAsObservable()\n        {\n            return onDrag ?? (onDrag = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onDrag != null)\n            {\n                onDrag.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDragTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 79db090dc9e4db245821e8b89b0e208e\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDropTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableDropTrigger : ObservableTriggerBase, IEventSystemHandler, IDropHandler\n    {\n        Subject<PointerEventData> onDrop;\n\n        void IDropHandler.OnDrop(PointerEventData eventData)\n        {\n            if (onDrop != null) onDrop.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnDropAsObservable()\n        {\n            return onDrop ?? (onDrop = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onDrop != null)\n            {\n                onDrop.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDropTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f2ffa8b5af3474446a310bb6aa0b180a\ntimeCreated: 1455373902\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEnableTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableEnableTrigger : ObservableTriggerBase\n    {\n        Subject<Unit> onEnable;\n\n        /// <summary>This function is called when the object becomes enabled and active.</summary>\n        void OnEnable()\n        {\n            if (onEnable != null) onEnable.OnNext(Unit.Default);\n        }\n\n        /// <summary>This function is called when the object becomes enabled and active.</summary>\n        public IObservable<Unit> OnEnableAsObservable()\n        {\n            return onEnable ?? (onEnable = new Subject<Unit>());\n        }\n\n        Subject<Unit> onDisable;\n\n        /// <summary>This function is called when the behaviour becomes disabled () or inactive.</summary>\n        void OnDisable()\n        {\n            if (onDisable != null) onDisable.OnNext(Unit.Default);\n        }\n\n        /// <summary>This function is called when the behaviour becomes disabled () or inactive.</summary>\n        public IObservable<Unit> OnDisableAsObservable()\n        {\n            return onDisable ?? (onDisable = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onEnable != null)\n            {\n                onEnable.OnCompleted();\n            }\n            if (onDisable != null)\n            {\n                onDisable.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEnableTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 0d9c7eb607af1fd4aa0e15f52cc0543b\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEndDragTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableEndDragTrigger : ObservableTriggerBase, IEventSystemHandler, IEndDragHandler\n    {\n        Subject<PointerEventData> onEndDrag;\n\n        void IEndDragHandler.OnEndDrag(PointerEventData eventData)\n        {\n            if (onEndDrag != null) onEndDrag.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnEndDragAsObservable()\n        {\n            return onEndDrag ?? (onEndDrag = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onEndDrag != null)\n            {\n                onEndDrag.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEndDragTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: b8ce8424f238d6842bd8b09c0cca1ac4\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEventTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableEventTrigger : ObservableTriggerBase, IEventSystemHandler, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IBeginDragHandler, IInitializePotentialDragHandler, IDragHandler, IEndDragHandler, IDropHandler, IScrollHandler, IUpdateSelectedHandler, ISelectHandler, IDeselectHandler, IMoveHandler, ISubmitHandler, ICancelHandler\n    {\n        #region IDeselectHandler\n\n        Subject<BaseEventData> onDeselect;\n\n        void IDeselectHandler.OnDeselect(BaseEventData eventData)\n        {\n            if (onDeselect != null) onDeselect.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnDeselectAsObservable()\n        {\n            return onDeselect ?? (onDeselect = new Subject<BaseEventData>());\n        }\n\n        #endregion\n\n        #region IMoveHandler\n\n        Subject<AxisEventData> onMove;\n\n        void IMoveHandler.OnMove(AxisEventData eventData)\n        {\n            if (onMove != null) onMove.OnNext(eventData);\n        }\n\n        public IObservable<AxisEventData> OnMoveAsObservable()\n        {\n            return onMove ?? (onMove = new Subject<AxisEventData>());\n        }\n\n        #endregion\n\n        #region IPointerDownHandler\n\n        Subject<PointerEventData> onPointerDown;\n\n        void IPointerDownHandler.OnPointerDown(PointerEventData eventData)\n        {\n            if (onPointerDown != null) onPointerDown.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerDownAsObservable()\n        {\n            return onPointerDown ?? (onPointerDown = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region IPointerEnterHandler\n\n        Subject<PointerEventData> onPointerEnter;\n\n        void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData)\n        {\n            if (onPointerEnter != null) onPointerEnter.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerEnterAsObservable()\n        {\n            return onPointerEnter ?? (onPointerEnter = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region IPointerExitHandler\n\n        Subject<PointerEventData> onPointerExit;\n\n        void IPointerExitHandler.OnPointerExit(PointerEventData eventData)\n        {\n            if (onPointerExit != null) onPointerExit.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerExitAsObservable()\n        {\n            return onPointerExit ?? (onPointerExit = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region IPointerUpHandler\n\n        Subject<PointerEventData> onPointerUp;\n\n        void IPointerUpHandler.OnPointerUp(PointerEventData eventData)\n        {\n            if (onPointerUp != null) onPointerUp.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerUpAsObservable()\n        {\n            return onPointerUp ?? (onPointerUp = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region ISelectHandler\n\n        Subject<BaseEventData> onSelect;\n\n        void ISelectHandler.OnSelect(BaseEventData eventData)\n        {\n            if (onSelect != null) onSelect.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnSelectAsObservable()\n        {\n            return onSelect ?? (onSelect = new Subject<BaseEventData>());\n        }\n\n        #endregion\n\n        #region IPointerClickHandler\n\n        Subject<PointerEventData> onPointerClick;\n\n        void IPointerClickHandler.OnPointerClick(PointerEventData eventData)\n        {\n            if (onPointerClick != null) onPointerClick.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerClickAsObservable()\n        {\n            return onPointerClick ?? (onPointerClick = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region ISubmitHandler\n\n        Subject<BaseEventData> onSubmit;\n\n        void ISubmitHandler.OnSubmit(BaseEventData eventData)\n        {\n            if (onSubmit != null) onSubmit.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnSubmitAsObservable()\n        {\n            return onSubmit ?? (onSubmit = new Subject<BaseEventData>());\n        }\n\n        #endregion\n\n        #region IDragHandler\n\n        Subject<PointerEventData> onDrag;\n\n        void IDragHandler.OnDrag(PointerEventData eventData)\n        {\n            if (onDrag != null) onDrag.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnDragAsObservable()\n        {\n            return onDrag ?? (onDrag = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region IBeginDragHandler\n\n        Subject<PointerEventData> onBeginDrag;\n\n        void IBeginDragHandler.OnBeginDrag(PointerEventData eventData)\n        {\n            if (onBeginDrag != null) onBeginDrag.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnBeginDragAsObservable()\n        {\n            return onBeginDrag ?? (onBeginDrag = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region IEndDragHandler\n\n        Subject<PointerEventData> onEndDrag;\n\n        void IEndDragHandler.OnEndDrag(PointerEventData eventData)\n        {\n            if (onEndDrag != null) onEndDrag.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnEndDragAsObservable()\n        {\n            return onEndDrag ?? (onEndDrag = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region IDropHandler\n\n        Subject<PointerEventData> onDrop;\n\n        void IDropHandler.OnDrop(PointerEventData eventData)\n        {\n            if (onDrop != null) onDrop.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnDropAsObservable()\n        {\n            return onDrop ?? (onDrop = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region IUpdateSelectedHandler\n\n        Subject<BaseEventData> onUpdateSelected;\n\n        void IUpdateSelectedHandler.OnUpdateSelected(BaseEventData eventData)\n        {\n            if (onUpdateSelected != null) onUpdateSelected.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnUpdateSelectedAsObservable()\n        {\n            return onUpdateSelected ?? (onUpdateSelected = new Subject<BaseEventData>());\n        }\n\n        #endregion\n\n        #region IInitializePotentialDragHandler\n\n        Subject<PointerEventData> onInitializePotentialDrag;\n\n        void IInitializePotentialDragHandler.OnInitializePotentialDrag(PointerEventData eventData)\n        {\n            if (onInitializePotentialDrag != null) onInitializePotentialDrag.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnInitializePotentialDragAsObservable()\n        {\n            return onInitializePotentialDrag ?? (onInitializePotentialDrag = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        #region ICancelHandler\n\n        Subject<BaseEventData> onCancel;\n\n        void ICancelHandler.OnCancel(BaseEventData eventData)\n        {\n            if (onCancel != null) onCancel.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnCancelAsObservable()\n        {\n            return onCancel ?? (onCancel = new Subject<BaseEventData>());\n        }\n\n        #endregion\n\n        #region IScrollHandler\n\n        Subject<PointerEventData> onScroll;\n\n        void IScrollHandler.OnScroll(PointerEventData eventData)\n        {\n            if (onScroll != null) onScroll.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnScrollAsObservable()\n        {\n            return onScroll ?? (onScroll = new Subject<PointerEventData>());\n        }\n\n        #endregion\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onDeselect != null)\n            {\n                onDeselect.OnCompleted();\n            }\n            if (onMove != null)\n            {\n                onMove.OnCompleted();\n            }\n            if (onPointerDown != null)\n            {\n                onPointerDown.OnCompleted();\n            }\n            if (onPointerEnter != null)\n            {\n                onPointerEnter.OnCompleted();\n            }\n            if (onPointerExit != null)\n            {\n                onPointerExit.OnCompleted();\n            }\n            if (onPointerUp != null)\n            {\n                onPointerUp.OnCompleted();\n            }\n            if (onSelect != null)\n            {\n                onSelect.OnCompleted();\n            }\n            if (onPointerClick != null)\n            {\n                onPointerClick.OnCompleted();\n            }\n            if (onSubmit != null)\n            {\n                onSubmit.OnCompleted();\n            }\n            if (onDrag != null)\n            {\n                onDrag.OnCompleted();\n            }\n            if (onBeginDrag != null)\n            {\n                onBeginDrag.OnCompleted();\n            }\n            if (onEndDrag != null)\n            {\n                onEndDrag.OnCompleted();\n            }\n            if (onDrop != null)\n            {\n                onDrop.OnCompleted();\n            }\n            if (onUpdateSelected != null)\n            {\n                onUpdateSelected.OnCompleted();\n            }\n            if (onInitializePotentialDrag != null)\n            {\n                onInitializePotentialDrag.OnCompleted();\n            }\n            if (onCancel != null)\n            {\n                onCancel.OnCompleted();\n            }\n            if (onScroll != null)\n            {\n                onScroll.OnCompleted();\n            }\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEventTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 48e93426b16d5454c89e8d47ccded1c5\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableFixedUpdateTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableFixedUpdateTrigger : ObservableTriggerBase\n    {\n        Subject<Unit> fixedUpdate;\n\n        /// <summary>This function is called every fixed framerate frame, if the MonoBehaviour is enabled.</summary>\n        void FixedUpdate()\n        {\n            if (fixedUpdate != null) fixedUpdate.OnNext(Unit.Default);\n        }\n\n        /// <summary>This function is called every fixed framerate frame, if the MonoBehaviour is enabled.</summary>\n        public IObservable<Unit> FixedUpdateAsObservable()\n        {\n            return fixedUpdate ?? (fixedUpdate = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (fixedUpdate != null)\n            {\n                fixedUpdate.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableFixedUpdateTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d525c42c11d945f4398061ed8f84e5f4\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableInitializePotentialDragTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableInitializePotentialDragTrigger : ObservableTriggerBase, IEventSystemHandler, IInitializePotentialDragHandler\n    {\n        Subject<PointerEventData> onInitializePotentialDrag;\n\n        void IInitializePotentialDragHandler.OnInitializePotentialDrag(PointerEventData eventData)\n        {\n            if (onInitializePotentialDrag != null) onInitializePotentialDrag.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnInitializePotentialDragAsObservable()\n        {\n            return onInitializePotentialDrag ?? (onInitializePotentialDrag = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onInitializePotentialDrag != null)\n            {\n                onInitializePotentialDrag.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableInitializePotentialDragTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 3f3148a9e1b8b21409f54d2b0c2c81de\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableJointTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableJointTrigger : ObservableTriggerBase\n    {\n        Subject<float> onJointBreak;\n\n        void OnJointBreak(float breakForce)\n        {\n            if (onJointBreak != null) onJointBreak.OnNext(breakForce);\n        }\n\n        public IObservable<float> OnJointBreakAsObservable()\n        {\n            return onJointBreak ?? (onJointBreak = new Subject<float>());\n        }\n        \n        \n        Subject<Joint2D> onJointBreak2D;\n\n        void OnJointBreak2D(Joint2D brokenJoint)\n        {\n            if (onJointBreak2D != null) onJointBreak2D.OnNext(brokenJoint);\n        }\n\n        public IObservable<Joint2D> OnJointBreak2DAsObservable()\n        {\n            return onJointBreak2D ?? (onJointBreak2D = new Subject<Joint2D>());\n        }\n        \n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onJointBreak != null)\n            {\n                onJointBreak.OnCompleted();\n            }\n            if (onJointBreak2D != null)\n            {\n                onJointBreak2D.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableJointTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 79b758631951cbc42b40ea87072e1ab3\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableLateUpdateTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableLateUpdateTrigger : ObservableTriggerBase\n    {\n        Subject<Unit> lateUpdate;\n\n        /// <summary>LateUpdate is called every frame, if the Behaviour is enabled.</summary>\n        void LateUpdate()\n        {\n            if (lateUpdate != null) lateUpdate.OnNext(Unit.Default);\n        }\n\n        /// <summary>LateUpdate is called every frame, if the Behaviour is enabled.</summary>\n        public IObservable<Unit> LateUpdateAsObservable()\n        {\n            return lateUpdate ?? (lateUpdate = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (lateUpdate != null)\n            {\n                lateUpdate.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableLateUpdateTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 176ace24965d0c744bc61c8aad8b3fc7\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableMouseTrigger.cs",
    "content": "﻿#if !(UNITY_IPHONE || UNITY_ANDROID || UNITY_METRO)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableMouseTrigger : ObservableTriggerBase\n    {\n        Subject<Unit> onMouseDown;\n\n        /// <summary>OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider.</summary>\n         void OnMouseDown()\n        {\n            if (onMouseDown != null) onMouseDown.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider.</summary>\n        public IObservable<Unit> OnMouseDownAsObservable()\n        {\n            return onMouseDown ?? (onMouseDown = new Subject<Unit>());\n        }\n\n        Subject<Unit> onMouseDrag;\n\n        /// <summary>OnMouseDrag is called when the user has clicked on a GUIElement or Collider and is still holding down the mouse.</summary>\n         void OnMouseDrag()\n        {\n            if (onMouseDrag != null) onMouseDrag.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnMouseDrag is called when the user has clicked on a GUIElement or Collider and is still holding down the mouse.</summary>\n        public IObservable<Unit> OnMouseDragAsObservable()\n        {\n            return onMouseDrag ?? (onMouseDrag = new Subject<Unit>());\n        }\n\n        Subject<Unit> onMouseEnter;\n\n        /// <summary>OnMouseEnter is called when the mouse entered the GUIElement or Collider.</summary>\n         void OnMouseEnter()\n        {\n            if (onMouseEnter != null) onMouseEnter.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnMouseEnter is called when the mouse entered the GUIElement or Collider.</summary>\n        public IObservable<Unit> OnMouseEnterAsObservable()\n        {\n            return onMouseEnter ?? (onMouseEnter = new Subject<Unit>());\n        }\n\n        Subject<Unit> onMouseExit;\n\n        /// <summary>OnMouseExit is called when the mouse is not any longer over the GUIElement or Collider.</summary>\n         void OnMouseExit()\n        {\n            if (onMouseExit != null) onMouseExit.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnMouseExit is called when the mouse is not any longer over the GUIElement or Collider.</summary>\n        public IObservable<Unit> OnMouseExitAsObservable()\n        {\n            return onMouseExit ?? (onMouseExit = new Subject<Unit>());\n        }\n\n        Subject<Unit> onMouseOver;\n\n        /// <summary>OnMouseOver is called every frame while the mouse is over the GUIElement or Collider.</summary>\n         void OnMouseOver()\n        {\n            if (onMouseOver != null) onMouseOver.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnMouseOver is called every frame while the mouse is over the GUIElement or Collider.</summary>\n        public IObservable<Unit> OnMouseOverAsObservable()\n        {\n            return onMouseOver ?? (onMouseOver = new Subject<Unit>());\n        }\n\n        Subject<Unit> onMouseUp;\n\n        /// <summary>OnMouseUp is called when the user has released the mouse button.</summary>\n         void OnMouseUp()\n        {\n            if (onMouseUp != null) onMouseUp.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnMouseUp is called when the user has released the mouse button.</summary>\n        public IObservable<Unit> OnMouseUpAsObservable()\n        {\n            return onMouseUp ?? (onMouseUp = new Subject<Unit>());\n        }\n\n        Subject<Unit> onMouseUpAsButton;\n\n        /// <summary>OnMouseUpAsButton is only called when the mouse is released over the same GUIElement or Collider as it was pressed.</summary>\n         void OnMouseUpAsButton()\n        {\n            if (onMouseUpAsButton != null) onMouseUpAsButton.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnMouseUpAsButton is only called when the mouse is released over the same GUIElement or Collider as it was pressed.</summary>\n        public IObservable<Unit> OnMouseUpAsButtonAsObservable()\n        {\n            return onMouseUpAsButton ?? (onMouseUpAsButton = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onMouseDown != null)\n            {\n                onMouseDown.OnCompleted();\n            }\n            if (onMouseDrag != null)\n            {\n                onMouseDrag.OnCompleted();\n            }\n            if (onMouseEnter != null)\n            {\n                onMouseEnter.OnCompleted();\n            }\n            if (onMouseExit != null)\n            {\n                onMouseExit.OnCompleted();\n            }\n            if (onMouseOver != null)\n            {\n                onMouseOver.OnCompleted();\n            }\n            if (onMouseUp != null)\n            {\n                onMouseUp.OnCompleted();\n            }\n            if (onMouseUpAsButton != null)\n            {\n                onMouseUpAsButton.OnCompleted();\n            }\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableMouseTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: c5f30958c5509bc4f9c14ea261a1567c\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableMoveTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableMoveTrigger : ObservableTriggerBase, IEventSystemHandler, IMoveHandler\n    {\n        Subject<AxisEventData> onMove;\n\n        void IMoveHandler.OnMove(AxisEventData eventData)\n        {\n            if (onMove != null) onMove.OnNext(eventData);\n        }\n\n        public IObservable<AxisEventData> OnMoveAsObservable()\n        {\n            return onMove ?? (onMove = new Subject<AxisEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onMove != null)\n            {\n                onMove.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableMoveTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 3e1feec0f10dcea4d9c779a81a0ee3dc\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableParticleTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableParticleTrigger : ObservableTriggerBase\n    {\n        Subject<GameObject> onParticleCollision;\n#if UNITY_5_4_OR_NEWER\n        Subject<Unit> onParticleTrigger;\n#endif\n\n        /// <summary>OnParticleCollision is called when a particle hits a collider.</summary>\n        void OnParticleCollision(GameObject other)\n        {\n            if (onParticleCollision != null) onParticleCollision.OnNext(other);\n        }\n\n        /// <summary>OnParticleCollision is called when a particle hits a collider.</summary>\n        public IObservable<GameObject> OnParticleCollisionAsObservable()\n        {\n            return onParticleCollision ?? (onParticleCollision = new Subject<GameObject>());\n        }\n\n#if UNITY_5_4_OR_NEWER\n\n        /// <summary>OnParticleTrigger is called when any particles in a particle system meet the conditions in the trigger module.</summary>\n        void OnParticleTrigger()\n        {\n            if (onParticleTrigger != null) onParticleTrigger.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnParticleTrigger is called when any particles in a particle system meet the conditions in the trigger module.</summary>\n        public IObservable<Unit> OnParticleTriggerAsObservable()\n        {\n            return onParticleTrigger ?? (onParticleTrigger = new Subject<Unit>());\n        }\n\n#endif\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onParticleCollision != null)\n            {\n                onParticleCollision.OnCompleted();\n            }\n#if UNITY_5_4_OR_NEWER\n            if (onParticleTrigger != null)\n            {\n                onParticleTrigger.OnCompleted();\n            }\n#endif\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableParticleTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9e6a20494274d5045a1b36a770ea76b4\ntimeCreated: 1468669952\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerClickTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservablePointerClickTrigger : ObservableTriggerBase, IEventSystemHandler, IPointerClickHandler\n    {\n        Subject<PointerEventData> onPointerClick;\n\n        void IPointerClickHandler.OnPointerClick(PointerEventData eventData)\n        {\n            if (onPointerClick != null) onPointerClick.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerClickAsObservable()\n        {\n            return onPointerClick ?? (onPointerClick = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onPointerClick != null)\n            {\n                onPointerClick.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerClickTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: aa69c313aba23f945b760e79c45083ad\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerDownTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservablePointerDownTrigger : ObservableTriggerBase, IEventSystemHandler, IPointerDownHandler\n    {\n        Subject<PointerEventData> onPointerDown;\n\n        void IPointerDownHandler.OnPointerDown(PointerEventData eventData)\n        {\n            if (onPointerDown != null) onPointerDown.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerDownAsObservable()\n        {\n            return onPointerDown ?? (onPointerDown = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onPointerDown != null)\n            {\n                onPointerDown.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerDownTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: c7ae5b5965df2344d99ef7792521b937\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerEnterTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservablePointerEnterTrigger : ObservableTriggerBase, IEventSystemHandler, IPointerEnterHandler\n    {\n        Subject<PointerEventData> onPointerEnter;\n\n        void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData)\n        {\n            if (onPointerEnter != null) onPointerEnter.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerEnterAsObservable()\n        {\n            return onPointerEnter ?? (onPointerEnter = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onPointerEnter != null)\n            {\n                onPointerEnter.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerEnterTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 3468b3db8d419c745b12124f6432696b\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerExitTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservablePointerExitTrigger : ObservableTriggerBase, IEventSystemHandler, IPointerExitHandler\n    {\n        Subject<PointerEventData> onPointerExit;\n\n        void IPointerExitHandler.OnPointerExit(PointerEventData eventData)\n        {\n            if (onPointerExit != null) onPointerExit.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerExitAsObservable()\n        {\n            return onPointerExit ?? (onPointerExit = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onPointerExit != null)\n            {\n                onPointerExit.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerExitTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9643e74593988274bbed9adf40384e48\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerUpTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservablePointerUpTrigger : ObservableTriggerBase, IEventSystemHandler, IPointerUpHandler\n    {\n        Subject<PointerEventData> onPointerUp;\n\n        void IPointerUpHandler.OnPointerUp(PointerEventData eventData)\n        {\n            if (onPointerUp != null) onPointerUp.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnPointerUpAsObservable()\n        {\n            return onPointerUp ?? (onPointerUp = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onPointerUp != null)\n            {\n                onPointerUp.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerUpTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 41b0031b2e409894aacafa49d8583617\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableRectTransformTrigger.cs",
    "content": "﻿// after uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System;\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableRectTransformTrigger : ObservableTriggerBase\n    {\n        Subject<Unit> onRectTransformDimensionsChange;\n\n        // Callback that is sent if an associated RectTransform has it's dimensions changed\n        void OnRectTransformDimensionsChange()\n        {\n            if (onRectTransformDimensionsChange != null) onRectTransformDimensionsChange.OnNext(Unit.Default);\n        }\n\n        /// <summary>Callback that is sent if an associated RectTransform has it's dimensions changed.</summary>\n        public IObservable<Unit> OnRectTransformDimensionsChangeAsObservable()\n        {\n            return onRectTransformDimensionsChange ?? (onRectTransformDimensionsChange = new Subject<Unit>());\n        }\n\n        Subject<Unit> onRectTransformRemoved;\n\n        // Callback that is sent if an associated RectTransform is removed\n        void OnRectTransformRemoved()\n        {\n            if (onRectTransformRemoved != null) onRectTransformRemoved.OnNext(Unit.Default);\n        }\n\n        /// <summary>Callback that is sent if an associated RectTransform is removed.</summary>\n        public IObservable<Unit> OnRectTransformRemovedAsObservable()\n        {\n            return onRectTransformRemoved ?? (onRectTransformRemoved = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onRectTransformDimensionsChange != null)\n            {\n                onRectTransformDimensionsChange.OnCompleted();\n            }\n            if (onRectTransformRemoved != null)\n            {\n                onRectTransformRemoved.OnCompleted();\n            }\n        }\n\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableRectTransformTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 20b97bcdd98f27346851c3a690ec7faf\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableScrollTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableScrollTrigger : ObservableTriggerBase, IEventSystemHandler, IScrollHandler\n    {\n        Subject<PointerEventData> onScroll;\n\n        void IScrollHandler.OnScroll(PointerEventData eventData)\n        {\n            if (onScroll != null) onScroll.OnNext(eventData);\n        }\n\n        public IObservable<PointerEventData> OnScrollAsObservable()\n        {\n            return onScroll ?? (onScroll = new Subject<PointerEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onScroll != null)\n            {\n                onScroll.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableScrollTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2231ec04e488f7443ae7acf609ac5f00\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableSelectTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableSelectTrigger : ObservableTriggerBase, IEventSystemHandler, ISelectHandler\n    {\n        Subject<BaseEventData> onSelect;\n\n        void ISelectHandler.OnSelect(BaseEventData eventData)\n        {\n            if (onSelect != null) onSelect.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnSelectAsObservable()\n        {\n            return onSelect ?? (onSelect = new Subject<BaseEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onSelect != null)\n            {\n                onSelect.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableSelectTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1e4cb287d3ab8274885ed05748f26329\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableStateMachineTrigger.cs",
    "content": "﻿// over Unity5 added StateMachineBehaviour\n#if !(UNITY_4_7 || UNITY_4_6 || UNITY_4_5 || UNITY_4_4 || UNITY_4_3 || UNITY_4_2 || UNITY_4_1 || UNITY_4_0_1 || UNITY_4_0 || UNITY_3_5 || UNITY_3_4 || UNITY_3_3 || UNITY_3_2 || UNITY_3_1 || UNITY_3_0_0 || UNITY_3_0 || UNITY_2_6_1 || UNITY_2_6)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableStateMachineTrigger : StateMachineBehaviour\n    {\n        public class OnStateInfo\n        {\n            public Animator Animator { get; private set; }\n            public AnimatorStateInfo StateInfo { get; private set; }\n            public int LayerIndex { get; private set; }\n\n            public OnStateInfo(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)\n            {\n                Animator = animator;\n                StateInfo = stateInfo;\n                LayerIndex = layerIndex;\n            }\n        }\n\n        public class OnStateMachineInfo\n        {\n            public Animator Animator { get; private set; }\n            public int StateMachinePathHash { get; private set; }\n\n            public OnStateMachineInfo(Animator animator, int stateMachinePathHash)\n            {\n                Animator = animator;\n                StateMachinePathHash = stateMachinePathHash;\n            }\n        }\n\n        // OnStateExit\n\n        Subject<OnStateInfo> onStateExit;\n\n        public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)\n        {\n            if (onStateExit != null) onStateExit.OnNext(new OnStateInfo(animator, stateInfo, layerIndex));\n        }\n\n        public IObservable<OnStateInfo> OnStateExitAsObservable()\n        {\n            return onStateExit ?? (onStateExit = new Subject<OnStateInfo>());\n        }\n\n        // OnStateEnter\n\n        Subject<OnStateInfo> onStateEnter;\n\n        public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)\n        {\n            if (onStateEnter != null) onStateEnter.OnNext(new OnStateInfo(animator, stateInfo, layerIndex));\n        }\n\n        public IObservable<OnStateInfo> OnStateEnterAsObservable()\n        {\n            return onStateEnter ?? (onStateEnter = new Subject<OnStateInfo>());\n        }\n\n        // OnStateIK\n\n        Subject<OnStateInfo> onStateIK;\n\n        public override void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)\n        {\n            if(onStateIK !=null) onStateIK.OnNext(new OnStateInfo(animator, stateInfo, layerIndex));\n        }\n\n        public IObservable<OnStateInfo> OnStateIKAsObservable()\n        {\n            return onStateIK ?? (onStateIK = new Subject<OnStateInfo>());\n        }\n\n        // Does not implments OnStateMove.\n        // ObservableStateMachine Trigger makes stop animating.\n        // By defining OnAnimatorMove, you are signifying that you want to intercept the movement of the root object and apply it yourself.\n        // http://fogbugz.unity3d.com/default.asp?700990_9jqaim4ev33i8e9h\n\n        //// OnStateMove\n\n        //Subject<OnStateInfo> onStateMove;\n\n        //public override void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)\n        //{\n        //    if (onStateMove != null) onStateMove.OnNext(new OnStateInfo(animator, stateInfo, layerIndex));\n        //}\n\n        //public IObservable<OnStateInfo> OnStateMoveAsObservable()\n        //{\n        //    return onStateMove ?? (onStateMove = new Subject<OnStateInfo>());\n        //}\n\n        // OnStateUpdate\n\n        Subject<OnStateInfo> onStateUpdate;\n\n        public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)\n        {\n            if (onStateUpdate != null) onStateUpdate.OnNext(new OnStateInfo(animator, stateInfo, layerIndex));\n        }\n\n        public IObservable<OnStateInfo> OnStateUpdateAsObservable()\n        {\n            return onStateUpdate ?? (onStateUpdate = new Subject<OnStateInfo>());\n        }\n\n        // OnStateMachineEnter\n\n        Subject<OnStateMachineInfo> onStateMachineEnter;\n\n        public override void OnStateMachineEnter(Animator animator, int stateMachinePathHash)\n        {\n            if (onStateMachineEnter != null) onStateMachineEnter.OnNext(new OnStateMachineInfo(animator, stateMachinePathHash));\n        }\n\n        public IObservable<OnStateMachineInfo> OnStateMachineEnterAsObservable()\n        {\n            return onStateMachineEnter ?? (onStateMachineEnter = new Subject<OnStateMachineInfo>());\n        }\n\n        // OnStateMachineExit\n\n        Subject<OnStateMachineInfo> onStateMachineExit;\n\n        public override void OnStateMachineExit(Animator animator, int stateMachinePathHash)\n        {\n            if (onStateMachineExit != null) onStateMachineExit.OnNext(new OnStateMachineInfo(animator, stateMachinePathHash));\n        }\n\n        public IObservable<OnStateMachineInfo> OnStateMachineExitAsObservable()\n        {\n            return onStateMachineExit ?? (onStateMachineExit = new Subject<OnStateMachineInfo>());\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableStateMachineTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1e29959e46c7ea7409560769cde085ae\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableSubmitTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableSubmitTrigger : ObservableTriggerBase, IEventSystemHandler, ISubmitHandler\n    {\n        Subject<BaseEventData> onSubmit;\n\n        void ISubmitHandler.OnSubmit(BaseEventData eventData)\n        {\n            if (onSubmit != null) onSubmit.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnSubmitAsObservable()\n        {\n            return onSubmit ?? (onSubmit = new Subject<BaseEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onSubmit != null)\n            {\n                onSubmit.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableSubmitTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 655296fedabd6004ab699ab9749e369c\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTransformChangedTrigger.cs",
    "content": "﻿// after uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System;\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableTransformChangedTrigger : ObservableTriggerBase\n    {\n        Subject<Unit> onBeforeTransformParentChanged;\n\n        // Callback sent to the graphic before a Transform parent change occurs\n        void OnBeforeTransformParentChanged()\n        {\n            if (onBeforeTransformParentChanged != null) onBeforeTransformParentChanged.OnNext(Unit.Default);\n        }\n\n        /// <summary>Callback sent to the graphic before a Transform parent change occurs.</summary>\n        public IObservable<Unit> OnBeforeTransformParentChangedAsObservable()\n        {\n            return onBeforeTransformParentChanged ?? (onBeforeTransformParentChanged = new Subject<Unit>());\n        }\n\n        Subject<Unit> onTransformParentChanged;\n\n        // This function is called when the parent property of the transform of the GameObject has changed\n        void OnTransformParentChanged()\n        {\n            if (onTransformParentChanged != null) onTransformParentChanged.OnNext(Unit.Default);\n        }\n\n        /// <summary>This function is called when the parent property of the transform of the GameObject has changed.</summary>\n        public IObservable<Unit> OnTransformParentChangedAsObservable()\n        {\n            return onTransformParentChanged ?? (onTransformParentChanged = new Subject<Unit>());\n        }\n\n        Subject<Unit> onTransformChildrenChanged;\n\n        // This function is called when the list of children of the transform of the GameObject has changed\n        void OnTransformChildrenChanged()\n        {\n            if (onTransformChildrenChanged != null) onTransformChildrenChanged.OnNext(Unit.Default);\n        }\n\n        /// <summary>This function is called when the list of children of the transform of the GameObject has changed.</summary>\n        public IObservable<Unit> OnTransformChildrenChangedAsObservable()\n        {\n            return onTransformChildrenChanged ?? (onTransformChildrenChanged = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onBeforeTransformParentChanged != null)\n            {\n                onBeforeTransformParentChanged.OnCompleted();\n            }\n            if (onTransformParentChanged != null)\n            {\n                onTransformParentChanged.OnCompleted();\n            }\n            if (onTransformChildrenChanged != null)\n            {\n                onTransformChildrenChanged.OnCompleted();\n            }\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTransformChangedTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 835e244a602942c4c84a09c9bdedf229\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTrigger2DTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableTrigger2DTrigger : ObservableTriggerBase\n    {\n        Subject<Collider2D> onTriggerEnter2D;\n\n        /// <summary>Sent when another object enters a trigger collider attached to this object (2D physics only).</summary>\n        void OnTriggerEnter2D(Collider2D other)\n        {\n            if (onTriggerEnter2D != null) onTriggerEnter2D.OnNext(other);\n        }\n\n        /// <summary>Sent when another object enters a trigger collider attached to this object (2D physics only).</summary>\n        public IObservable<Collider2D> OnTriggerEnter2DAsObservable()\n        {\n            return onTriggerEnter2D ?? (onTriggerEnter2D = new Subject<Collider2D>());\n        }\n\n        Subject<Collider2D> onTriggerExit2D;\n\n        /// <summary>Sent when another object leaves a trigger collider attached to this object (2D physics only).</summary>\n        void OnTriggerExit2D(Collider2D other)\n        {\n            if (onTriggerExit2D != null) onTriggerExit2D.OnNext(other);\n        }\n\n        /// <summary>Sent when another object leaves a trigger collider attached to this object (2D physics only).</summary>\n        public IObservable<Collider2D> OnTriggerExit2DAsObservable()\n        {\n            return onTriggerExit2D ?? (onTriggerExit2D = new Subject<Collider2D>());\n        }\n\n        Subject<Collider2D> onTriggerStay2D;\n\n        /// <summary>Sent each frame where another object is within a trigger collider attached to this object (2D physics only).</summary>\n        void OnTriggerStay2D(Collider2D other)\n        {\n            if (onTriggerStay2D != null) onTriggerStay2D.OnNext(other);\n        }\n\n        /// <summary>Sent each frame where another object is within a trigger collider attached to this object (2D physics only).</summary>\n        public IObservable<Collider2D> OnTriggerStay2DAsObservable()\n        {\n            return onTriggerStay2D ?? (onTriggerStay2D = new Subject<Collider2D>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onTriggerEnter2D != null)\n            {\n                onTriggerEnter2D.OnCompleted();\n            }\n            if (onTriggerExit2D != null)\n            {\n                onTriggerExit2D.OnCompleted();\n            }\n            if (onTriggerStay2D != null)\n            {\n                onTriggerStay2D.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTrigger2DTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 1aad3129752ef804999a880a7b2d72ef\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerBase.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    public abstract class ObservableTriggerBase : MonoBehaviour\n    {\n        bool calledAwake = false;\n        Subject<Unit> awake;\n\n        /// <summary>Awake is called when the script instance is being loaded.</summary>\n        void Awake()\n        {\n            calledAwake = true;\n            if (awake != null) { awake.OnNext(Unit.Default); awake.OnCompleted(); }\n        }\n\n        /// <summary>Awake is called when the script instance is being loaded.</summary>\n        public IObservable<Unit> AwakeAsObservable()\n        {\n            if (calledAwake) return Observable.Return(Unit.Default);\n            return awake ?? (awake = new Subject<Unit>());\n        }\n\n        bool calledStart = false;\n        Subject<Unit> start;\n\n        /// <summary>Start is called on the frame when a script is enabled just before any of the Update methods is called the first time.</summary>\n        void Start()\n        {\n            calledStart = true;\n            if (start != null) { start.OnNext(Unit.Default); start.OnCompleted(); }\n        }\n\n        /// <summary>Start is called on the frame when a script is enabled just before any of the Update methods is called the first time.</summary>\n        public IObservable<Unit> StartAsObservable()\n        {\n            if (calledStart) return Observable.Return(Unit.Default);\n            return start ?? (start = new Subject<Unit>());\n        }\n\n\n        bool calledDestroy = false;\n        Subject<Unit> onDestroy;\n\n        /// <summary>This function is called when the MonoBehaviour will be destroyed.</summary>\n        void OnDestroy()\n        {\n            calledDestroy = true;\n            if (onDestroy != null) { onDestroy.OnNext(Unit.Default); onDestroy.OnCompleted(); }\n\n            RaiseOnCompletedOnDestroy();\n        }\n\n        /// <summary>This function is called when the MonoBehaviour will be destroyed.</summary>\n        public IObservable<Unit> OnDestroyAsObservable()\n        {\n            if (this == null) return Observable.Return(Unit.Default);\n            if (calledDestroy) return Observable.Return(Unit.Default);\n            return onDestroy ?? (onDestroy = new Subject<Unit>());\n        }\n\n        protected abstract void RaiseOnCompletedOnDestroy();\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerBase.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 850bc951297608e4fb0722795c21ed16\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerExtensions.Component.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\nusing UnityEngine.EventSystems;\n#endif\n\nnamespace UniRx.Triggers\n{\n    // for Component\n    public static partial class ObservableTriggerExtensions\n    {\n        #region ObservableAnimatorTrigger\n\n        /// <summary>Callback for setting up animation IK (inverse kinematics).</summary>\n        public static IObservable<int> OnAnimatorIKAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<int>();\n            return GetOrAddComponent<ObservableAnimatorTrigger>(component.gameObject).OnAnimatorIKAsObservable();\n        }\n\n        /// <summary>Callback for processing animation movements for modifying root motion.</summary>\n        public static IObservable<Unit> OnAnimatorMoveAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableAnimatorTrigger>(component.gameObject).OnAnimatorMoveAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableCollision2DTrigger\n\n        /// <summary>Sent when an incoming collider makes contact with this object's collider (2D physics only).</summary>\n        public static IObservable<Collision2D> OnCollisionEnter2DAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collision2D>();\n            return GetOrAddComponent<ObservableCollision2DTrigger>(component.gameObject).OnCollisionEnter2DAsObservable();\n        }\n\n\n        /// <summary>Sent when a collider on another object stops touching this object's collider (2D physics only).</summary>\n        public static IObservable<Collision2D> OnCollisionExit2DAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collision2D>();\n            return GetOrAddComponent<ObservableCollision2DTrigger>(component.gameObject).OnCollisionExit2DAsObservable();\n        }\n\n        /// <summary>Sent each frame where a collider on another object is touching this object's collider (2D physics only).</summary>\n        public static IObservable<Collision2D> OnCollisionStay2DAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collision2D>();\n            return GetOrAddComponent<ObservableCollision2DTrigger>(component.gameObject).OnCollisionStay2DAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableCollisionTrigger\n\n        /// <summary>OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.</summary>\n        public static IObservable<Collision> OnCollisionEnterAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collision>();\n            return GetOrAddComponent<ObservableCollisionTrigger>(component.gameObject).OnCollisionEnterAsObservable();\n        }\n\n\n        /// <summary>OnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.</summary>\n        public static IObservable<Collision> OnCollisionExitAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collision>();\n            return GetOrAddComponent<ObservableCollisionTrigger>(component.gameObject).OnCollisionExitAsObservable();\n        }\n\n        /// <summary>OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.</summary>\n        public static IObservable<Collision> OnCollisionStayAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collision>();\n            return GetOrAddComponent<ObservableCollisionTrigger>(component.gameObject).OnCollisionStayAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableDestroyTrigger\n\n        /// <summary>This function is called when the MonoBehaviour will be destroyed.</summary>\n        public static IObservable<Unit> OnDestroyAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Return(Unit.Default); // send destroy message\n            return GetOrAddComponent<ObservableDestroyTrigger>(component.gameObject).OnDestroyAsObservable();\n        }\n\n        #endregion\n\n\n        #region ObservableEnableTrigger\n\n        /// <summary>This function is called when the object becomes enabled and active.</summary>\n        public static IObservable<Unit> OnEnableAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableEnableTrigger>(component.gameObject).OnEnableAsObservable();\n        }\n\n        /// <summary>This function is called when the behaviour becomes disabled () or inactive.</summary>\n        public static IObservable<Unit> OnDisableAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableEnableTrigger>(component.gameObject).OnDisableAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableFixedUpdateTrigger\n\n        /// <summary>This function is called every fixed framerate frame, if the MonoBehaviour is enabled.</summary>\n        public static IObservable<Unit> FixedUpdateAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableFixedUpdateTrigger>(component.gameObject).FixedUpdateAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableLateUpdateTrigger\n\n        /// <summary>LateUpdate is called every frame, if the Behaviour is enabled.</summary>\n        public static IObservable<Unit> LateUpdateAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableLateUpdateTrigger>(component.gameObject).LateUpdateAsObservable();\n        }\n\n        #endregion\n\n#if !(UNITY_IPHONE || UNITY_ANDROID || UNITY_METRO)\n\n        #region ObservableMouseTrigger\n\n        /// <summary>OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider.</summary>\n        public static IObservable<Unit> OnMouseDownAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseDownAsObservable();\n        }\n\n        /// <summary>OnMouseDrag is called when the user has clicked on a GUIElement or Collider and is still holding down the mouse.</summary>\n        public static IObservable<Unit> OnMouseDragAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseDragAsObservable();\n        }\n\n        /// <summary>OnMouseEnter is called when the mouse entered the GUIElement or Collider.</summary>\n        public static IObservable<Unit> OnMouseEnterAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseEnterAsObservable();\n        }\n\n        /// <summary>OnMouseExit is called when the mouse is not any longer over the GUIElement or Collider.</summary>\n        public static IObservable<Unit> OnMouseExitAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseExitAsObservable();\n        }\n\n        /// <summary>OnMouseOver is called every frame while the mouse is over the GUIElement or Collider.</summary>\n        public static IObservable<Unit> OnMouseOverAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseOverAsObservable();\n        }\n\n        /// <summary>OnMouseUp is called when the user has released the mouse button.</summary>\n        public static IObservable<Unit> OnMouseUpAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseUpAsObservable();\n        }\n\n        /// <summary>OnMouseUpAsButton is only called when the mouse is released over the same GUIElement or Collider as it was pressed.</summary>\n        public static IObservable<Unit> OnMouseUpAsButtonAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseUpAsButtonAsObservable();\n        }\n\n        #endregion\n\n#endif\n\n        #region ObservableTrigger2DTrigger\n\n        /// <summary>Sent when another object enters a trigger collider attached to this object (2D physics only).</summary>\n        public static IObservable<Collider2D> OnTriggerEnter2DAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collider2D>();\n            return GetOrAddComponent<ObservableTrigger2DTrigger>(component.gameObject).OnTriggerEnter2DAsObservable();\n        }\n\n\n        /// <summary>Sent when another object leaves a trigger collider attached to this object (2D physics only).</summary>\n        public static IObservable<Collider2D> OnTriggerExit2DAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collider2D>();\n            return GetOrAddComponent<ObservableTrigger2DTrigger>(component.gameObject).OnTriggerExit2DAsObservable();\n        }\n\n        /// <summary>Sent each frame where another object is within a trigger collider attached to this object (2D physics only).</summary>\n        public static IObservable<Collider2D> OnTriggerStay2DAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collider2D>();\n            return GetOrAddComponent<ObservableTrigger2DTrigger>(component.gameObject).OnTriggerStay2DAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableTriggerTrigger\n\n        /// <summary>OnTriggerEnter is called when the Collider other enters the trigger.</summary>\n        public static IObservable<Collider> OnTriggerEnterAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collider>();\n            return GetOrAddComponent<ObservableTriggerTrigger>(component.gameObject).OnTriggerEnterAsObservable();\n        }\n\n\n        /// <summary>OnTriggerExit is called when the Collider other has stopped touching the trigger.</summary>\n        public static IObservable<Collider> OnTriggerExitAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collider>();\n            return GetOrAddComponent<ObservableTriggerTrigger>(component.gameObject).OnTriggerExitAsObservable();\n        }\n\n        /// <summary>OnTriggerStay is called once per frame for every Collider other that is touching the trigger.</summary>\n        public static IObservable<Collider> OnTriggerStayAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Collider>();\n            return GetOrAddComponent<ObservableTriggerTrigger>(component.gameObject).OnTriggerStayAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableUpdateTrigger\n\n        /// <summary>Update is called every frame, if the MonoBehaviour is enabled.</summary>\n        public static IObservable<Unit> UpdateAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableUpdateTrigger>(component.gameObject).UpdateAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableVisibleTrigger\n\n        /// <summary>OnBecameInvisible is called when the renderer is no longer visible by any camera.</summary>\n        public static IObservable<Unit> OnBecameInvisibleAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableVisibleTrigger>(component.gameObject).OnBecameInvisibleAsObservable();\n        }\n\n        /// <summary>OnBecameVisible is called when the renderer became visible by any camera.</summary>\n        public static IObservable<Unit> OnBecameVisibleAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableVisibleTrigger>(component.gameObject).OnBecameVisibleAsObservable();\n        }\n\n        #endregion\n\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\n        #region ObservableTransformChangedTrigger\n\n        /// <summary>Callback sent to the graphic before a Transform parent change occurs.</summary>\n        public static IObservable<Unit> OnBeforeTransformParentChangedAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableTransformChangedTrigger>(component.gameObject).OnBeforeTransformParentChangedAsObservable();\n        }\n\n        /// <summary>This function is called when the parent property of the transform of the GameObject has changed.</summary>\n        public static IObservable<Unit> OnTransformParentChangedAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableTransformChangedTrigger>(component.gameObject).OnTransformParentChangedAsObservable();\n        }\n\n        /// <summary>This function is called when the list of children of the transform of the GameObject has changed.</summary>\n        public static IObservable<Unit> OnTransformChildrenChangedAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableTransformChangedTrigger>(component.gameObject).OnTransformChildrenChangedAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableCanvasGroupChangedTrigger\n\n        /// <summary>Callback that is sent if the canvas group is changed.</summary>\n        public static IObservable<Unit> OnCanvasGroupChangedAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableCanvasGroupChangedTrigger>(component.gameObject).OnCanvasGroupChangedAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableRectTransformTrigger\n\n        /// <summary>Callback that is sent if an associated RectTransform has it's dimensions changed.</summary>\n        public static IObservable<Unit> OnRectTransformDimensionsChangeAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableRectTransformTrigger>(component.gameObject).OnRectTransformDimensionsChangeAsObservable();\n        }\n\n        /// <summary>Callback that is sent if an associated RectTransform is removed.</summary>\n        public static IObservable<Unit> OnRectTransformRemovedAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableRectTransformTrigger>(component.gameObject).OnRectTransformRemovedAsObservable();\n        }\n\n        #endregion\n\n        // uGUI\n\n        #region ObservableEventTrigger classes\n\n        public static IObservable<BaseEventData> OnDeselectAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();\n            return GetOrAddComponent<ObservableDeselectTrigger>(component.gameObject).OnDeselectAsObservable();\n        }\n\n        public static IObservable<AxisEventData> OnMoveAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<AxisEventData>();\n            return GetOrAddComponent<ObservableMoveTrigger>(component.gameObject).OnMoveAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnPointerDownAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservablePointerDownTrigger>(component.gameObject).OnPointerDownAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnPointerEnterAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservablePointerEnterTrigger>(component.gameObject).OnPointerEnterAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnPointerExitAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservablePointerExitTrigger>(component.gameObject).OnPointerExitAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnPointerUpAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservablePointerUpTrigger>(component.gameObject).OnPointerUpAsObservable();\n        }\n\n        public static IObservable<BaseEventData> OnSelectAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();\n            return GetOrAddComponent<ObservableSelectTrigger>(component.gameObject).OnSelectAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnPointerClickAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservablePointerClickTrigger>(component.gameObject).OnPointerClickAsObservable();\n        }\n\n        public static IObservable<BaseEventData> OnSubmitAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();\n            return GetOrAddComponent<ObservableSubmitTrigger>(component.gameObject).OnSubmitAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnDragAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservableDragTrigger>(component.gameObject).OnDragAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnBeginDragAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservableBeginDragTrigger>(component.gameObject).OnBeginDragAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnEndDragAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservableEndDragTrigger>(component.gameObject).OnEndDragAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnDropAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservableDropTrigger>(component.gameObject).OnDropAsObservable();\n        }\n\n        public static IObservable<BaseEventData> OnUpdateSelectedAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();\n            return GetOrAddComponent<ObservableUpdateSelectedTrigger>(component.gameObject).OnUpdateSelectedAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnInitializePotentialDragAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservableInitializePotentialDragTrigger>(component.gameObject).OnInitializePotentialDragAsObservable();\n        }\n\n        public static IObservable<BaseEventData> OnCancelAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();\n            return GetOrAddComponent<ObservableCancelTrigger>(component.gameObject).OnCancelAsObservable();\n        }\n\n        public static IObservable<PointerEventData> OnScrollAsObservable(this UIBehaviour component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();\n            return GetOrAddComponent<ObservableScrollTrigger>(component.gameObject).OnScrollAsObservable();\n        }\n\n        #endregion\n\n#endif\n\n        #region ObservableParticleTrigger\n\n        /// <summary>OnParticleCollision is called when a particle hits a collider.</summary>\n        public static IObservable<GameObject> OnParticleCollisionAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<GameObject>();\n            return GetOrAddComponent<ObservableParticleTrigger>(component.gameObject).OnParticleCollisionAsObservable();\n        }\n\n#if UNITY_5_4_OR_NEWER\n\n        /// <summary>OnParticleTrigger is called when any particles in a particle system meet the conditions in the trigger module.</summary>\n        public static IObservable<Unit> OnParticleTriggerAsObservable(this Component component)\n        {\n            if (component == null || component.gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableParticleTrigger>(component.gameObject).OnParticleTriggerAsObservable();\n        }\n\n#endif\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerExtensions.Component.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d10150b3ca6f3924baae5bce4343f6c4\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerExtensions.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    // for GameObject\n    public static partial class ObservableTriggerExtensions\n    {\n        #region ObservableAnimatorTrigger\n\n        /// <summary>Callback for setting up animation IK (inverse kinematics).</summary>\n        public static IObservable<int> OnAnimatorIKAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<int>();\n            return GetOrAddComponent<ObservableAnimatorTrigger>(gameObject).OnAnimatorIKAsObservable();\n        }\n\n        /// <summary>Callback for processing animation movements for modifying root motion.</summary>\n        public static IObservable<Unit> OnAnimatorMoveAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableAnimatorTrigger>(gameObject).OnAnimatorMoveAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableCollision2DTrigger\n\n        /// <summary>Sent when an incoming collider makes contact with this object's collider (2D physics only).</summary>\n        public static IObservable<Collision2D> OnCollisionEnter2DAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collision2D>();\n            return GetOrAddComponent<ObservableCollision2DTrigger>(gameObject).OnCollisionEnter2DAsObservable();\n        }\n\n\n        /// <summary>Sent when a collider on another object stops touching this object's collider (2D physics only).</summary>\n        public static IObservable<Collision2D> OnCollisionExit2DAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collision2D>();\n            return GetOrAddComponent<ObservableCollision2DTrigger>(gameObject).OnCollisionExit2DAsObservable();\n        }\n\n        /// <summary>Sent each frame where a collider on another object is touching this object's collider (2D physics only).</summary>\n        public static IObservable<Collision2D> OnCollisionStay2DAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collision2D>();\n            return GetOrAddComponent<ObservableCollision2DTrigger>(gameObject).OnCollisionStay2DAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableCollisionTrigger\n\n        /// <summary>OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.</summary>\n        public static IObservable<Collision> OnCollisionEnterAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collision>();\n            return GetOrAddComponent<ObservableCollisionTrigger>(gameObject).OnCollisionEnterAsObservable();\n        }\n\n\n        /// <summary>OnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.</summary>\n        public static IObservable<Collision> OnCollisionExitAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collision>();\n            return GetOrAddComponent<ObservableCollisionTrigger>(gameObject).OnCollisionExitAsObservable();\n        }\n\n        /// <summary>OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.</summary>\n        public static IObservable<Collision> OnCollisionStayAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collision>();\n            return GetOrAddComponent<ObservableCollisionTrigger>(gameObject).OnCollisionStayAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableDestroyTrigger\n\n        /// <summary>This function is called when the MonoBehaviour will be destroyed.</summary>\n        public static IObservable<Unit> OnDestroyAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Return(Unit.Default); // send destroy message\n            return GetOrAddComponent<ObservableDestroyTrigger>(gameObject).OnDestroyAsObservable();\n        }\n\n        #endregion\n\n\n        #region ObservableEnableTrigger\n\n        /// <summary>This function is called when the object becomes enabled and active.</summary>\n        public static IObservable<Unit> OnEnableAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableEnableTrigger>(gameObject).OnEnableAsObservable();\n        }\n\n        /// <summary>This function is called when the behaviour becomes disabled () or inactive.</summary>\n        public static IObservable<Unit> OnDisableAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableEnableTrigger>(gameObject).OnDisableAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableFixedUpdateTrigger\n\n        /// <summary>This function is called every fixed framerate frame, if the MonoBehaviour is enabled.</summary>\n        public static IObservable<Unit> FixedUpdateAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableFixedUpdateTrigger>(gameObject).FixedUpdateAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableLateUpdateTrigger\n\n        /// <summary>LateUpdate is called every frame, if the Behaviour is enabled.</summary>\n        public static IObservable<Unit> LateUpdateAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableLateUpdateTrigger>(gameObject).LateUpdateAsObservable();\n        }\n\n        #endregion\n\n#if !(UNITY_IPHONE || UNITY_ANDROID || UNITY_METRO)\n\n        #region ObservableMouseTrigger\n\n        /// <summary>OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider.</summary>\n        public static IObservable<Unit> OnMouseDownAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(gameObject).OnMouseDownAsObservable();\n        }\n\n        /// <summary>OnMouseDrag is called when the user has clicked on a GUIElement or Collider and is still holding down the mouse.</summary>\n        public static IObservable<Unit> OnMouseDragAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(gameObject).OnMouseDragAsObservable();\n        }\n\n        /// <summary>OnMouseEnter is called when the mouse entered the GUIElement or Collider.</summary>\n        public static IObservable<Unit> OnMouseEnterAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(gameObject).OnMouseEnterAsObservable();\n        }\n\n        /// <summary>OnMouseExit is called when the mouse is not any longer over the GUIElement or Collider.</summary>\n        public static IObservable<Unit> OnMouseExitAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(gameObject).OnMouseExitAsObservable();\n        }\n\n        /// <summary>OnMouseOver is called every frame while the mouse is over the GUIElement or Collider.</summary>\n        public static IObservable<Unit> OnMouseOverAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(gameObject).OnMouseOverAsObservable();\n        }\n\n        /// <summary>OnMouseUp is called when the user has released the mouse button.</summary>\n        public static IObservable<Unit> OnMouseUpAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(gameObject).OnMouseUpAsObservable();\n        }\n\n        /// <summary>OnMouseUpAsButton is only called when the mouse is released over the same GUIElement or Collider as it was pressed.</summary>\n        public static IObservable<Unit> OnMouseUpAsButtonAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableMouseTrigger>(gameObject).OnMouseUpAsButtonAsObservable();\n        }\n\n        #endregion\n\n#endif\n\n        #region ObservableTrigger2DTrigger\n\n        /// <summary>Sent when another object enters a trigger collider attached to this object (2D physics only).</summary>\n        public static IObservable<Collider2D> OnTriggerEnter2DAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collider2D>();\n            return GetOrAddComponent<ObservableTrigger2DTrigger>(gameObject).OnTriggerEnter2DAsObservable();\n        }\n\n\n        /// <summary>Sent when another object leaves a trigger collider attached to this object (2D physics only).</summary>\n        public static IObservable<Collider2D> OnTriggerExit2DAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collider2D>();\n            return GetOrAddComponent<ObservableTrigger2DTrigger>(gameObject).OnTriggerExit2DAsObservable();\n        }\n\n        /// <summary>Sent each frame where another object is within a trigger collider attached to this object (2D physics only).</summary>\n        public static IObservable<Collider2D> OnTriggerStay2DAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collider2D>();\n            return GetOrAddComponent<ObservableTrigger2DTrigger>(gameObject).OnTriggerStay2DAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableTriggerTrigger\n\n        /// <summary>OnTriggerEnter is called when the Collider other enters the trigger.</summary>\n        public static IObservable<Collider> OnTriggerEnterAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collider>();\n            return GetOrAddComponent<ObservableTriggerTrigger>(gameObject).OnTriggerEnterAsObservable();\n        }\n\n\n        /// <summary>OnTriggerExit is called when the Collider other has stopped touching the trigger.</summary>\n        public static IObservable<Collider> OnTriggerExitAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collider>();\n            return GetOrAddComponent<ObservableTriggerTrigger>(gameObject).OnTriggerExitAsObservable();\n        }\n\n        /// <summary>OnTriggerStay is called once per frame for every Collider other that is touching the trigger.</summary>\n        public static IObservable<Collider> OnTriggerStayAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Collider>();\n            return GetOrAddComponent<ObservableTriggerTrigger>(gameObject).OnTriggerStayAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableUpdateTrigger\n\n        /// <summary>Update is called every frame, if the MonoBehaviour is enabled.</summary>\n        public static IObservable<Unit> UpdateAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableUpdateTrigger>(gameObject).UpdateAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableVisibleTrigger\n\n        /// <summary>OnBecameInvisible is called when the renderer is no longer visible by any camera.</summary>\n        public static IObservable<Unit> OnBecameInvisibleAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableVisibleTrigger>(gameObject).OnBecameInvisibleAsObservable();\n        }\n\n        /// <summary>OnBecameVisible is called when the renderer became visible by any camera.</summary>\n        public static IObservable<Unit> OnBecameVisibleAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableVisibleTrigger>(gameObject).OnBecameVisibleAsObservable();\n        }\n\n        #endregion\n\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\n        #region ObservableTransformChangedTrigger\n\n        /// <summary>Callback sent to the graphic before a Transform parent change occurs.</summary>\n        public static IObservable<Unit> OnBeforeTransformParentChangedAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableTransformChangedTrigger>(gameObject).OnBeforeTransformParentChangedAsObservable();\n        }\n\n        /// <summary>This function is called when the parent property of the transform of the GameObject has changed.</summary>\n        public static IObservable<Unit> OnTransformParentChangedAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableTransformChangedTrigger>(gameObject).OnTransformParentChangedAsObservable();\n        }\n\n        /// <summary>This function is called when the list of children of the transform of the GameObject has changed.</summary>\n        public static IObservable<Unit> OnTransformChildrenChangedAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableTransformChangedTrigger>(gameObject).OnTransformChildrenChangedAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableCanvasGroupChangedTrigger\n\n        /// <summary>Callback that is sent if the canvas group is changed.</summary>\n        public static IObservable<Unit> OnCanvasGroupChangedAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableCanvasGroupChangedTrigger>(gameObject).OnCanvasGroupChangedAsObservable();\n        }\n\n        #endregion\n\n        #region ObservableRectTransformTrigger\n\n        /// <summary>Callback that is sent if an associated RectTransform has it's dimensions changed.</summary>\n        public static IObservable<Unit> OnRectTransformDimensionsChangeAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableRectTransformTrigger>(gameObject).OnRectTransformDimensionsChangeAsObservable();\n        }\n\n        /// <summary>Callback that is sent if an associated RectTransform is removed.</summary>\n        public static IObservable<Unit> OnRectTransformRemovedAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableRectTransformTrigger>(gameObject).OnRectTransformRemovedAsObservable();\n        }\n\n        #endregion\n#endif\n\n        #region ObservableParticleTrigger\n\n        /// <summary>OnParticleCollision is called when a particle hits a collider.</summary>\n        public static IObservable<GameObject> OnParticleCollisionAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<GameObject>();\n            return GetOrAddComponent<ObservableParticleTrigger>(gameObject).OnParticleCollisionAsObservable();\n        }\n\n#if UNITY_5_4_OR_NEWER\n\n        /// <summary>OnParticleTrigger is called when any particles in a particle system meet the conditions in the trigger module.</summary>\n        public static IObservable<Unit> OnParticleTriggerAsObservable(this GameObject gameObject)\n        {\n            if (gameObject == null) return Observable.Empty<Unit>();\n            return GetOrAddComponent<ObservableParticleTrigger>(gameObject).OnParticleTriggerAsObservable();\n        }\n\n#endif\n\n        #endregion\n\n\n        static T GetOrAddComponent<T>(GameObject gameObject)\n            where T : Component\n        {\n            var component = gameObject.GetComponent<T>();\n            if (component == null)\n            {\n                component = gameObject.AddComponent<T>();\n            }\n\n            return component;\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 3ee4df960144b9042874516111cf2d6c\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableTriggerTrigger : ObservableTriggerBase\n    {\n        Subject<Collider> onTriggerEnter;\n\n        /// <summary>OnTriggerEnter is called when the Collider other enters the trigger.</summary>\n        void OnTriggerEnter(Collider other)\n        {\n            if (onTriggerEnter != null) onTriggerEnter.OnNext(other);\n        }\n\n        /// <summary>OnTriggerEnter is called when the Collider other enters the trigger.</summary>\n        public IObservable<Collider> OnTriggerEnterAsObservable()\n        {\n            return onTriggerEnter ?? (onTriggerEnter = new Subject<Collider>());\n        }\n\n        Subject<Collider> onTriggerExit;\n\n        /// <summary>OnTriggerExit is called when the Collider other has stopped touching the trigger.</summary>\n        void OnTriggerExit(Collider other)\n        {\n            if (onTriggerExit != null) onTriggerExit.OnNext(other);\n        }\n\n        /// <summary>OnTriggerExit is called when the Collider other has stopped touching the trigger.</summary>\n        public IObservable<Collider> OnTriggerExitAsObservable()\n        {\n            return onTriggerExit ?? (onTriggerExit = new Subject<Collider>());\n        }\n\n        Subject<Collider> onTriggerStay;\n\n        /// <summary>OnTriggerStay is called once per frame for every Collider other that is touching the trigger.</summary>\n        void OnTriggerStay(Collider other)\n        {\n            if (onTriggerStay != null) onTriggerStay.OnNext(other);\n        }\n\n        /// <summary>OnTriggerStay is called once per frame for every Collider other that is touching the trigger.</summary>\n        public IObservable<Collider> OnTriggerStayAsObservable()\n        {\n            return onTriggerStay ?? (onTriggerStay = new Subject<Collider>());\n        }\n        \n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onTriggerEnter != null)\n            {\n                onTriggerEnter.OnCompleted();\n            }\n            if (onTriggerExit != null)\n            {\n                onTriggerExit.OnCompleted();\n            }\n            if (onTriggerStay != null)\n            {\n                onTriggerStay.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: cadcfd987fed8a044b75709fc19ad0f7\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableUpdateSelectedTrigger.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System; // require keep for Windows Universal App\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableUpdateSelectedTrigger : ObservableTriggerBase, IEventSystemHandler, IUpdateSelectedHandler\n    {\n        Subject<BaseEventData> onUpdateSelected;\n\n        void IUpdateSelectedHandler.OnUpdateSelected(BaseEventData eventData)\n        {\n            if (onUpdateSelected != null) onUpdateSelected.OnNext(eventData);\n        }\n\n        public IObservable<BaseEventData> OnUpdateSelectedAsObservable()\n        {\n            return onUpdateSelected ?? (onUpdateSelected = new Subject<BaseEventData>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onUpdateSelected != null)\n            {\n                onUpdateSelected.OnCompleted();\n            }\n        }\n    }\n}\n\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableUpdateSelectedTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4d207a04db328fd4d970c1457530deb3\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableUpdateTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableUpdateTrigger : ObservableTriggerBase\n    {\n        Subject<Unit> update;\n\n        /// <summary>Update is called every frame, if the MonoBehaviour is enabled.</summary>\n        void Update()\n        {\n            if (update != null) update.OnNext(Unit.Default);\n        }\n\n        /// <summary>Update is called every frame, if the MonoBehaviour is enabled.</summary>\n        public IObservable<Unit> UpdateAsObservable()\n        {\n            return update ?? (update = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (update != null)\n            {\n                update.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableUpdateTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: ceb5e5014f40d6948815a7be8b174ff2\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableVisibleTrigger.cs",
    "content": "﻿using System; // require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableVisibleTrigger : ObservableTriggerBase\n    {\n        Subject<Unit> onBecameInvisible;\n\n        /// <summary>OnBecameInvisible is called when the renderer is no longer visible by any camera.</summary>\n        void OnBecameInvisible()\n        {\n            if (onBecameInvisible != null) onBecameInvisible.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnBecameInvisible is called when the renderer is no longer visible by any camera.</summary>\n        public IObservable<Unit> OnBecameInvisibleAsObservable()\n        {\n            return onBecameInvisible ?? (onBecameInvisible = new Subject<Unit>());\n        }\n\n        Subject<Unit> onBecameVisible;\n\n        /// <summary>OnBecameVisible is called when the renderer became visible by any camera.</summary>\n        void OnBecameVisible()\n        {\n            if (onBecameVisible != null) onBecameVisible.OnNext(Unit.Default);\n        }\n\n        /// <summary>OnBecameVisible is called when the renderer became visible by any camera.</summary>\n        public IObservable<Unit> OnBecameVisibleAsObservable()\n        {\n            return onBecameVisible ?? (onBecameVisible = new Subject<Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (onBecameInvisible != null)\n            {\n                onBecameInvisible.OnCompleted();\n            }\n            if (onBecameVisible != null)\n            {\n                onBecameVisible.OnCompleted();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableVisibleTrigger.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 03515121745b2d74c8782ce92eb2a1a0\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers.meta",
    "content": "fileFormatVersion: 2\nguid: 5380144628ecdc74ab6778f80d103d51\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/UnityEventExtensions.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\nusing UnityEngine.Events;\n\nnamespace UniRx\n{\n    public static partial class UnityEventExtensions\n    {\n        public static IObservable<Unit> AsObservable(this UnityEngine.Events.UnityEvent unityEvent)\n        {\n            return Observable.FromEvent<UnityAction>(h => new UnityAction(h), h => unityEvent.AddListener(h), h => unityEvent.RemoveListener(h));\n        }\n\n        public static IObservable<T> AsObservable<T>(this UnityEngine.Events.UnityEvent<T> unityEvent)\n        {\n            return Observable.FromEvent<UnityAction<T>, T>(h => new UnityAction<T>(h), h => unityEvent.AddListener(h), h => unityEvent.RemoveListener(h));\n        }\n\n        public static IObservable<Tuple<T0, T1>> AsObservable<T0, T1>(this UnityEngine.Events.UnityEvent<T0, T1> unityEvent)\n        {\n            return Observable.FromEvent<UnityAction<T0, T1>, Tuple<T0, T1>>(h =>\n            {\n                return new UnityAction<T0, T1>((t0, t1) =>\n                {\n                    h(Tuple.Create(t0, t1));\n                });\n            }, h => unityEvent.AddListener(h), h => unityEvent.RemoveListener(h));\n        }\n\n        public static IObservable<Tuple<T0, T1, T2>> AsObservable<T0, T1, T2>(this UnityEngine.Events.UnityEvent<T0, T1, T2> unityEvent)\n        {\n            return Observable.FromEvent<UnityAction<T0, T1, T2>, Tuple<T0, T1, T2>>(h =>\n            {\n                return new UnityAction<T0, T1, T2>((t0, t1, t2) =>\n                {\n                    h(Tuple.Create(t0, t1, t2));\n                });\n            }, h => unityEvent.AddListener(h), h => unityEvent.RemoveListener(h));\n        }\n\n        public static IObservable<Tuple<T0, T1, T2, T3>> AsObservable<T0, T1, T2, T3>(this UnityEngine.Events.UnityEvent<T0, T1, T2, T3> unityEvent)\n        {\n            return Observable.FromEvent<UnityAction<T0, T1, T2, T3>, Tuple<T0, T1, T2, T3>>(h =>\n            {\n                return new UnityAction<T0, T1, T2, T3>((t0, t1, t2, t3) =>\n                {\n                    h(Tuple.Create(t0, t1, t2, t3));\n                });\n            }, h => unityEvent.AddListener(h), h => unityEvent.RemoveListener(h));\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/UnityEventExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e3c4861cc04ac524484d0730a3a5bd4a\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/UnityGraphicExtensions.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System;\nusing UnityEngine.Events;\nusing UnityEngine.UI;\n\nnamespace UniRx\n{\n    public static partial class UnityGraphicExtensions\n    {\n        public static IObservable<Unit> DirtyLayoutCallbackAsObservable(this Graphic graphic)\n        {\n            return Observable.Create<Unit>(observer =>\n            {\n                UnityAction registerHandler = () => observer.OnNext(Unit.Default);\n                graphic.RegisterDirtyLayoutCallback(registerHandler);\n                return Disposable.Create(() => graphic.UnregisterDirtyLayoutCallback(registerHandler));\n            });\n        }\n\n        public static IObservable<Unit> DirtyMaterialCallbackAsObservable(this Graphic graphic)\n        {\n            return Observable.Create<Unit>(observer =>\n            {\n                UnityAction registerHandler = () => observer.OnNext(Unit.Default);\n                graphic.RegisterDirtyMaterialCallback(registerHandler);\n                return Disposable.Create(() => graphic.UnregisterDirtyMaterialCallback(registerHandler));\n            });\n        }\n\n        public static IObservable<Unit> DirtyVerticesCallbackAsObservable(this Graphic graphic)\n        {\n            return Observable.Create<Unit>(observer =>\n            {\n                UnityAction registerHandler = () => observer.OnNext(Unit.Default);\n                graphic.RegisterDirtyVerticesCallback(registerHandler);\n                return Disposable.Create(() => graphic.UnregisterDirtyVerticesCallback(registerHandler));\n            });\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/UnityGraphicExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 99be646df339108498ebb70efa1b7bd4\ntimeCreated: 1455373900\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/UnityUIComponentExtensions.cs",
    "content": "﻿// for uGUI(from 4.6)\n#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)\n\nusing System;\nusing UnityEngine;\nusing UnityEngine.UI;\n\nnamespace UniRx\n{\n    public static partial class UnityUIComponentExtensions\n    {\n        public static IDisposable SubscribeToText(this IObservable<string> source, Text text)\n        {\n            return source.SubscribeWithState(text, (x, t) => t.text = x);\n        }\n\n        public static IDisposable SubscribeToText<T>(this IObservable<T> source, Text text)\n        {\n            return source.SubscribeWithState(text, (x, t) => t.text = x.ToString());\n        }\n\n        public static IDisposable SubscribeToText<T>(this IObservable<T> source, Text text, Func<T, string> selector)\n        {\n            return source.SubscribeWithState2(text, selector, (x, t, s) => t.text = s(x));\n        }\n\n        public static IDisposable SubscribeToInteractable(this IObservable<bool> source, Selectable selectable)\n        {\n            return source.SubscribeWithState(selectable, (x, s) => s.interactable = x);\n        }\n\n        /// <summary>Observe onClick event.</summary>\n        public static IObservable<Unit> OnClickAsObservable(this Button button)\n        {\n            return button.onClick.AsObservable();\n        }\n\n        /// <summary>Observe onValueChanged with current `isOn` value on subscribe.</summary>\n        public static IObservable<bool> OnValueChangedAsObservable(this Toggle toggle)\n        {\n            // Optimized Defer + StartWith\n            return Observable.CreateWithState<bool, Toggle>(toggle, (t, observer) =>\n            {\n                observer.OnNext(t.isOn);\n                return t.onValueChanged.AsObservable().Subscribe(observer);\n            });\n        }\n\n        /// <summary>Observe onValueChanged with current `value` on subscribe.</summary>\n        public static IObservable<float> OnValueChangedAsObservable(this Scrollbar scrollbar)\n        {\n            return Observable.CreateWithState<float, Scrollbar>(scrollbar, (s, observer) =>\n            {\n                observer.OnNext(s.value);\n                return s.onValueChanged.AsObservable().Subscribe(observer);\n            });\n        }\n\n        /// <summary>Observe onValueChanged with current `normalizedPosition` value on subscribe.</summary>\n        public static IObservable<Vector2> OnValueChangedAsObservable(this ScrollRect scrollRect)\n        {\n            return Observable.CreateWithState<Vector2, ScrollRect>(scrollRect, (s, observer) =>\n            {\n                observer.OnNext(s.normalizedPosition);\n                return s.onValueChanged.AsObservable().Subscribe(observer);\n            });\n        }\n\n        /// <summary>Observe onValueChanged with current `value` on subscribe.</summary>\n        public static IObservable<float> OnValueChangedAsObservable(this Slider slider)\n        {\n            return Observable.CreateWithState<float, Slider>(slider, (s, observer) =>\n            {\n                observer.OnNext(s.value);\n                return s.onValueChanged.AsObservable().Subscribe(observer);\n            });\n        }\n\n        /// <summary>Observe onEndEdit(Submit) event.</summary>\n        public static IObservable<string> OnEndEditAsObservable(this InputField inputField)\n        {\n            return inputField.onEndEdit.AsObservable();\n        }\n\n#if (UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2)\n        /// <summary>Observe onValueChange with current `text` value on subscribe.</summary>\n        public static IObservable<string> OnValueChangeAsObservable(this InputField inputField)\n        {\n            return Observable.CreateWithState<string, InputField>(inputField, (i, observer) =>\n            {\n                observer.OnNext(i.text);\n                return i.onValueChange.AsObservable().Subscribe(observer);\n            });\n        }\n#else\n        /// <summary>Observe onValueChanged with current `text` value on subscribe.</summary>\n        public static IObservable<string> OnValueChangedAsObservable(this InputField inputField)\n        {\n            return Observable.CreateWithState<string, InputField>(inputField, (i, observer) =>\n            {\n                observer.OnNext(i.text);\n                return i.onValueChanged.AsObservable().Subscribe(observer);\n            });\n        }\n#endif\n\n#if UNITY_5_3_OR_NEWER\n\n        /// <summary>Observe onValueChanged with current `value` on subscribe.</summary>\n        public static IObservable<int> OnValueChangedAsObservable(this Dropdown dropdown)\n        {\n            return Observable.CreateWithState<int, Dropdown>(dropdown, (d, observer) =>\n            {\n                observer.OnNext(d.value);\n                return d.onValueChanged.AsObservable().Subscribe(observer);\n            });\n        }\n\n#endif\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/UnityUIComponentExtensions.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7645084659bc779448e384456805d251\ntimeCreated: 1455373899\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/YieldInstructionCache.cs",
    "content": "﻿using UnityEngine;\n\nnamespace UniRx\n{\n    internal static class YieldInstructionCache\n    {\n        public static readonly WaitForEndOfFrame WaitForEndOfFrame = new WaitForEndOfFrame();\n        public static readonly WaitForFixedUpdate WaitForFixedUpdate = new WaitForFixedUpdate();\n    }\n}"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge/YieldInstructionCache.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2493deaccf35b0542800b0851771e665\ntimeCreated: 1455373897\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityEngineBridge.meta",
    "content": "fileFormatVersion: 2\nguid: c6fa31db6d33195438d3a9c49effc512\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityWinRTBridge/Thread.cs",
    "content": "﻿#if UNITY_METRO\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespace UniRx\n{\n    public static class Thread\n    {\n        public static void Sleep(TimeSpan wait)\n        {\n            new System.Threading.ManualResetEvent(false).WaitOne(wait);\n        }\n\n        public static void Sleep(int ms)\n        {\n            new System.Threading.ManualResetEvent(false).WaitOne(ms);\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityWinRTBridge/Thread.cs.meta",
    "content": "fileFormatVersion: 2\nguid: bf1175d5dd9b5904d898eb4c9dd7e0c5\ntimeCreated: 1455373901\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityWinRTBridge/ThreadPoolScheduler_UnityWinRT.cs",
    "content": "﻿#if UNITY_METRO\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\n#if NETFX_CORE\nusing System.Threading.Tasks;\n#endif\n\nnamespace UniRx\n{\n    public static partial class Scheduler\n    {\n        public static readonly IScheduler ThreadPool = new ThreadPoolScheduler();\n\n        class ThreadPoolScheduler : IScheduler\n        {\n            public DateTimeOffset Now\n            {\n                get { return Scheduler.Now; }\n            }\n\n            public IDisposable Schedule(Action action)\n            {\n                var d = new BooleanDisposable();\n#if NETFX_CORE\n\n                Task.Run(()=>\n                {\n                    if (!d.IsDisposed)\n                    {\n                        action();\n                    }\n                });\n\n#else\n                Action act = () =>\n                {\n                    if (!d.IsDisposed)\n                    {\n                        action();\n                    }\n                };\n\n                act.BeginInvoke(ar => act.EndInvoke(ar), null);\n\n#endif\n\n                return d;\n            }\n\n            public IDisposable Schedule(TimeSpan dueTime, Action action)\n            {\n                var wait = Scheduler.Normalize(dueTime);\n\n                var d = new BooleanDisposable();\n\n#if NETFX_CORE\n\n                Task.Run(()=>\n                {\n                    if (!d.IsDisposed)\n                    {\n                        if (wait.Ticks > 0)\n                        {\n                            Thread.Sleep(wait);\n                        }\n                        action();\n                    }\n                });\n\n#else\n\n                Action act = () =>\n                {\n                    if (!d.IsDisposed)\n                    {\n                        if (wait.Ticks > 0)\n                        {\n                            Thread.Sleep(wait);\n                        }\n                        action();\n                    }\n                };\n\n                act.BeginInvoke(ar => act.EndInvoke(ar), null);\n\n#endif\n\n                return d;\n            }\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityWinRTBridge/ThreadPoolScheduler_UnityWinRT.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2c36c9256c17bbb40854ef9b9e4d51c7\ntimeCreated: 1455373898\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/UnityWinRTBridge.meta",
    "content": "fileFormatVersion: 2\nguid: 2c03c70869bcd0240b96959097acc29d\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/package.json",
    "content": "{\n    \"name\": \"com.neuecc.unirx\",\n    \"displayName\": \"UniRx\",\n    \"version\": \"7.1.0\",\n    \"unity\": \"2018.3\",\n    \"description\": \"Reactive Extensions for Unity\",\n    \"license\": \"MIT\",\n    \"dependencies\": {}\n}\n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts/package.json.meta",
    "content": "fileFormatVersion: 2\nguid: 1ee65284d7591bb45a97552ef8b3a956\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx/Scripts.meta",
    "content": "fileFormatVersion: 2\nguid: eaf9ac9937118834c86197511fd5317f\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins/UniRx.meta",
    "content": "fileFormatVersion: 2\nguid: 998cc3f9e78a04d4b874f69d2bc55c98\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins.meta",
    "content": "fileFormatVersion: 2\nguid: 19261f21f98b6464eb8c262598d87ee4\nfolderAsset: yes\ntimeCreated: 1455373896\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Resources/te.txt",
    "content": "﻿-nowarn:1591"
  },
  {
    "path": "Assets/Resources/te.txt.meta",
    "content": "fileFormatVersion: 2\nguid: 894ec94774ed19042a524179dd08c3a2\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Resources.meta",
    "content": "fileFormatVersion: 2\nguid: d46b23ee8309b904e99864b6809045be\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/Editor/HierarchyTreeBuilder.cs",
    "content": "﻿#if UNITY_EDITOR\n\nusing System;\nusing UnityEngine;\n\nnamespace RuntimeUnitTestToolkit.Editor\n{\n    // functional declarative construction like flutter.\n\n    internal interface IBuilder\n    {\n        GameObject GameObject { get; }\n        T GetComponent<T>();\n    }\n\n    internal class Builder<T> : IBuilder\n        where T : Component\n    {\n        public T Component1 { get; private set; }\n        public GameObject GameObject { get; private set; }\n\n        public Transform Transform { get { return GameObject.transform; } }\n        public RectTransform RectTransform { get { return GameObject.GetComponent<RectTransform>(); } }\n\n        public Action<GameObject> SetTarget\n        {\n            set\n            {\n                value(this.GameObject);\n            }\n        }\n\n\n        public IBuilder Child\n        {\n            set\n            {\n                value.GameObject.transform.SetParent(GameObject.transform);\n            }\n        }\n\n        public IBuilder[] Children\n        {\n            set\n            {\n                foreach (var item in value)\n                {\n                    item.GameObject.transform.SetParent(GameObject.transform);\n                }\n            }\n        }\n\n        public Builder(string name)\n        {\n            this.GameObject = new GameObject(name);\n            this.Component1 = GameObject.AddComponent<T>();\n        }\n\n        public Builder(string name, out T referenceSelf) // out primary reference.\n        {\n            this.GameObject = new GameObject(name);\n            this.Component1 = GameObject.AddComponent<T>();\n            referenceSelf = this.Component1;\n        }\n\n        public TComponent GetComponent<TComponent>()\n        {\n            return this.GameObject.GetComponent<TComponent>();\n        }\n    }\n\n    internal class Builder<T1, T2> : Builder<T1>\n        where T1 : Component\n        where T2 : Component\n    {\n        public T2 Component2 { get; private set; }\n\n        public Builder(string name)\n            : base(name)\n        {\n            this.Component2 = GameObject.AddComponent<T2>();\n        }\n\n        public Builder(string name, out T1 referenceSelf)\n            : base(name, out referenceSelf)\n        {\n            this.Component2 = GameObject.AddComponent<T2>();\n        }\n    }\n\n    internal class Builder<T1, T2, T3> : Builder<T1, T2>\n        where T1 : Component\n        where T2 : Component\n        where T3 : Component\n    {\n        public T3 Component3 { get; private set; }\n\n        public Builder(string name)\n            : base(name)\n        {\n            this.Component3 = GameObject.AddComponent<T3>();\n        }\n\n        public Builder(string name, out T1 referenceSelf)\n            : base(name, out referenceSelf)\n        {\n            this.Component3 = GameObject.AddComponent<T3>();\n        }\n    }\n\n    internal class Builder<T1, T2, T3, T4> : Builder<T1, T2, T3>\n        where T1 : Component\n        where T2 : Component\n        where T3 : Component\n        where T4 : Component\n    {\n        public T4 Component4 { get; private set; }\n\n        public Builder(string name)\n            : base(name)\n        {\n            this.Component4 = GameObject.AddComponent<T4>();\n        }\n\n        public Builder(string name, out T1 referenceSelf)\n            : base(name, out referenceSelf)\n        {\n            this.Component4 = GameObject.AddComponent<T4>();\n        }\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/Editor/HierarchyTreeBuilder.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8760bbbab905a534eb6fb7b61b736926\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/Editor/UnitTestBuilder.MenuItems.cs",
    "content": "﻿#if UNITY_EDITOR\nusing UnityEditor;\n\n// Settings MenuItems.\n\npublic static partial class UnitTestBuilder\n{\n    [MenuItem(\"Test/Settings/ScriptBackend/Mono\", validate = true, priority = 1)]\n    static bool ValidateScriptBackendMono()\n    {\n        Menu.SetChecked(\"Test/Settings/ScriptBackend/Mono\", LoadOrGetDefaultSettings().ScriptBackend == ScriptingImplementation.Mono2x);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/ScriptBackend/Mono\", validate = false, priority = 1)]\n    static void ScriptBackendMono()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentScriptBackend = false;\n        settings.ScriptBackend = ScriptingImplementation.Mono2x;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/ScriptBackend/IL2CPP\", validate = true, priority = 2)]\n    static bool ValidateScriptBackendIL2CPP()\n    {\n        Menu.SetChecked(\"Test/Settings/ScriptBackend/IL2CPP\", LoadOrGetDefaultSettings().ScriptBackend == ScriptingImplementation.IL2CPP);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/ScriptBackend/IL2CPP\", validate = false, priority = 2)]\n    static void ScriptBackendIL2CPP()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentScriptBackend = false;\n        settings.ScriptBackend = ScriptingImplementation.IL2CPP;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/AutoRunPlayer\", validate = true, priority = 3)]\n    static bool ValidateAutoRun()\n    {\n        Menu.SetChecked(\"Test/Settings/AutoRunPlayer\", LoadOrGetDefaultSettings().AutoRunPlayer);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/AutoRunPlayer\", validate = false, priority = 3)]\n    static void AutoRun()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.AutoRunPlayer = !settings.AutoRunPlayer;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/Headless\", validate = true, priority = 4)]\n    static bool ValidateHeadless()\n    {\n        Menu.SetChecked(\"Test/Settings/Headless\", LoadOrGetDefaultSettings().Headless);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/Headless\", validate = false, priority = 4)]\n    static void Headless()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.Headless = !settings.Headless;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/DisableAutoClose\", validate = true, priority = 5)]\n    static bool ValidateDisableAutoClose()\n    {\n        Menu.SetChecked(\"Test/Settings/DisableAutoClose\", LoadOrGetDefaultSettings().DisableAutoClose);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/DisableAutoClose\", validate = false, priority = 5)]\n    static void DisableAutoClose()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.DisableAutoClose = !settings.DisableAutoClose;\n        SaveSettings(settings);\n    }\n\n    // generated\n\n    /*\n     * \n  void Main()\n{\nvar sb = new StringBuilder();\n\nvar p = 1;\nforeach (var target in Enum.GetNames(typeof(BuildTarget)))\n{\n    var path = $\"Test/Settings/BuildTarget/{target}\";\n    var priority = p++;\n\n    var template = $@\"\n[MenuItem(\"\"{path}\"\", validate = true, priority = {priority})]\nstatic bool ValidateBuildTarget{target}()\n{{\nMenu.SetChecked(\"\"{path}\"\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.{target});\nreturn true;\n}}\n\n[MenuItem(\"\"{path}\"\", validate = false, priority = {priority})]\nstatic void BuildTarget{target}()\n{{\nvar settings = LoadOrGetDefaultSettings();\nsettings.UseCurrentBuildTarget = false;\nsettings.BuildTarget = BuildTarget.{target};\nSaveSettings(settings);\n}}\";\n\n    sb.AppendLine(template);\n}\n\nsb.ToString().Dump();\n}\n\npublic enum BuildTarget\n{\nStandaloneWindows,\nStandaloneWindows64,\nStandaloneLinux,\nStandaloneLinux64,\nStandaloneOSX,\nWebGL,\niOS,\nAndroid,\nWSAPlayer,\nPS4,\nXboxOne,\nSwitch,\n}\n    */\n\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneWindows\", validate = true, priority = 1)]\n    static bool ValidateBuildTargetStandaloneWindows()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/StandaloneWindows\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.StandaloneWindows);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneWindows\", validate = false, priority = 1)]\n    static void BuildTargetStandaloneWindows()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.StandaloneWindows;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneWindows64\", validate = true, priority = 2)]\n    static bool ValidateBuildTargetStandaloneWindows64()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/StandaloneWindows64\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.StandaloneWindows64);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneWindows64\", validate = false, priority = 2)]\n    static void BuildTargetStandaloneWindows64()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.StandaloneWindows64;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneLinux\", validate = true, priority = 3)]\n    static bool ValidateBuildTargetStandaloneLinux()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/StandaloneLinux\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.StandaloneLinux);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneLinux\", validate = false, priority = 3)]\n    static void BuildTargetStandaloneLinux()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.StandaloneLinux;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneLinux64\", validate = true, priority = 4)]\n    static bool ValidateBuildTargetStandaloneLinux64()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/StandaloneLinux64\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.StandaloneLinux64);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneLinux64\", validate = false, priority = 4)]\n    static void BuildTargetStandaloneLinux64()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.StandaloneLinux64;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneOSX\", validate = true, priority = 5)]\n    static bool ValidateBuildTargetStandaloneOSX()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/StandaloneOSX\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.StandaloneOSX);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/StandaloneOSX\", validate = false, priority = 5)]\n    static void BuildTargetStandaloneOSX()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.StandaloneOSX;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/WebGL\", validate = true, priority = 6)]\n    static bool ValidateBuildTargetWebGL()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/WebGL\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.WebGL);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/WebGL\", validate = false, priority = 6)]\n    static void BuildTargetWebGL()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.WebGL;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/iOS\", validate = true, priority = 7)]\n    static bool ValidateBuildTargetiOS()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/iOS\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.iOS);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/iOS\", validate = false, priority = 7)]\n    static void BuildTargetiOS()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.iOS;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/Android\", validate = true, priority = 8)]\n    static bool ValidateBuildTargetAndroid()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/Android\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.Android);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/Android\", validate = false, priority = 8)]\n    static void BuildTargetAndroid()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.Android;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/WSAPlayer\", validate = true, priority = 9)]\n    static bool ValidateBuildTargetWSAPlayer()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/WSAPlayer\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.WSAPlayer);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/WSAPlayer\", validate = false, priority = 9)]\n    static void BuildTargetWSAPlayer()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.WSAPlayer;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/PS4\", validate = true, priority = 10)]\n    static bool ValidateBuildTargetPS4()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/PS4\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.PS4);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/PS4\", validate = false, priority = 10)]\n    static void BuildTargetPS4()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.PS4;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/XboxOne\", validate = true, priority = 11)]\n    static bool ValidateBuildTargetXboxOne()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/XboxOne\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.XboxOne);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/XboxOne\", validate = false, priority = 11)]\n    static void BuildTargetXboxOne()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.XboxOne;\n        SaveSettings(settings);\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/Switch\", validate = true, priority = 12)]\n    static bool ValidateBuildTargetSwitch()\n    {\n        Menu.SetChecked(\"Test/Settings/BuildTarget/Switch\", LoadOrGetDefaultSettings().BuildTarget == BuildTarget.Switch);\n        return true;\n    }\n\n    [MenuItem(\"Test/Settings/BuildTarget/Switch\", validate = false, priority = 12)]\n    static void BuildTargetSwitch()\n    {\n        var settings = LoadOrGetDefaultSettings();\n        settings.UseCurrentBuildTarget = false;\n        settings.BuildTarget = BuildTarget.Switch;\n        SaveSettings(settings);\n    }\n\n\n\n\n\n\n\n\n}\n\n#endif\n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/Editor/UnitTestBuilder.MenuItems.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 12bdad0556e999f4aa82da29415d361f\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/Editor/UnitTestBuilder.cs",
    "content": "﻿#if UNITY_EDITOR\n\nusing RuntimeUnitTestToolkit;\nusing RuntimeUnitTestToolkit.Editor;\nusing System;\nusing UnityEditor;\nusing UnityEditor.Build.Reporting;\nusing UnityEditor.SceneManagement;\nusing UnityEngine;\nusing UnityEngine.EventSystems;\nusing UnityEngine.SceneManagement;\nusing UnityEngine.UI;\n\ninternal class RuntimeUnitTestSettings\n{\n    public ScriptingImplementation ScriptBackend;\n    public bool UseCurrentScriptBackend;\n    public BuildTarget BuildTarget;\n    public bool UseCurrentBuildTarget;\n\n    public bool Headless;\n    public bool AutoRunPlayer;\n    public bool DisableAutoClose;\n\n    public RuntimeUnitTestSettings()\n    {\n        UseCurrentBuildTarget = true;\n        UseCurrentScriptBackend = true;\n        Headless = false;\n        AutoRunPlayer = true;\n        DisableAutoClose = false;\n    }\n\n    public override string ToString()\n    {\n        return $\"{ScriptBackend} {BuildTarget} Headless:{Headless} AutoRunPlayer:{AutoRunPlayer} DisableAutoClose:{DisableAutoClose}\";\n    }\n}\n\n// no namespace(because invoke from commandline)\npublic static partial class UnitTestBuilder\n{\n    const string SettingsKeyBase = \"RuntimeUnitTest.Settings.\";\n\n    [MenuItem(\"Test/BuildUnitTest\")]\n    public static void BuildUnitTest()\n    {\n        var settings = new RuntimeUnitTestSettings(); // default\n\n        string buildPath = null;\n\n        if (Application.isBatchMode) // from commandline\n        {\n            settings.AutoRunPlayer = false;\n            settings.DisableAutoClose = false;\n\n            var cmdArgs = Environment.GetCommandLineArgs();\n            for (int i = 0; i < cmdArgs.Length; i++)\n            {\n                if (string.Equals(cmdArgs[i].Trim('-', '/'), \"ScriptBackend\", StringComparison.OrdinalIgnoreCase))\n                {\n                    settings.UseCurrentScriptBackend = false;\n                    var str = cmdArgs[++i];\n                    if (str.StartsWith(\"mono\", StringComparison.OrdinalIgnoreCase))\n                    {\n                        settings.ScriptBackend = ScriptingImplementation.Mono2x;\n                    }\n                    else if (str.StartsWith(\"IL2CPP\", StringComparison.OrdinalIgnoreCase))\n                    {\n                        settings.ScriptBackend = ScriptingImplementation.IL2CPP;\n                    }\n                    else\n                    {\n                        settings.ScriptBackend = (ScriptingImplementation)Enum.Parse(typeof(ScriptingImplementation), str, true);\n                    }\n                }\n                else if (string.Equals(cmdArgs[i].Trim('-', '/'), \"BuildTarget\", StringComparison.OrdinalIgnoreCase))\n                {\n                    settings.UseCurrentBuildTarget = false;\n                    settings.BuildTarget = (BuildTarget)Enum.Parse(typeof(BuildTarget), cmdArgs[++i], true);\n                }\n                else if (string.Equals(cmdArgs[i].Trim('-', '/'), \"Headless\", StringComparison.OrdinalIgnoreCase))\n                {\n                    settings.Headless = true;\n                }\n                else if (string.Equals(cmdArgs[i].Trim('-', '/'), \"buildPath\", StringComparison.OrdinalIgnoreCase))\n                {\n                    buildPath = cmdArgs[++i];\n                }\n            }\n        }\n        else\n        {\n            var key = SettingsKeyBase + Application.productName;\n            var settingsValue = EditorPrefs.GetString(key, null);\n            try\n            {\n                if (!string.IsNullOrWhiteSpace(settingsValue))\n                {\n                    settings = JsonUtility.FromJson<RuntimeUnitTestSettings>(settingsValue);\n                }\n            }\n            catch\n            {\n                UnityEngine.Debug.LogError(\"Fail to load RuntimeUnitTest settings\");\n                EditorPrefs.SetString(key, null);\n            }\n        }\n\n        if (settings.UseCurrentBuildTarget)\n        {\n            settings.BuildTarget = EditorUserBuildSettings.activeBuildTarget;\n        }\n        if (settings.UseCurrentScriptBackend)\n        {\n            settings.ScriptBackend = PlayerSettings.GetScriptingBackend(ToBuildTargetGroup(settings.BuildTarget));\n        }\n\n        if (buildPath == null)\n        {\n            buildPath = $\"bin/UnitTest/{settings.BuildTarget}_{settings.ScriptBackend}/test\" + (IsWindows(settings.BuildTarget) ? \".exe\" : \"\");\n        }\n\n        var originalScene = SceneManager.GetActiveScene().path;\n\n        BuildUnitTest(buildPath, settings.ScriptBackend, settings.BuildTarget, settings.Headless, settings.AutoRunPlayer, settings.DisableAutoClose);\n\n        // reopen original scene\n        if (!string.IsNullOrWhiteSpace(originalScene))\n        {\n            EditorSceneManager.OpenScene(originalScene, OpenSceneMode.Single);\n        }\n        else\n        {\n            EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects);\n        }\n    }\n\n    static RuntimeUnitTestSettings LoadOrGetDefaultSettings()\n    {\n        var key = SettingsKeyBase + Application.productName;\n\n        var settingsValue = EditorPrefs.GetString(key, null);\n        RuntimeUnitTestSettings settings = null;\n        try\n        {\n            if (!string.IsNullOrWhiteSpace(settingsValue))\n            {\n                settings = JsonUtility.FromJson<RuntimeUnitTestSettings>(settingsValue);\n            }\n        }\n        catch\n        {\n            UnityEngine.Debug.LogError(\"Fail to load RuntimeUnitTest settings\");\n            EditorPrefs.SetString(key, null);\n            settings = null;\n        }\n\n        if (settings == null)\n        {\n            // default\n            settings = new RuntimeUnitTestSettings\n            {\n                UseCurrentBuildTarget = true,\n                UseCurrentScriptBackend = true,\n                Headless = false,\n                AutoRunPlayer = true,\n            };\n        }\n\n        return settings;\n    }\n\n    static void SaveSettings(RuntimeUnitTestSettings settings)\n    {\n        var key = SettingsKeyBase + Application.productName;\n        EditorPrefs.SetString(key, JsonUtility.ToJson(settings));\n    }\n\n    public static void BuildUnitTest(string buildPath, ScriptingImplementation scriptBackend, BuildTarget buildTarget, bool headless, bool autoRunPlayer, bool disableAutoClose)\n    {\n        var sceneName = \"Assets/TempRuntimeUnitTestScene_\" + DateTimeOffset.UtcNow.ToUnixTimeSeconds();\n        if (disableAutoClose)\n        {\n            sceneName += \"_DisableAutoClose\";\n        }\n        sceneName += \".unity\";\n\n        var scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single);\n\n        BuildUnitTestRunnerScene();\n\n        EditorSceneManager.MarkSceneDirty(scene);\n        AssetDatabase.SaveAssets();\n        EditorSceneManager.SaveScene(scene, sceneName, false);\n        try\n        {\n            Build(sceneName, buildPath, new RuntimeUnitTestSettings { ScriptBackend = scriptBackend, BuildTarget = buildTarget, Headless = headless, AutoRunPlayer = autoRunPlayer, DisableAutoClose = disableAutoClose });\n        }\n        finally\n        {\n            AssetDatabase.DeleteAsset(sceneName);\n        }\n    }\n\n    public static UnitTestRunner BuildUnitTestRunnerScene()\n    {\n        const string kStandardSpritePath = \"UI/Skin/UISprite.psd\";\n        const string kBackgroundSpritePath = \"UI/Skin/Background.psd\";\n        var uisprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);\n        var background = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpritePath);\n\n        ScrollRect buttonList;\n        VerticalLayoutGroup listLayout;\n        Scrollbar refListScrollbar;\n        ScrollRect logList;\n        Scrollbar refLogScrollbar;\n        Button clearButton;\n        Text logText;\n\n        // Flutter like coded build utility\n\n        var rootObject = new Builder<Camera>(\"SceneRoot\")\n        {\n            Children = new IBuilder[] {\n                    new Builder<EventSystem, StandaloneInputModule>(\"EventSystem\"),\n                    new Builder<Canvas, CanvasScaler, GraphicRaycaster>(\"Canvas\") {\n                        Component1 = { renderMode = RenderMode.ScreenSpaceOverlay },\n                        Children = new IBuilder[] {\n                            new Builder<HorizontalLayoutGroup, CanvasRenderer>(\"HorizontalSplitter\") {\n                                RectTransform = { anchorMin = new Vector2(0, 0), anchorMax = new Vector2(1, 1) },\n                                Component1 = { childControlWidth = true, childControlHeight = true, spacing = 10 },\n                                Children = new IBuilder[] {\n                                    new Builder<ScrollRect, CanvasRenderer>(\"ButtonList\", out buttonList) {\n                                        RectTransform = { pivot = new Vector2(0.5f, 0.5f) },\n                                        Component1 = { horizontal =false, vertical = true, movementType = ScrollRect.MovementType.Clamped },\n                                        Children = new IBuilder[] {\n                                            new Builder<VerticalLayoutGroup, ContentSizeFitter>(\"ListLayoutToAttach\", out listLayout) {\n                                                RectTransform = { anchorMin = new Vector2(0, 0), anchorMax = new Vector2(1, 1), pivot = new Vector2(0, 1) },\n                                                Component1  = { childControlWidth = true, childControlHeight = true, childForceExpandWidth = true, childForceExpandHeight = false, spacing = 10, padding = new RectOffset(10,20,10,10) },\n                                                Component2 = { horizontalFit = ContentSizeFitter.FitMode.Unconstrained, verticalFit = ContentSizeFitter.FitMode.PreferredSize },\n                                                SetTarget = self => { buttonList.content = self.GetComponent<RectTransform>();  },\n                                                Child = new Builder<Button, Image, LayoutElement>(\"ClearButton\", out clearButton) {\n                                                    Component2 = { sprite = uisprite, type = Image.Type.Sliced },\n                                                    Component3 = { minHeight = 50 },\n                                                    SetTarget = self => { self.GetComponent<Button>().targetGraphic = self.GetComponent<Graphic>(); },\n                                                    Child = new Builder<Text>(\"ButtonText\") {\n                                                        RectTransform = { anchorMin = new Vector2(0, 0), anchorMax = new Vector2(1, 1), pivot = new Vector2(0.5f, 0.5f) },\n                                                        Component1 = { text = \"Clear\", color = FromRGB(50, 50, 50), alignment = TextAnchor.MiddleCenter, fontSize = 24, lineSpacing = 1 }\n                                                    }\n                                                }\n                                            },\n                                            new Builder<Scrollbar,Image>(\"ListScrollbar\", out refListScrollbar) {\n                                                RectTransform = { anchorMin = new Vector2(1, 0), anchorMax = new Vector2(1, 1) },\n                                                Component1 = { navigation = new Navigation{ mode = Navigation.Mode.None }, direction = Scrollbar.Direction.BottomToTop, size = 1.0f },\n                                                Component2 = { sprite = background, type = Image.Type.Sliced },\n                                                SetTarget = self => { buttonList.verticalScrollbar = self.GetComponent<Scrollbar>(); },\n                                                Child = new Builder<RectTransform>(\"Sliding Area\") {\n                                                    RectTransform = { anchorMin = new Vector2(0, 0), anchorMax = new Vector2(1, 1) },\n                                                    Child = new Builder<Image>(\"Handle\") {\n                                                        Component1 = { sprite = uisprite, type = Image.Type.Sliced },\n                                                        SetTarget = self =>\n                                                        {\n                                                            refListScrollbar.targetGraphic = self.GetComponent<Graphic>();\n                                                            refListScrollbar.handleRect = self.GetComponent<RectTransform>();\n                                                        }\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    },\n                                    new Builder<ScrollRect, CanvasRenderer>(\"ScrollableText\", out logList) {\n                                        RectTransform = { pivot = new Vector2(0.5f, 0.5f) },\n                                        Component1 = { horizontal =false, vertical = true, movementType = ScrollRect.MovementType.Elastic, elasticity = 0.1f },\n                                        Children = new IBuilder[] {\n                                            new Builder<Text, ContentSizeFitter>(\"Log\", out logText) {\n                                                RectTransform = { anchorMin = new Vector2(0, 0), anchorMax = new Vector2(1, 1), pivot = new Vector2(0, 1) },\n                                                Component1  = { fontSize = 24, lineSpacing = 1, supportRichText = true, alignment = TextAnchor.UpperLeft, horizontalOverflow = HorizontalWrapMode.Wrap, verticalOverflow = VerticalWrapMode.Truncate  },\n                                                Component2 = { horizontalFit = ContentSizeFitter.FitMode.Unconstrained, verticalFit = ContentSizeFitter.FitMode.PreferredSize },\n                                                SetTarget = self => { logList.content = self.GetComponent<RectTransform>(); }\n                                            },\n                                            new Builder<Scrollbar,Image>(\"LogScrollbar\", out refLogScrollbar) {\n                                                RectTransform = { anchorMin = new Vector2(1, 0), anchorMax = new Vector2(1, 1) },\n                                                Component1 = { navigation = new Navigation{ mode = Navigation.Mode.None }, direction = Scrollbar.Direction.BottomToTop, size = 1.0f },\n                                                Component2 = { sprite = background, type = Image.Type.Sliced },\n                                                SetTarget = self => { logList.verticalScrollbar = self.GetComponent<Scrollbar>(); },\n                                                Child = new Builder<RectTransform>(\"Sliding Area2\") {\n                                                    RectTransform = { anchorMin = new Vector2(0, 0), anchorMax = new Vector2(1, 1) },\n                                                    Child = new Builder<Image>(\"Handle2\") {\n                                                        Component1 = { sprite = uisprite, type = Image.Type.Sliced },\n                                                        SetTarget = self =>\n                                                        {\n                                                            refLogScrollbar.targetGraphic = self.GetComponent<Graphic>();\n                                                            refLogScrollbar.handleRect = self.GetComponent<RectTransform>();\n                                                        }\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    },\n                                }\n                            }\n                        }\n                    }\n                }\n        };\n\n        // size modify after build complete:)\n        {\n            var rect = GameObject.Find(\"HorizontalSplitter\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(0, 0);\n            rect.offsetMax = new Vector2(0, 0);\n        }\n        {\n            var rect = GameObject.Find(\"ListLayoutToAttach\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(0, 0);\n            rect.offsetMax = new Vector2(0, 0);\n        }\n        {\n            var rect = GameObject.Find(\"ListScrollbar\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(0, 0);\n            rect.offsetMax = new Vector2(0, 0);\n            rect.sizeDelta = new Vector2(30, 0);\n        }\n        {\n            var rect = GameObject.Find(\"ClearButton\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(0, 0);\n            rect.offsetMax = new Vector2(0, 0);\n        }\n        {\n            var rect = GameObject.Find(\"Sliding Area\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(0, 0);\n            rect.offsetMax = new Vector2(0, 0);\n            rect.sizeDelta = new Vector2(-20, -20);\n        }\n        {\n            var rect = GameObject.Find(\"Handle\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(0, 0);\n            rect.offsetMax = new Vector2(0, 0);\n            rect.sizeDelta = new Vector2(20, 20);\n        }\n        {\n            var rect = GameObject.Find(\"ButtonText\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(0, 0);\n            rect.offsetMax = new Vector2(0, 0);\n        }\n        {\n            var rect = GameObject.Find(\"Log\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(15, 0);\n            rect.offsetMax = new Vector2(-20, 0);\n        }\n        {\n            var rect = GameObject.Find(\"LogScrollbar\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(-30, 0);\n            rect.offsetMax = new Vector2(0, 0);\n            rect.sizeDelta = new Vector2(30, 0);\n        }\n        {\n            var rect = GameObject.Find(\"Sliding Area2\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(0, 0);\n            rect.offsetMax = new Vector2(0, 0);\n            rect.sizeDelta = new Vector2(-20, -20);\n        }\n        {\n            var rect = GameObject.Find(\"Handle2\").GetComponent<RectTransform>();\n            rect.offsetMin = new Vector2(0, 0);\n            rect.offsetMax = new Vector2(0, 0);\n            rect.sizeDelta = new Vector2(20, 20);\n        }\n\n        // add test script\n        var runner = rootObject.GameObject.AddComponent<UnitTestRunner>();\n        runner.clearButton = clearButton;\n        runner.list = listLayout.gameObject.GetComponent<RectTransform>();\n        runner.listScrollBar = refListScrollbar;\n        runner.logText = logText;\n        runner.logScrollBar = refLogScrollbar;\n\n        return runner;\n    }\n\n    static void Build(string sceneName, string buildPath, RuntimeUnitTestSettings settings)\n    {\n        var options = BuildOptions.BuildScriptsOnly | BuildOptions.IncludeTestAssemblies;\n        if (settings.AutoRunPlayer)\n        {\n            options |= BuildOptions.AutoRunPlayer;\n        }\n        if (settings.Headless)\n        {\n            options |= BuildOptions.EnableHeadlessMode;\n        }\n\n        var targetGroup = ToBuildTargetGroup(settings.BuildTarget);\n        var currentBackend = PlayerSettings.GetScriptingBackend(targetGroup);\n        if (currentBackend != settings.ScriptBackend)\n        {\n            UnityEngine.Debug.Log(\"Modify ScriptBackend to \" + settings.ScriptBackend);\n            PlayerSettings.SetScriptingBackend(targetGroup, settings.ScriptBackend);\n        }\n\n        var buildOptions = new BuildPlayerOptions\n        {\n            target = settings.BuildTarget,\n            targetGroup = targetGroup,\n            options = options,\n            scenes = new[] { sceneName },\n            locationPathName = buildPath\n        };\n\n        UnityEngine.Debug.Log(\"UnitTest Build Start, \" + settings.ToString());\n\n        var buildReport = BuildPipeline.BuildPlayer(buildOptions);\n\n        if (currentBackend != settings.ScriptBackend)\n        {\n            UnityEngine.Debug.Log(\"Restore ScriptBackend to \" + currentBackend);\n            PlayerSettings.SetScriptingBackend(targetGroup, currentBackend);\n        }\n\n        if (buildReport.summary.result != BuildResult.Succeeded)\n        {\n            // Note: show error summary?\n            // Debug.LogError(buildReport.SummarizeErrors());\n            UnityEngine.Debug.LogError(\"UnitTest Build Failed.\");\n        }\n        else\n        {\n            UnityEngine.Debug.Log(\"UnitTest Build Completed, binary located: \" + buildOptions.locationPathName);\n        }\n    }\n\n    static Color FromRGB(int r, int g, int b)\n    {\n        return new Color(r / 255f, g / 255f, b / 255f);\n    }\n\n    static bool IsWindows(BuildTarget buildTarget)\n    {\n        switch (buildTarget)\n        {\n            case BuildTarget.StandaloneWindows:\n            case BuildTarget.StandaloneWindows64:\n            case BuildTarget.WSAPlayer:\n                return true;\n            default:\n                return false;\n        }\n    }\n\n    static BuildTargetGroup ToBuildTargetGroup(BuildTarget buildTarget)\n    {\n#pragma warning disable CS0618\n        switch (buildTarget)\n        {\n            case BuildTarget.StandaloneOSX:\n            case (BuildTarget)3:\n            case BuildTarget.StandaloneOSXIntel:\n            case BuildTarget.StandaloneOSXIntel64:\n            case BuildTarget.StandaloneWindows:\n            case BuildTarget.StandaloneWindows64:\n            case BuildTarget.StandaloneLinux:\n            case BuildTarget.StandaloneLinux64:\n            case BuildTarget.StandaloneLinuxUniversal:\n                return BuildTargetGroup.Standalone;\n            case (BuildTarget)6:\n            case (BuildTarget)7:\n            case BuildTarget.WebGL:\n                return BuildTargetGroup.WebGL;\n            case BuildTarget.iOS:\n                return BuildTargetGroup.iOS;\n            case BuildTarget.PS3:\n                return BuildTargetGroup.PS3;\n            case BuildTarget.PS4:\n                return BuildTargetGroup.PS4;\n            case BuildTarget.XBOX360:\n                return BuildTargetGroup.XBOX360;\n            case BuildTarget.Android:\n                return BuildTargetGroup.Android;\n            case BuildTarget.WSAPlayer:\n                return BuildTargetGroup.WSA;\n            case BuildTarget.WP8Player:\n                return BuildTargetGroup.WP8;\n            case BuildTarget.Tizen:\n                return BuildTargetGroup.Tizen;\n            case BuildTarget.PSP2:\n                return BuildTargetGroup.PSP2;\n            case BuildTarget.PSM:\n                return BuildTargetGroup.PSM;\n            case BuildTarget.XboxOne:\n                return BuildTargetGroup.XboxOne;\n            case BuildTarget.SamsungTV:\n                return BuildTargetGroup.SamsungTV;\n            case BuildTarget.N3DS:\n                return BuildTargetGroup.N3DS;\n            case BuildTarget.WiiU:\n                return BuildTargetGroup.WiiU;\n            case BuildTarget.tvOS:\n                return BuildTargetGroup.tvOS;\n            case BuildTarget.Switch:\n                return BuildTargetGroup.Switch;\n            case BuildTarget.Lumin:\n                return BuildTargetGroup.Lumin;\n            case BuildTarget.BlackBerry:\n                return BuildTargetGroup.BlackBerry;\n            case BuildTarget.NoTarget:\n            default:\n                return BuildTargetGroup.Unknown;\n        }\n#pragma warning restore CS0618\n\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/Editor/UnitTestBuilder.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 3518da33b6245d341a0ef3670ee9268b\ntimeCreated: 1488689723\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 959c1472a5d812843bedf9341e87af3b\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/RuntimeUnitTestToolkit.asmdef",
    "content": "{\n    \"name\": \"RuntimeUnitTestToolkit\",\n    \"references\": [\n    ],\n    \"optionalUnityReferences\": [\n        \"TestAssemblies\"\n    ],\n    \"includePlatforms\": [],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false,\n    \"overrideReferences\": false,\n    \"precompiledReferences\": [],\n    \"autoReferenced\": true,\n    \"defineConstraints\": [],\n    \"versionDefines\": []\n}"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/RuntimeUnitTestToolkit.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 14c4fea4b238088479114ba2ffe195f9\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/UnitTestRunner.cs",
    "content": "﻿using NUnit.Framework;\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing UnityEngine;\nusing UnityEngine.Events;\nusing UnityEngine.TestTools;\nusing UnityEngine.UI;\n\nnamespace RuntimeUnitTestToolkit\n{\n    public class UnitTestRunner : MonoBehaviour\n    {\n        // object is IEnumerator or Func<IEnumerator>\n        Dictionary<string, List<TestKeyValuePair>> tests = new Dictionary<string, List<TestKeyValuePair>>();\n\n        List<Pair> additionalActionsOnFirst = new List<Pair>();\n\n        public Button clearButton;\n        public RectTransform list;\n        public Scrollbar listScrollBar;\n\n        public Text logText;\n        public Scrollbar logScrollBar;\n\n        readonly Color passColor = new Color(0f, 1f, 0f, 1f); // green\n        readonly Color failColor = new Color(1f, 0f, 0f, 1f); // red\n        readonly Color normalColor = new Color(1f, 1f, 1f, 1f); // white\n\n        bool allTestGreen = true;\n\n        void Start()\n        {\n            try\n            {\n                UnityEngine.Application.logMessageReceived += (a, b, c) =>\n                {\n                    logText.text += \"[\" + c + \"]\" + a + \"\\n\";\n                };\n\n                // register all test types\n                foreach (var item in GetTestTargetTypes())\n                {\n                    RegisterAllMethods(item);\n                }\n\n                var executeAll = new List<Func<Coroutine>>();\n                foreach (var ___item in tests)\n                {\n                    var actionList = ___item; // be careful, capture in lambda\n\n                    executeAll.Add(() => StartCoroutine(RunTestInCoroutine(actionList)));\n                    Add(actionList.Key, () => StartCoroutine(RunTestInCoroutine(actionList)));\n                }\n\n                var executeAllButton = Add(\"Run All Tests\", () => StartCoroutine(ExecuteAllInCoroutine(executeAll)));\n\n                clearButton.gameObject.GetComponent<Image>().color = new Color(170 / 255f, 170 / 255f, 170 / 255f, 1);\n                executeAllButton.gameObject.GetComponent<Image>().color = new Color(250 / 255f, 150 / 255f, 150 / 255f, 1);\n                executeAllButton.transform.SetSiblingIndex(1);\n\n                additionalActionsOnFirst.Reverse();\n                foreach (var item in additionalActionsOnFirst)\n                {\n                    var newButton = GameObject.Instantiate(clearButton);\n                    newButton.name = item.Name;\n                    newButton.onClick.RemoveAllListeners();\n                    newButton.GetComponentInChildren<Text>().text = item.Name;\n                    newButton.onClick.AddListener(item.Action);\n                    newButton.transform.SetParent(list);\n                    newButton.transform.SetSiblingIndex(1);\n                }\n\n                clearButton.onClick.AddListener(() =>\n                {\n                    logText.text = \"\";\n                    foreach (var btn in list.GetComponentsInChildren<Button>())\n                    {\n                        btn.interactable = true;\n                        btn.GetComponent<Image>().color = normalColor;\n                    }\n                    executeAllButton.gameObject.GetComponent<Image>().color = new Color(250 / 255f, 150 / 255f, 150 / 255f, 1);\n                });\n\n                listScrollBar.value = 1;\n                logScrollBar.value = 1;\n\n                if (Application.isBatchMode)\n                {\n                    // run immediately in player\n                    StartCoroutine(ExecuteAllInCoroutine(executeAll));\n                }\n            }\n            catch (Exception ex)\n            {\n                if (Application.isBatchMode)\n                {\n                    // when failed(can not start runner), quit immediately.\n                    WriteToConsole(ex.ToString());\n                    Application.Quit(1);\n                }\n                else\n                {\n                    throw;\n                }\n            }\n        }\n\n        Button Add(string title, UnityAction test)\n        {\n            var newButton = GameObject.Instantiate(clearButton);\n            newButton.name = title;\n            newButton.onClick.RemoveAllListeners();\n            newButton.GetComponentInChildren<Text>().text = title;\n            newButton.onClick.AddListener(test);\n\n            newButton.transform.SetParent(list);\n            return newButton;\n        }\n\n        static IEnumerable<Type> GetTestTargetTypes()\n        {\n            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())\n            {\n                var n = assembly.FullName;\n                if (n.StartsWith(\"UnityEngine\")) continue;\n                if (n.StartsWith(\"mscorlib\")) continue;\n                if (n.StartsWith(\"System\")) continue;\n\n                foreach (var item in assembly.GetTypes())\n                {\n                    foreach (var method in item.GetMethods())\n                    {\n                        TestAttribute t1 = null;\n                        try\n                        {\n                            t1 = method.GetCustomAttribute<TestAttribute>(true);\n                        }\n                        catch (Exception ex)\n                        {\n                            Debug.Log(\"TestAttribute Load Fail, Assembly:\" + assembly.FullName);\n                            Debug.LogException(ex);\n                            goto NEXT_ASSEMBLY;\n                        }\n                        if (t1 != null)\n                        {\n                            yield return item;\n                            break;\n                        }\n\n                        UnityTestAttribute t2 = null;\n                        try\n                        {\n                            t2 = method.GetCustomAttribute<UnityTestAttribute>(true);\n                        }\n                        catch (Exception ex)\n                        {\n                            Debug.Log(\"UnityTestAttribute Load Fail, Assembly:\" + assembly.FullName);\n                            Debug.LogException(ex);\n                            goto NEXT_ASSEMBLY;\n                        }\n                        if (t2 != null)\n                        {\n                            yield return item;\n                            break;\n                        }\n                    }\n                }\n\n                NEXT_ASSEMBLY:\n                continue;\n            }\n        }\n\n        public void AddTest(string group, string title, Action test, List<Action> setups, List<Action> teardowns)\n        {\n            List<TestKeyValuePair> list;\n            if (!tests.TryGetValue(group, out list))\n            {\n                list = new List<TestKeyValuePair>();\n                tests[group] = list;\n            }\n\n            list.Add(new TestKeyValuePair(title, test, setups, teardowns));\n        }\n\n        public void AddAsyncTest(string group, string title, Func<IEnumerator> asyncTestCoroutine, List<Action> setups, List<Action> teardowns)\n        {\n            List<TestKeyValuePair> list;\n            if (!tests.TryGetValue(group, out list))\n            {\n                list = new List<TestKeyValuePair>();\n                tests[group] = list;\n            }\n\n            list.Add(new TestKeyValuePair(title, asyncTestCoroutine, setups, teardowns));\n        }\n\n        public void AddCutomAction(string name, UnityAction action)\n        {\n            additionalActionsOnFirst.Add(new Pair { Name = name, Action = action });\n        }\n\n\n        public void RegisterAllMethods<T>()\n            where T : new()\n        {\n            RegisterAllMethods(typeof(T));\n        }\n\n        public void RegisterAllMethods(Type testType)\n        {\n            try\n            {\n                var test = Activator.CreateInstance(testType);\n\n                var methods = testType.GetMethods(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);\n                List<Action> setups = new List<Action>();\n                List<Action> teardowns = new List<Action>();\n                foreach (var item in methods)\n                {\n                    try\n                    {\n                        var setup = item.GetCustomAttribute<NUnit.Framework.SetUpAttribute>(true);\n                        if (setup != null)\n                        {\n                            setups.Add((Action)Delegate.CreateDelegate(typeof(Action), test, item));\n                        }\n                        var teardown = item.GetCustomAttribute<NUnit.Framework.TearDownAttribute>(true);\n                        if (teardown != null)\n                        {\n                            teardowns.Add((Action)Delegate.CreateDelegate(typeof(Action), test, item));\n                        }\n                    }\n                    catch (Exception e)\n                    {\n                        UnityEngine.Debug.LogError(testType.Name + \".\" + item.Name + \" failed to register setup/teardown method, exception: \" + e.ToString());\n                    }\n                }\n\n                foreach (var item in methods)\n                {\n                    try\n                    {\n                        var iteratorTest = item.GetCustomAttribute<UnityEngine.TestTools.UnityTestAttribute>(true);\n                        if (iteratorTest != null)\n                        {\n                            if (item.GetParameters().Length == 0 && item.ReturnType == typeof(IEnumerator))\n                            {\n                                var factory = (Func<IEnumerator>)Delegate.CreateDelegate(typeof(Func<IEnumerator>), test, item);\n                                AddAsyncTest(factory.Target.GetType().Name, factory.Method.Name, factory, setups, teardowns);\n                            }\n                            else\n                            {\n                                UnityEngine.Debug.Log(testType.Name + \".\" + item.Name + \" currently does not supported in RuntumeUnitTestToolkit(multiple parameter or return type is invalid).\");\n                            }\n                        }\n\n                        var standardTest = item.GetCustomAttribute<NUnit.Framework.TestAttribute>(true);\n                        if (standardTest != null)\n                        {\n                            if (item.GetParameters().Length == 0 && item.ReturnType == typeof(void))\n                            {\n                                var invoke = (Action)Delegate.CreateDelegate(typeof(Action), test, item);\n                                AddTest(invoke.Target.GetType().Name, invoke.Method.Name, invoke, setups, teardowns);\n                            }\n                            else\n                            {\n                                UnityEngine.Debug.Log(testType.Name + \".\" + item.Name + \" currently does not supported in RuntumeUnitTestToolkit(multiple parameter or return type is invalid).\");\n                            }\n                        }\n                    }\n                    catch (Exception e)\n                    {\n                        UnityEngine.Debug.LogError(testType.Name + \".\" + item.Name + \" failed to register method, exception: \" + e.ToString());\n                    }\n                }\n            }\n            catch (Exception ex)\n            {\n                Debug.LogException(ex);\n            }\n        }\n\n        System.Collections.IEnumerator ScrollLogToEndNextFrame()\n        {\n            yield return null;\n            yield return null;\n            logScrollBar.value = 0;\n        }\n\n        IEnumerator RunTestInCoroutine(KeyValuePair<string, List<TestKeyValuePair>> actionList)\n        {\n            Button self = null;\n            foreach (var btn in list.GetComponentsInChildren<Button>())\n            {\n                btn.interactable = false;\n                if (btn.name == actionList.Key) self = btn;\n            }\n            if (self != null)\n            {\n                self.GetComponent<Image>().color = normalColor;\n            }\n\n            var allGreen = true;\n\n            logText.text += \"<color=yellow>\" + actionList.Key + \"</color>\\n\";\n            WriteToConsole(\"Begin Test Class: \" + actionList.Key);\n            yield return null;\n\n            var totalExecutionTime = new List<double>();\n            foreach (var item2 in actionList.Value)\n            {\n                // setup\n                try\n                {\n                    foreach (var setup in item2.Setups)\n                    {\n                        setup();\n                    }\n\n                    // before start, cleanup\n                    GC.Collect();\n                    GC.WaitForPendingFinalizers();\n                    GC.Collect();\n\n                    logText.text += \"<color=teal>\" + item2.Key + \"</color>\\n\";\n                    yield return null;\n\n                    var v = item2.Value;\n\n                    var methodStopwatch = System.Diagnostics.Stopwatch.StartNew();\n                    Exception exception = null;\n                    if (v is Action)\n                    {\n                        try\n                        {\n                            ((Action)v).Invoke();\n                        }\n                        catch (Exception ex)\n                        {\n                            exception = ex;\n                        }\n                    }\n                    else\n                    {\n                        var coroutineFactory = (Func<IEnumerator>)v;\n                        IEnumerator coroutine = null;\n                        try\n                        {\n                            coroutine = coroutineFactory();\n                        }\n                        catch (Exception ex)\n                        {\n                            exception = ex;\n                        }\n                        if (exception == null)\n                        {\n                            yield return StartCoroutine(UnwrapEnumerator(coroutine, ex =>\n                            {\n                                exception = ex;\n                            }));\n                        }\n                    }\n                    methodStopwatch.Stop();\n                    totalExecutionTime.Add(methodStopwatch.Elapsed.TotalMilliseconds);\n                    if (exception == null)\n                    {\n                        logText.text += \"OK, \" + methodStopwatch.Elapsed.TotalMilliseconds.ToString(\"0.00\") + \"ms\\n\";\n                        WriteToConsoleResult(item2.Key + \", \" + methodStopwatch.Elapsed.TotalMilliseconds.ToString(\"0.00\") + \"ms\", true);\n                    }\n                    else\n                    {\n                        // found match line...\n                        var line = string.Join(\"\\n\", exception.StackTrace.Split('\\n').Where(x => x.Contains(actionList.Key) || x.Contains(item2.Key)).ToArray());\n                        logText.text += \"<color=red>\" + exception.Message + \"\\n\" + line + \"</color>\\n\";\n                        WriteToConsoleResult(item2.Key + \", \" + exception.Message, false);\n                        WriteToConsole(line);\n                        allGreen = false;\n                        allTestGreen = false;\n                    }\n                }\n                finally\n                {\n                    foreach (var teardown in item2.Teardowns)\n                    {\n                        teardown();\n                    }\n                }\n            }\n\n            logText.text += \"[\" + actionList.Key + \"]\" + totalExecutionTime.Sum().ToString(\"0.00\") + \"ms\\n\\n\";\n            foreach (var btn in list.GetComponentsInChildren<Button>()) btn.interactable = true;\n            if (self != null)\n            {\n                self.GetComponent<Image>().color = allGreen ? passColor : failColor;\n            }\n\n            yield return StartCoroutine(ScrollLogToEndNextFrame());\n\n\n        }\n\n        IEnumerator ExecuteAllInCoroutine(List<Func<Coroutine>> tests)\n        {\n            allTestGreen = true;\n\n            foreach (var item in tests)\n            {\n                yield return item();\n            }\n\n            if (Application.isBatchMode)\n            {\n                var scene = UnityEngine.SceneManagement.SceneManager.GetActiveScene();\n                bool disableAutoClose = (scene.name.Contains(\"DisableAutoClose\"));\n\n                if (allTestGreen)\n                {\n                    WriteToConsole(\"Test Complete Successfully\");\n                    if (!disableAutoClose)\n                    {\n                        Application.Quit();\n                    }\n                }\n                else\n                {\n                    WriteToConsole(\"Test Failed, please see [NG] log.\");\n                    if (!disableAutoClose)\n                    {\n                        Application.Quit(1);\n                    }\n                }\n            }\n        }\n\n        IEnumerator UnwrapEnumerator(IEnumerator enumerator, Action<Exception> exceptionCallback)\n        {\n            var hasNext = true;\n            while (hasNext)\n            {\n                try\n                {\n                    hasNext = enumerator.MoveNext();\n                }\n                catch (Exception ex)\n                {\n                    exceptionCallback(ex);\n                    hasNext = false;\n                }\n\n                if (hasNext)\n                {\n                    // unwrap self for bug of Unity\n                    // https://issuetracker.unity3d.com/issues/does-not-stop-coroutine-when-it-throws-exception-in-movenext-at-first-frame\n                    var moreCoroutine = enumerator.Current as IEnumerator;\n                    if (moreCoroutine != null)\n                    {\n                        yield return StartCoroutine(UnwrapEnumerator(moreCoroutine, ex =>\n                        {\n                            exceptionCallback(ex);\n                            hasNext = false;\n                        }));\n                    }\n                    else\n                    {\n                        yield return enumerator.Current;\n                    }\n                }\n            }\n        }\n\n        static void WriteToConsole(string msg)\n        {\n            if (Application.isBatchMode)\n            {\n                Console.WriteLine(msg);\n            }\n        }\n\n        static void WriteToConsoleResult(string msg, bool green)\n        {\n            if (Application.isBatchMode)\n            {\n                if (!green)\n                {\n                    var currentForeground = Console.ForegroundColor;\n                    Console.ForegroundColor = ConsoleColor.Red;\n                    Console.Write(\"[NG]\");\n                    Console.ForegroundColor = currentForeground;\n                }\n                else\n                {\n                    var currentForeground = Console.ForegroundColor;\n                    Console.ForegroundColor = ConsoleColor.Green;\n                    Console.Write(\"[OK]\");\n                    Console.ForegroundColor = currentForeground;\n                }\n\n                System.Console.WriteLine(msg);\n            }\n        }\n\n        struct Pair\n        {\n            public string Name;\n            public UnityAction Action;\n        }\n    }\n\n    public class TestKeyValuePair\n    {\n        public string Key;\n        /// <summary>IEnumerator or Func[IEnumerator]</summary>\n        public object Value;\n        public List<Action> Setups;\n        public List<Action> Teardowns;\n\n        public TestKeyValuePair(string key, object value, List<Action> setups, List<Action> teardowns)\n        {\n            this.Key = key;\n            this.Value = value;\n            this.Setups = setups;\n            this.Teardowns = teardowns;\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/UnitTestRunner.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 660baed073888b8438569f57e42679b2\ntimeCreated: 1476793308\nlicenseType: Pro\nMonoImporter:\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/package.json",
    "content": "{\n    \"name\": \"jp.cysharp.runtimeunittesttoolkit\",\n    \"displayName\": \"RuntimeUnitTestToolkit\",\n    \"version\": \"2.0.0\",\n    \"unity\": \"2018.3\",\n    \"description\": \"CLI/GUI Frontend of Unity Test Runner to test on any platform.\",\n    \"keywords\": [\"test\"],\n    \"category\": \"Tests\",\n    \"dependencies\": {\n    }\n}"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit/package.json.meta",
    "content": "fileFormatVersion: 2\nguid: b7883c7ac5d6ea4409a229aeab14e796\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/RuntimeUnitTestToolkit.meta",
    "content": "fileFormatVersion: 2\nguid: 6c9e6151143a9bc46a2b2fa335fb32a1\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/Editor/Tests.meta",
    "content": "fileFormatVersion: 2\nguid: 7f65f81134f1f8f4c989fc46c56038cc\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: d3fd7a8a5b3721d4c8828fc5e62de2d7\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/Sandbox/SandboxScene.cs",
    "content": "﻿#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing UniRx;\nusing UnityEngine;\nusing UnityEngine.UI;\n\npublic class SandboxScene : MonoBehaviour\n{\n    public Button buttonA;\n    public Button buttonB;\n    // MyMyClass mc;\n    //ReactiveProperty<int> rp = new ReactiveProperty<int>();\n\n\n    //public async void Start()\n    //{\n    //    rp.Value = 10;\n\n    //    buttonA.onClick.AddListener(() =>\n    //    {\n    //        rp.Value = 99;\n    //    });\n\n    //    Debug.Log(\"Begin:\" + rp.Value);\n    //    var v= await rp;\n    //    Debug.Log(\"End:\" + v);\n    //}\n\n}\n\npublic class MyMyClass\n{\n    public int MyProperty { get; set; }\n\n    ~MyMyClass()\n    {\n        Debug.Log(\"GCed\");\n    }\n}\n\n#endif"
  },
  {
    "path": "Assets/Scripts/Sandbox/SandboxScene.cs.meta",
    "content": "fileFormatVersion: 2\nguid: f7de55096e6d49d418ac3eae9178f6c0\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/Sandbox/SandboxScene.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 3\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 0}\n  m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 1\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 0\n    m_EnableRealtimeLightmaps: 0\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 40\n    m_AtlasSize: 1024\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 500\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &91932906\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 91932907}\n  - component: {fileID: 91932910}\n  - component: {fileID: 91932909}\n  - component: {fileID: 91932908}\n  m_Layer: 5\n  m_Name: Button (1)\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &91932907\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 91932906}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1101587214}\n  m_Father: {fileID: 184152618}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -180, y: -137}\n  m_SizeDelta: {x: 160, y: 30}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &91932908\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 91932906}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}\n    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}\n    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}\n    m_ColorMultiplier: 1\n    m_FadeDuration: 0.1\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 91932909}\n  m_OnClick:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n--- !u!114 &91932909\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 91932906}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &91932910\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 91932906}\n--- !u!1 &184152614\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 184152618}\n  - component: {fileID: 184152617}\n  - component: {fileID: 184152616}\n  - component: {fileID: 184152615}\n  m_Layer: 5\n  m_Name: Canvas\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &184152615\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 184152614}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_IgnoreReversedGraphics: 1\n  m_BlockingObjects: 0\n  m_BlockingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n--- !u!114 &184152616\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 184152614}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_UiScaleMode: 0\n  m_ReferencePixelsPerUnit: 100\n  m_ScaleFactor: 1\n  m_ReferenceResolution: {x: 800, y: 600}\n  m_ScreenMatchMode: 0\n  m_MatchWidthOrHeight: 0\n  m_PhysicalUnit: 3\n  m_FallbackScreenDPI: 96\n  m_DefaultSpriteDPI: 96\n  m_DynamicPixelsPerUnit: 1\n--- !u!223 &184152617\nCanvas:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 184152614}\n  m_Enabled: 1\n  serializedVersion: 3\n  m_RenderMode: 0\n  m_Camera: {fileID: 0}\n  m_PlaneDistance: 100\n  m_PixelPerfect: 0\n  m_ReceivesEvents: 1\n  m_OverrideSorting: 0\n  m_OverridePixelPerfect: 0\n  m_SortingBucketNormalizedSize: 0\n  m_AdditionalShaderChannelsFlag: 0\n  m_SortingLayerID: 0\n  m_SortingOrder: 0\n  m_TargetDisplay: 0\n--- !u!224 &184152618\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 184152614}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 0, y: 0, z: 0}\n  m_Children:\n  - {fileID: 721626755}\n  - {fileID: 91932907}\n  m_Father: {fileID: 531250541}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 0, y: 0}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0, y: 0}\n--- !u!1 &531250540\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 531250541}\n  - component: {fileID: 531250542}\n  m_Layer: 0\n  m_Name: SceneRoot\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!4 &531250541\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 531250540}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -10}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1147138614}\n  - {fileID: 184152618}\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!114 &531250542\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 531250540}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: f7de55096e6d49d418ac3eae9178f6c0, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  buttonA: {fileID: 721626756}\n  buttonB: {fileID: 91932908}\n--- !u!1 &721626754\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 721626755}\n  - component: {fileID: 721626758}\n  - component: {fileID: 721626757}\n  - component: {fileID: 721626756}\n  m_Layer: 5\n  m_Name: Button\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &721626755\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 721626754}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1848545700}\n  m_Father: {fileID: 184152618}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 0.5}\n  m_AnchorMax: {x: 0.5, y: 0.5}\n  m_AnchoredPosition: {x: -219, y: 50}\n  m_SizeDelta: {x: 160, y: 30}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &721626756\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 721626754}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Navigation:\n    m_Mode: 3\n    m_SelectOnUp: {fileID: 0}\n    m_SelectOnDown: {fileID: 0}\n    m_SelectOnLeft: {fileID: 0}\n    m_SelectOnRight: {fileID: 0}\n  m_Transition: 1\n  m_Colors:\n    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}\n    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}\n    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}\n    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}\n    m_ColorMultiplier: 1\n    m_FadeDuration: 0.1\n  m_SpriteState:\n    m_HighlightedSprite: {fileID: 0}\n    m_PressedSprite: {fileID: 0}\n    m_DisabledSprite: {fileID: 0}\n  m_AnimationTriggers:\n    m_NormalTrigger: Normal\n    m_HighlightedTrigger: Highlighted\n    m_PressedTrigger: Pressed\n    m_DisabledTrigger: Disabled\n  m_Interactable: 1\n  m_TargetGraphic: {fileID: 721626757}\n  m_OnClick:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,\n      Culture=neutral, PublicKeyToken=null\n--- !u!114 &721626757\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 721626754}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 1, g: 1, b: 1, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}\n  m_Type: 1\n  m_PreserveAspect: 0\n  m_FillCenter: 1\n  m_FillMethod: 4\n  m_FillAmount: 1\n  m_FillClockwise: 1\n  m_FillOrigin: 0\n--- !u!222 &721626758\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 721626754}\n--- !u!1 &881587856\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 881587859}\n  - component: {fileID: 881587858}\n  - component: {fileID: 881587857}\n  m_Layer: 0\n  m_Name: EventSystem\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &881587857\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 881587856}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_HorizontalAxis: Horizontal\n  m_VerticalAxis: Vertical\n  m_SubmitButton: Submit\n  m_CancelButton: Cancel\n  m_InputActionsPerSecond: 10\n  m_RepeatDelay: 0.5\n  m_ForceModuleActive: 0\n--- !u!114 &881587858\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 881587856}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_FirstSelected: {fileID: 0}\n  m_sendNavigationEvents: 1\n  m_DragThreshold: 10\n--- !u!4 &881587859\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 881587856}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1101587213\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1101587214}\n  - component: {fileID: 1101587216}\n  - component: {fileID: 1101587215}\n  m_Layer: 5\n  m_Name: Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1101587214\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1101587213}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 91932907}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &1101587215\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1101587213}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 4\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Button\n--- !u!222 &1101587216\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1101587213}\n--- !u!1 &1147138610\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1147138614}\n  - component: {fileID: 1147138613}\n  - component: {fileID: 1147138612}\n  - component: {fileID: 1147138611}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &1147138611\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1147138610}\n  m_Enabled: 1\n--- !u!124 &1147138612\nBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1147138610}\n  m_Enabled: 1\n--- !u!20 &1147138613\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1147138610}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 1\n  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 60\n  orthographic: 1\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 1\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 0\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &1147138614\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1147138610}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 531250541}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1848545699\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1848545700}\n  - component: {fileID: 1848545702}\n  - component: {fileID: 1848545701}\n  m_Layer: 5\n  m_Name: Text\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &1848545700\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1848545699}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 721626755}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 0}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: 0}\n  m_SizeDelta: {x: 0, y: 0}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &1848545701\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1848545699}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}\n  m_RaycastTarget: 1\n  m_OnCullStateChanged:\n    m_PersistentCalls:\n      m_Calls: []\n    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,\n      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\n  m_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 14\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 10\n    m_MaxSize: 40\n    m_Alignment: 4\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: Button\n--- !u!222 &1848545702\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1848545699}\n"
  },
  {
    "path": "Assets/Scripts/Sandbox/SandboxScene.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 0da18e0c958224640849b321b54bb51d\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/Sandbox.meta",
    "content": "fileFormatVersion: 2\nguid: 7425cc42834f90e49ab66d1a44ccdb13\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/ChainingAssertion.Unity.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\n\nusing UnityEngine.Assertions; // use UnityEngineAssertion.\n\n// no namespace.\n\n[System.Diagnostics.DebuggerStepThroughAttribute]\npublic static partial class ChainingAssertion\n{\n    /// <summary>Assert.AreEqual, if T is IEnumerable then CollectionAssert.AreEqual</summary>\n    public static void Is<T>(this T actual, T expected, string message = \"\")\n    {\n        if (typeof(T) != typeof(string) && typeof(IEnumerable).IsAssignableFrom(typeof(T)))\n        {\n            ((IEnumerable)actual).Cast<object>().Is(((IEnumerable)expected).Cast<object>(), message);\n            return;\n        }\n        Assert.AreEqual(expected, actual, message);\n    }\n\n    /// <summary>Assert.IsTrue(expected(actual)).</summary>\n    public static void Is<T>(this T actual, Func<T, bool> expected, string message = \"\")\n    {\n        Assert.IsTrue(expected(actual), message);\n    }\n\n    /// <summary>CollectionAssert.AreEqual</summary>\n    public static void Is<T>(this IEnumerable<T> actual, params T[] expected)\n    {\n        Is(actual, expected.AsEnumerable());\n    }\n\n    /// <summary>CollectionAssert.AreEqual</summary>\n    public static void Is<T>(this IEnumerable<T> actual, IEnumerable<T> expected, string message = \"\")\n    {\n        NUnit.Framework.CollectionAssert.AreEqual(expected.ToArray(), actual.ToArray(), message);\n    }\n\n    /// <summary>CollectionAssert.AreEqual</summary>\n    public static void Is<T>(this IEnumerable<T> actual, IEnumerable<T> expected, IEqualityComparer<T> comparer, string message = \"\")\n    {\n        Is(actual, expected, comparer.Equals, message);\n    }\n\n    /// <summary>CollectionAssert.AreEqual</summary>\n    public static void Is<T>(this IEnumerable<T> actual, IEnumerable<T> expected, Func<T, T, bool> equalityComparison, string message = \"\")\n    {\n        NUnit.Framework.CollectionAssert.AreEqual(expected.ToArray(), actual.ToArray(), new ComparisonComparer<T>(equalityComparison), message);\n    }\n\n    /// <summary>Assert.AreNotEqual, if T is IEnumerable then CollectionAssert.AreNotEqual</summary>\n    public static void IsNot<T>(this T actual, T notExpected, string message = \"\")\n    {\n        if (typeof(T) != typeof(string) && typeof(IEnumerable).IsAssignableFrom(typeof(T)))\n        {\n            ((IEnumerable)actual).Cast<object>().IsNot(((IEnumerable)notExpected).Cast<object>(), message);\n            return;\n        }\n\n        Assert.AreNotEqual(notExpected, actual, message);\n    }\n\n    /// <summary>CollectionAssert.AreNotEqual</summary>\n    public static void IsNot<T>(this IEnumerable<T> actual, params T[] notExpected)\n    {\n        IsNot(actual, notExpected.AsEnumerable());\n    }\n\n    /// <summary>CollectionAssert.AreNotEqual</summary>\n    public static void IsNot<T>(this IEnumerable<T> actual, IEnumerable<T> notExpected, string message = \"\")\n    {\n        NUnit.Framework.CollectionAssert.AreNotEqual(notExpected.ToArray(), actual.ToArray(), message);\n    }\n\n    /// <summary>CollectionAssert.AreNotEqual</summary>\n    public static void IsNot<T>(this IEnumerable<T> actual, IEnumerable<T> notExpected, IEqualityComparer<T> comparer, string message = \"\")\n    {\n        IsNot(actual, notExpected, comparer.Equals, message);\n    }\n\n    /// <summary>CollectionAssert.AreNotEqual</summary>\n    public static void IsNot<T>(this IEnumerable<T> actual, IEnumerable<T> notExpected, Func<T, T, bool> equalityComparison, string message = \"\")\n    {\n        NUnit.Framework.CollectionAssert.AreNotEqual(notExpected.ToArray(), actual.ToArray(), new ComparisonComparer<T>(equalityComparison), message);\n    }\n\n    /// <summary>Assert.IsNull</summary>\n    public static void IsNull<T>(this T value, string message = \"\")\n        where T : class\n    {\n        Assert.IsNull(value, message);\n    }\n\n    /// <summary>Assert.IsNotNull</summary>\n    public static void IsNotNull<T>(this T value, string message = \"\")\n        where T : class\n    {\n        Assert.IsNotNull(value, message);\n    }\n\n    /// <summary>Assert.IsTrue</summary>\n    public static void IsTrue(this bool value, string message = \"\")\n    {\n        Assert.IsTrue(value, message);\n    }\n\n    /// <summary>Assert.IsFalse</summary>\n    public static void IsFalse(this bool value, string message = \"\")\n    {\n        Assert.IsFalse(value, message);\n    }\n\n    /// <summary>Assert.AreApproximatelyEqual</summary>\n    public static void IsApproximatelyEqual(this float actual, float expected, string message = \"\")\n    {\n        Assert.AreApproximatelyEqual(expected, actual, message);\n    }\n\n    /// <summary>Assert.AreApproximatelyEqual</summary>\n    public static void IsApproximatelyEqual(this float actual, float expected, float tolerance, string message = \"\")\n    {\n        Assert.AreApproximatelyEqual(expected, actual, tolerance, message);\n    }\n\n    /// <summary>Assert.AreApproximatelyEqual</summary>\n    public static void IsApproximatelyEqual(this double actual, float expected, string message = \"\")\n    {\n        Assert.AreApproximatelyEqual(expected, (float)actual, message);\n    }\n\n    /// <summary>Assert.AreApproximatelyEqual</summary>\n    public static void IsApproximatelyEqual(this double actual, float expected, float tolerance, string message = \"\")\n    {\n        Assert.AreApproximatelyEqual(expected, (float)actual, tolerance, message);\n    }\n\n    /// <summary>Assert.AreNotApproximatelyEqual</summary>\n    public static void IsNotApproximatelyEqual(this float actual, float expected, string message = \"\")\n    {\n        Assert.AreNotApproximatelyEqual(expected, actual, message);\n    }\n\n    /// <summary>Assert.AreNotApproximatelyEqual</summary>\n    public static void IsNotApproximatelyEqual(this float actual, float expected, float tolerance, string message = \"\")\n    {\n        Assert.AreNotApproximatelyEqual(expected, actual, tolerance, message);\n    }\n\n    /// <summary>Assert.AreSame</summary>\n    public static void IsSameReferenceAs<T>(this T actual, T expected, string message = \"\")\n    {\n        NUnit.Framework.Assert.AreSame(expected, actual, message);\n    }\n\n    /// <summary>Assert.AreNotSame</summary>\n    public static void IsNotSameReferenceAs<T>(this T actual, T notExpected, string message = \"\")\n    {\n        NUnit.Framework.Assert.AreNotSame(notExpected, actual, message);\n    }\n\n    /// <summary>Assert.IsInstanceOf</summary>\n    public static TExpected IsInstanceOf<TExpected>(this object value, string message = \"\")\n    {\n        NUnit.Framework.Assert.IsInstanceOf<TExpected>(value, message);\n        return (TExpected)value;\n    }\n\n    /// <summary>Assert.IsNotInstanceOf</summary>\n    public static void IsNotInstanceOf<TWrong>(this object value, string message = \"\")\n    {\n        NUnit.Framework.Assert.IsNotInstanceOf<TWrong>(value, message);\n    }\n\n    /// <summary>EqualityComparison to IComparer Converter for CollectionAssert</summary>\n    private class ComparisonComparer<T> : IComparer\n    {\n        readonly Func<T, T, bool> comparison;\n\n        public ComparisonComparer(Func<T, T, bool> comparison)\n        {\n            this.comparison = comparison;\n        }\n\n        public int Compare(object x, object y)\n        {\n            return (comparison != null)\n                ? comparison((T)x, (T)y) ? 0 : -1\n                : object.Equals(x, y) ? 0 : -1;\n        }\n    }\n\n\n    #region StructuralEqual\n\n    /// <summary>Assert by deep recursive value equality compare</summary>\n    public static void IsStructuralEqual(this object actual, object expected, string message = \"\")\n    {\n        message = (string.IsNullOrEmpty(message) ? \"\" : \", \" + message);\n        if (object.ReferenceEquals(actual, expected)) return;\n\n        if (actual == null) throw new AssertionException(\"actual is null\", message);\n        if (expected == null) throw new AssertionException(\"actual is not null\", message);\n        if (actual.GetType() != expected.GetType())\n        {\n            var msg = string.Format(\"expected type is {0} but actual type is {1}\",\n                expected.GetType().Name, actual.GetType().Name);\n            throw new AssertionException(msg, message);\n        }\n\n        var r = StructuralEqual(actual, expected, new[] { actual.GetType().Name }); // root type\n        if (!r.IsEquals)\n        {\n            var msg = string.Format(\"is not structural equal, failed at {0}, actual = {1} expected = {2}\",\n                string.Join(\".\", r.Names.ToArray()), r.Left, r.Right);\n            throw new AssertionException(msg, message);\n        }\n    }\n\n    /// <summary>Assert by deep recursive value equality compare</summary>\n    public static void IsNotStructuralEqual(this object actual, object expected, string message = \"\")\n    {\n        message = (string.IsNullOrEmpty(message) ? \"\" : \", \" + message);\n        if (object.ReferenceEquals(actual, expected)) throw new AssertionException(\"actual is same reference\", message);\n\n        if (actual == null) return;\n        if (expected == null) return;\n        if (actual.GetType() != expected.GetType())\n        {\n            return;\n        }\n\n        var r = StructuralEqual(actual, expected, new[] { actual.GetType().Name }); // root type\n        if (r.IsEquals)\n        {\n            throw new AssertionException(\"is structural equal\", message);\n        }\n    }\n\n    static EqualInfo SequenceEqual(IEnumerable leftEnumerable, IEnumerable rightEnumarable, IEnumerable<string> names)\n    {\n        var le = leftEnumerable.GetEnumerator();\n        using (le as IDisposable)\n        {\n            var re = rightEnumarable.GetEnumerator();\n\n            using (re as IDisposable)\n            {\n                var index = 0;\n                while (true)\n                {\n                    object lValue = null;\n                    object rValue = null;\n                    var lMove = le.MoveNext();\n                    var rMove = re.MoveNext();\n                    if (lMove) lValue = le.Current;\n                    if (rMove) rValue = re.Current;\n\n                    if (lMove && rMove)\n                    {\n                        var result = StructuralEqual(lValue, rValue, names.Concat(new[] { \"[\" + index + \"]\" }));\n                        if (!result.IsEquals)\n                        {\n                            return result;\n                        }\n                    }\n\n                    if ((lMove == true && rMove == false) || (lMove == false && rMove == true))\n                    {\n                        return new EqualInfo { IsEquals = false, Left = lValue, Right = rValue, Names = names.Concat(new[] { \"[\" + index + \"]\" }) };\n                    }\n                    if (lMove == false && rMove == false) break;\n                    index++;\n                }\n            }\n        }\n        return new EqualInfo { IsEquals = true, Left = leftEnumerable, Right = rightEnumarable, Names = names };\n    }\n\n    static EqualInfo StructuralEqual(object left, object right, IEnumerable<string> names)\n    {\n        // type and basic checks\n        if (object.ReferenceEquals(left, right)) return new EqualInfo { IsEquals = true, Left = left, Right = right, Names = names };\n        if (left == null || right == null) return new EqualInfo { IsEquals = false, Left = left, Right = right, Names = names };\n        var lType = left.GetType();\n        var rType = right.GetType();\n        if (lType != rType) return new EqualInfo { IsEquals = false, Left = left, Right = right, Names = names };\n\n        var type = left.GetType();\n\n        // not object(int, string, etc...)\n        if (Type.GetTypeCode(type) != TypeCode.Object)\n        {\n            return new EqualInfo { IsEquals = left.Equals(right), Left = left, Right = right, Names = names };\n        }\n\n        // is sequence\n        if (typeof(IEnumerable).IsAssignableFrom(type))\n        {\n            return SequenceEqual((IEnumerable)left, (IEnumerable)right, names);\n        }\n\n        // IEquatable<T>\n        var equatable = typeof(IEquatable<>).MakeGenericType(type);\n        if (equatable.IsAssignableFrom(type))\n        {\n            var result = (bool)equatable.GetMethod(\"Equals\").Invoke(left, new[] { right });\n            return new EqualInfo { IsEquals = result, Left = left, Right = right, Names = names };\n        }\n\n        // is object\n        var fields = left.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public);\n        var properties = left.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public).Where(x => x.GetGetMethod(false) != null);\n        var members = fields.Cast<MemberInfo>().Concat(properties.Cast<MemberInfo>());\n\n        foreach (var mi in members)\n        {\n            var concatNames = names.Concat(new[] { (string)mi.Name });\n\n            object lv;\n            object rv;\n\n            if (mi is FieldInfo)\n            {\n                var i = mi as FieldInfo;\n                lv = i.GetValue(left);\n                rv = i.GetValue(right);\n            }\n            else\n            {\n                var i = mi as PropertyInfo;\n                lv = i.GetValue(left, null);\n                rv = i.GetValue(right, null);\n            }\n\n            var result = StructuralEqual(lv, rv, concatNames);\n            if (!result.IsEquals)\n            {\n                return result;\n            }\n        }\n\n        return new EqualInfo { IsEquals = true, Left = left, Right = right, Names = names };\n    }\n\n    private class EqualInfo\n    {\n        public object Left;\n        public object Right;\n        public bool IsEquals;\n        public IEnumerable<string> Names;\n    }\n\n    #endregion\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/ChainingAssertion.Unity.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 81054c60d397a9640a1b6d61319eb12f\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/AggregateTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests.Operators\n{\n    \n    public class AggregateTest\n    {\n        [Test]\n        public void Scan()\n        {\n            var range = Observable.Range(1, 5);\n\n            range.Scan((x, y) => x + y).ToArrayWait().Is(1, 3, 6, 10, 15);\n            range.Scan(100, (x, y) => x + y).ToArrayWait().Is(101, 103, 106, 110, 115);\n\n            Observable.Empty<int>().Scan((x, y) => x + y).ToArrayWait().Is();\n            Observable.Empty<int>().Scan(100, (x, y) => x + y).ToArrayWait().Is();\n        }\n\n        [Test]\n        public void Aggregate()\n        {\n            Assert.Throws<InvalidOperationException>(() => Observable.Empty<int>().Aggregate((x, y) => x + y).Wait());\n            Observable.Range(1, 5).Aggregate((x, y) => x + y).Wait().Is(15);\n\n            Observable.Empty<int>().Aggregate(100, (x, y) => x + y).Wait().Is(100);\n            Observable.Range(1, 5).Aggregate(100, (x, y) => x + y).Wait().Is(115);\n\n            Observable.Empty<int>().Aggregate(100, (x, y) => x + y, x => x + x).Wait().Is(200);\n            Observable.Range(1, 5).Aggregate(100, (x, y) => x + y, x => x + x).Wait().Is(230);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/AggregateTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: cbacaf61f1b5e6e4f89dc335b7293ea0\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ContinueWithTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests.Operators\n{\n\n    public class ContinueWithTest\n    {\n        [SetUp]\n        public void Init()\n        {\n            TestUtil.SetScehdulerForImport();\n        }\n\n        [TearDown]\n        public void Dispose()\n        {\n            UniRx.Scheduler.SetDefaultForUnity();\n        }\n\n        [Test]\n        public void ContinueWith()\n        {\n            var subject = new Subject<int>();\n\n            var record = subject.ContinueWith(x => Observable.Return(x)).Record();\n\n            subject.OnNext(10);\n            record.Values.Count.Is(0);\n\n            subject.OnNext(100);\n            record.Values.Count.Is(0);\n\n            subject.OnCompleted();\n            record.Values[0].Is(100);\n            record.Notifications.Last().Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ContinueWith2()\n        {\n            var subject = new Subject<int>();\n\n            var record = subject.ContinueWith(x => Observable.Return(x).Delay(TimeSpan.FromMilliseconds(100))).Record();\n\n            subject.OnNext(10);\n            record.Values.Count.Is(0);\n\n            subject.OnNext(100);\n            record.Values.Count.Is(0);\n\n            subject.OnCompleted();\n            Thread.Sleep(TimeSpan.FromMilliseconds(500));\n            record.Values[0].Is(100);\n            record.Notifications.Last().Kind.Is(NotificationKind.OnCompleted);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ContinueWithTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d74abeae248dfb94e85a6632574af0bd\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ConversionTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests.Operators\n{\n    \n    public class ConversionTest\n    {\n        [Test]\n        public void AsObservable()\n        {\n            Observable.Range(1, 10).AsObservable().ToArrayWait().Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n\n        [Test]\n        public void AsUnitObservable()\n        {\n            Observable.Range(1, 3).AsUnitObservable().ToArrayWait().Is(Unit.Default, Unit.Default, Unit.Default);\n        }\n\n        [Test]\n        public void ToObservable()\n        {\n            Enumerable.Range(1, 3).ToObservable(Scheduler.CurrentThread).ToArrayWait().Is(1, 2, 3);\n            Enumerable.Range(1, 3).ToObservable(Scheduler.ThreadPool).ToArrayWait().Is(1, 2, 3);\n            Enumerable.Range(1, 3).ToObservable(Scheduler.Immediate).ToArrayWait().Is(1, 2, 3);\n        }\n\n        [Test]\n        public void Cast()\n        {\n            Observable.Range(1, 3).Cast<int, object>().ToArrayWait().Is(1, 2, 3);\n        }\n\n        [Test]\n        public void OfType()\n        {\n            var subject = new Subject<object>();\n\n            var list = new List<int>();\n            subject.OfType(default(int)).Subscribe(x => list.Add(x));\n\n            subject.OnNext(1);\n            subject.OnNext(2);\n            subject.OnNext(\"hogehoge\");\n            subject.OnNext(3);\n\n            list.Is(1, 2, 3);\n        }\n\n        [Test]\n        public void AsSingleUnitObservable()\n        {\n            var subject = new Subject<int>();\n\n            var done = false;\n            subject.AsSingleUnitObservable().Subscribe(_ => done = true);\n\n            subject.OnNext(1);\n            done.IsFalse();\n            subject.OnNext(100);\n            done.IsFalse();\n            subject.OnCompleted();\n            done.IsTrue();\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ConversionTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a7185929da9688c4ca779f4cd0ce29db\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/DisposableTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests\n{\n    \n    public class DisposableTest\n    {\n        [Test]\n        public void SingleAssignment()\n        {\n            var d = new SingleAssignmentDisposable();\n            d.IsDisposed.IsFalse();\n            var id1 = new IdDisp(1);\n            var id2 = new IdDisp(2);\n            var id3 = new IdDisp(3);\n\n            // dispose first\n            d.Dispose();\n            d.IsDisposed.IsTrue();\n\n            d.Disposable = id1; id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // normal flow\n            d = new SingleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n\n            d.Disposable = id1; id1.IsDisposed.IsFalse();\n            d.Dispose();\n            id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // exception flow\n            d = new SingleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n            d.Disposable = id1;\n            Assert.Catch<InvalidOperationException>(() => d.Disposable = id2);\n\n            // null\n            d = new SingleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            d.Disposable = null;\n            d.Dispose();\n            d.Disposable = null;\n        }\n\n        [Test]\n        public void MultipleAssignment()\n        {\n            var d = new MultipleAssignmentDisposable();\n            d.IsDisposed.IsFalse();\n            var id1 = new IdDisp(1);\n            var id2 = new IdDisp(2);\n            var id3 = new IdDisp(3);\n\n            // dispose first\n            d.Dispose();\n            d.IsDisposed.IsTrue();\n\n            d.Disposable = id1; id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // normal flow\n            d = new MultipleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n\n            d.Disposable = id1; id1.IsDisposed.IsFalse();\n            d.Dispose();\n            id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // exception flow\n            d = new MultipleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n            d.Disposable = id1;\n            d.Disposable = id2;\n            d.Disposable = id3;\n            d.Dispose();\n            id1.IsDisposed.IsFalse();\n            id2.IsDisposed.IsFalse();\n            id3.IsDisposed.IsTrue();\n\n            // null\n            d = new MultipleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            d.Disposable = null;\n            d.Dispose();\n            d.Disposable = null;\n        }\n\n        [Test]\n        public void Serial()\n        {\n            var d = new SerialDisposable();\n            d.IsDisposed.IsFalse();\n            var id1 = new IdDisp(1);\n            var id2 = new IdDisp(2);\n            var id3 = new IdDisp(3);\n\n            // dispose first\n            d.Dispose();\n            d.IsDisposed.IsTrue();\n\n            d.Disposable = id1; id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // normal flow\n            d = new SerialDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n\n            d.Disposable = id1; id1.IsDisposed.IsFalse();\n            d.Dispose();\n            id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // exception flow\n            d = new SerialDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n            d.Disposable = id1;\n            id1.IsDisposed.IsFalse();\n            d.Disposable = id2;\n            id1.IsDisposed.IsTrue();\n            id2.IsDisposed.IsFalse();\n            d.Disposable = id3;\n            id2.IsDisposed.IsTrue();\n            id3.IsDisposed.IsFalse();\n\n            d.Dispose();\n            \n            id3.IsDisposed.IsTrue();\n\n            // null\n            d = new SerialDisposable();\n            id1 = new IdDisp(1);\n            d.Disposable = null;\n            d.Dispose();\n            d.Disposable = null;\n        }\n\n        [Test]\n        public void Boolean()\n        {\n            var bd = new BooleanDisposable();\n            bd.IsDisposed.IsFalse();\n            bd.Dispose();\n            bd.IsDisposed.IsTrue();\n        }\n\n\n        class IdDisp : IDisposable\n        {\n            public bool IsDisposed { get; set; }\n            public int Id { get; set; }\n\n            public IdDisp(int id)\n            {\n                this.Id = id;\n            }\n\n\n            public void Dispose()\n            {\n                IsDisposed = true;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/DisposableTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 77c9a94735312c74b8fa1c25bcc99215\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/DoTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests.Operators\n{\n    \n    public class DoTest\n    {\n        class ListObserver : IObserver<int>\n        {\n            public List<int> list = new List<int>();\n\n            public void OnCompleted()\n            {\n                list.Add(1000);\n            }\n\n            public void OnError(Exception error)\n            {\n                list.Add(100);\n            }\n\n            public void OnNext(int value)\n            {\n                list.Add(value);\n            }\n        }\n\n        [Test]\n        public void Do()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>().Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000)).DefaultIfEmpty().Wait();\n            list.Is(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000)).Wait();\n            list.Is(1, 2, 3, 4, 5, 1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000)).Subscribe(_ => { }, _ => { }, () => { });\n            list.Is(1, 2, 3, 4, 5, 100);\n        }\n\n        [Test]\n        public void DoObserver()\n        {\n            var observer = new ListObserver();\n            Observable.Empty<int>().Do(observer).DefaultIfEmpty().Wait();\n            observer.list.Is(1000);\n\n            observer = new ListObserver();\n            Observable.Range(1, 5).Do(observer).Wait();\n            observer.list.Is(1, 2, 3, 4, 5, 1000);\n\n            observer = new ListObserver();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).Do(observer).Subscribe(_ => { }, _ => { }, () => { });\n            observer.list.Is(1, 2, 3, 4, 5, 100);\n        }\n\n        [Test]\n        public void DoOnError()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>().DoOnError(_ => list.Add(100)).DefaultIfEmpty().Wait();\n            list.Is();\n\n            list.Clear();\n            Observable.Range(1, 5).DoOnError(_ => list.Add(100)).Wait();\n            list.Is();\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).DoOnError(_ => list.Add(100)).Subscribe(_ => { }, _ => { }, () => { });\n            list.Is(100);\n        }\n\n        [Test]\n        public void DoOnCompleted()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>().DoOnCompleted(() => list.Add(1000)).DefaultIfEmpty().Wait();\n            list.Is(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).DoOnCompleted(() => list.Add(1000)).Wait();\n            list.Is(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).DoOnCompleted(() => list.Add(1000)).Subscribe(_ => { }, _ => { }, () => { });\n            list.Is();\n        }\n\n        [Test]\n        public void DoOnTerminate()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>().DoOnTerminate(() => list.Add(1000)).DefaultIfEmpty().Wait();\n            list.Is(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).DoOnTerminate(() => list.Add(1000)).Wait();\n            list.Is(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).DoOnTerminate(() => list.Add(1000)).Subscribe(_ => { }, _ => { }, () => { });\n            list.Is(1000);\n        }\n\n        [Test]\n        public void DoOnSubscribe()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>()\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnSubscribe(() => list.Add(10000)).DefaultIfEmpty().Wait();\n            list.Is(10000, 1000);\n\n            list.Clear();\n            Observable.Range(1, 5)\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnSubscribe(() => list.Add(10000)).Wait();\n            list.Is(10000, 1, 2, 3, 4, 5, 1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception()))\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnSubscribe(() => list.Add(10000)).Subscribe(_ => { }, _ => { }, () => { });\n            list.Is(10000, 1, 2, 3, 4, 5, 100);\n        }\n\n        [Test]\n        public void DoOnCancel()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>()\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnCancel(() => list.Add(5000))\n                .DoOnCancel(() => list.Add(10000))\n                .DefaultIfEmpty()\n                .Subscribe(_ => { }, _ => { }, () => { });\n            list.Is(1000);\n\n            list.Clear();\n            Observable.Throw<int>(new Exception())\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnCancel(() => list.Add(5000))\n                .DoOnCancel(() => list.Add(10000))\n                .DefaultIfEmpty()\n                .Subscribe(_ => { }, _ => { }, () => { });\n            list.Is(100);\n\n            list.Clear();\n            var subscription = Observable.Timer(TimeSpan.FromMilliseconds(1000)).Select(x => (int)x)\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnCancel(() => list.Add(5000))\n                .DoOnCancel(() => list.Add(10000))\n                .Subscribe();\n            subscription.Dispose();\n            list.Is(5000, 10000);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/DoTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 5310b559edac5674489f9dc0e4fcedc9\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/DurabilityTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing NUnit.Framework;\n\nnamespace UniRx.Operators\n{\n    \n    public class DurabilityTest\n    {\n        public delegate void LikeUnityAction();\n        public delegate void LikeUnityAction<T0>(T0 arg0);\n\n        public class MyEventArgs : EventArgs\n        {\n            public int MyProperty { get; set; }\n\n            public MyEventArgs(int x)\n            {\n                this.MyProperty = x;\n            }\n        }\n\n        public class EventTester\n        {\n            public EventHandler<MyEventArgs> genericEventHandler;\n            public LikeUnityAction unityAction;\n            public LikeUnityAction<int> intUnityAction;\n            public Action<int> intAction;\n            public Action unitAction;\n\n            public void Fire(int x)\n            {\n                if (genericEventHandler != null)\n                {\n                    genericEventHandler.Invoke(this, new MyEventArgs(x));\n                }\n                else if (unityAction != null)\n                {\n                    unityAction();\n                }\n                else if (intUnityAction != null)\n                {\n                    intUnityAction(x);\n                }\n                else if (intAction != null)\n                {\n                    intAction.Invoke(x);\n                }\n                else if (unitAction != null)\n                {\n                    unitAction.Invoke();\n                }\n            }\n        }\n\n        [Test]\n        public void FromEventPattern()\n        {\n            var tester = new EventTester();\n\n            {\n                var list = new List<int>();\n                var d = Observable.FromEventPattern<EventHandler<MyEventArgs>, MyEventArgs>((h) => h.Invoke, h => tester.genericEventHandler += h, h => tester.genericEventHandler -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(xx.EventArgs.MyProperty);\n                        Observable.Return(xx.EventArgs.MyProperty)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(x));\n                    });\n\n                try { tester.Fire(5); } catch { }\n                try { tester.Fire(1); } catch { }\n                try { tester.Fire(10); } catch { }\n\n                list.Is(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n        }\n\n        [Test]\n        public void FromEventUnityLike()\n        {\n            var tester = new EventTester();\n\n            {\n                var list = new List<int>();\n                var d = Observable.FromEvent<LikeUnityAction<int>, int>(h => new LikeUnityAction<int>(h), h => tester.intUnityAction += h, h => tester.intUnityAction -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(xx);\n                        Observable.Return(xx)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(x));\n                    });\n\n                try { tester.Fire(5); } catch { }\n                try { tester.Fire(1); } catch { }\n                try { tester.Fire(10); } catch { }\n\n                list.Is(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n\n            {\n                var i = 0;\n                var list = new List<int>();\n                var d = Observable.FromEvent<LikeUnityAction>(h => new LikeUnityAction(h), h => tester.unityAction += h, h => tester.unityAction -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(i);\n                        Observable.Return(i)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(i));\n                    });\n\n                try { i = 5; tester.Fire(5); } catch { }\n                try { i = 1; tester.Fire(1); } catch { }\n                try { i = 10; tester.Fire(10); } catch { }\n\n                list.Is(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n        }\n\n        [Test]\n        public void FromEventUnity()\n        {\n            var tester = new EventTester();\n\n            {\n                var list = new List<int>();\n                var d = Observable.FromEvent<int>(h => tester.intAction += h, h => tester.intAction -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(xx);\n                        Observable.Return(xx)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(x));\n                    });\n\n                try { tester.Fire(5); } catch { }\n                try { tester.Fire(1); } catch { }\n                try { tester.Fire(10); } catch { }\n\n                list.Is(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n\n            {\n                var i = 0;\n                var list = new List<int>();\n                var d = Observable.FromEvent(h => tester.unitAction += h, h => tester.unitAction -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(i);\n                        Observable.Return(i)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(i));\n                    });\n\n                try { i = 5; tester.Fire(5); } catch { }\n                try { i = 1; tester.Fire(1); } catch { }\n                try { i = 10; tester.Fire(10); } catch { }\n\n                list.Is(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n        }\n\n        [Test]\n        public void Durability()\n        {\n            {\n                var s1 = new Subject<int>();\n\n                var list = new List<int>();\n                var d = s1.Subscribe(xx =>\n                {\n                    list.Add(xx);\n                    Observable.Return(xx)\n                        .Do(x => { if (x == 1) throw new Exception(); })\n                        .Subscribe(x => list.Add(x));\n                });\n\n                try { s1.OnNext(5); } catch { }\n                try { s1.OnNext(1); } catch { }\n                try { s1.OnNext(10); } catch { }\n\n                list.Is(5, 5, 1, 10, 10);\n                d.Dispose();\n                s1.OnNext(1000);\n                list.Count.Is(5);\n            }\n            {\n                var s1 = new Subject<int>();\n\n                var list = new List<int>();\n                var d = s1.Select(x => x).Take(1000).Subscribe(xx =>\n                {\n                    list.Add(xx);\n                    Observable.Return(xx)\n                        .Do(x => { if (x == 1) throw new Exception(); })\n                        .Subscribe(x => list.Add(x));\n                });\n\n                try { s1.OnNext(5); } catch { }\n                try { s1.OnNext(1); } catch { }\n                try { s1.OnNext(10); } catch { }\n\n                list.Is(5, 5, 1, 10, 10);\n                d.Dispose();\n                s1.OnNext(1000);\n                list.Count.Is(5);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/DurabilityTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: bc1cb895ec13ce84b8eb497b2323a035\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/MicroCoroutineTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Reflection;\n\nnamespace UniRx.Tests\n{\n    class DecrementEnumerator : IEnumerator\n    {\n        readonly int original;\n        int count;\n\n        public DecrementEnumerator(int count)\n        {\n            this.original = count;\n            this.count = count;\n        }\n\n        public object Current\n        {\n            get\n            {\n                return null;\n            }\n        }\n        public int OriginalCount { get { return original; } }\n\n        public int Count { get { return count; } }\n\n        public bool MoveNext()\n        {\n            return count-- > 0;\n        }\n\n        public void Reset()\n        {\n            throw new NotSupportedException();\n        }\n\n        public override string ToString()\n        {\n            return count + \"/\" + \"original\";\n        }\n    }\n\n    \n    public class MicroCoroutineTest\n    {\n        static UniRx.InternalUtil.MicroCoroutine Create()\n        {\n            return new InternalUtil.MicroCoroutine(ex => Console.WriteLine(ex));\n        }\n\n        static int FindLast(UniRx.InternalUtil.MicroCoroutine mc)\n        {\n            var coroutines = mc.GetType().GetField(\"coroutines\", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);\n            var enumerators = (IEnumerator[])coroutines.GetValue(mc);\n\n            int tail = -1;\n            for (int i = 0; i < enumerators.Length; i++)\n            {\n                if (enumerators[i] == null)\n                {\n                    if (tail == -1)\n                    {\n                        tail = i;\n                    }\n                }\n                else\n                {\n                    if (tail != -1)\n                    {\n                        throw new Exception(\"what's happen?\");\n                    }\n                }\n            }\n\n            if (tail == -1) tail = enumerators.Length;\n            return tail;\n        }\n\n        static int GetTailDynamic(UniRx.InternalUtil.MicroCoroutine mc)\n        {\n            var tail = mc.GetType().GetField(\"tail\", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);\n            return (int)tail.GetValue(mc);\n        }\n\n        [Test]\n        public void EnumerationCycle()\n        {\n            var coroutines = new[]\n            {\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(2),\n                new DecrementEnumerator(3),\n                new DecrementEnumerator(4),\n                new DecrementEnumerator(5),\n            };\n\n            var mc = Create();\n            foreach (var item in coroutines)\n            {\n                mc.AddCoroutine(item);\n            }\n\n            mc.Run();\n            GetTailDynamic(mc).Is(5);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(0, 1, 2, 3, 4);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(4);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(-1, 0, 1, 2, 3);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(3);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(-1, -1, 0, 1, 2);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(2);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(-1, -1, -1, 0, 1);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(1);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(-1, -1, -1, -1, 0);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(0);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(-1, -1, -1, -1, -1);\n        }\n\n        [Test]\n        public void EnumerationCycleBlank()\n        {\n            var coroutines = new[]\n            {\n                new DecrementEnumerator(0),\n                new DecrementEnumerator(0),\n                new DecrementEnumerator(0),\n                new DecrementEnumerator(0),\n                new DecrementEnumerator(0),\n            };\n\n            var mc = Create();\n            foreach (var item in coroutines)\n            {\n                mc.AddCoroutine(item);\n            }\n\n            GetTailDynamic(mc).Is(5);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(0);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(-1, -1, -1, -1, -1);\n        }\n\n        [Test]\n        public void EnumerationCycleFull()\n        {\n            var coroutines = new[]\n            {\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n            };\n\n            var mc = Create();\n            foreach (var item in coroutines)\n            {\n                mc.AddCoroutine(item);\n            }\n\n            GetTailDynamic(mc).Is(16);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(16);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(0);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);\n        }\n\n        [Test]\n        public void EnumerationCycleRandom()\n        {\n            // pattern for shuffle\n            var rand = new System.Random();\n            // large number\n            {\n                for (int i = 0; i < 1000; i++)\n                {\n                    var expectedTail = rand.Next(1, 100);\n\n                    var coroutines = Enumerable.Range(1, expectedTail)\n                        .Select(x => new DecrementEnumerator(rand.Next(0, 100)))\n                        .ToArray();\n\n                    var mc = Create();\n                    foreach (var item in coroutines)\n                    {\n                        mc.AddCoroutine(item);\n                    }\n\n                    var maxRunCount = coroutines.Max(x => x.OriginalCount);\n                    var expected = coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).ToArray();\n\n\n\n                    for (int j = 0; j < maxRunCount + 1; j++)\n                    {\n                        mc.Run();\n\n                        // validate\n                        expected = expected.Select(x => (x == -1) ? -1 : (x - 1)).ToArray();\n                        coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(expected);\n\n                        var tail = FindLast(mc);\n                        GetTailDynamic(mc).Is(tail);\n                    }\n                    GetTailDynamic(mc).Is(0);\n                }\n            }\n            {\n                // small case\n                for (int i = 0; i < 1000; i++)\n                {\n                    var expectedTail = rand.Next(1, 100);\n\n                    var coroutines = Enumerable.Range(1, expectedTail)\n                        .Select(x => new DecrementEnumerator(rand.Next(0, 5)))\n                        .ToArray();\n\n                    var mc = Create();\n                    foreach (var item in coroutines)\n                    {\n                        mc.AddCoroutine(item);\n                    }\n\n                    var maxRunCount = coroutines.Max(x => x.OriginalCount);\n                    var expected = coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).ToArray();\n\n                    for (int j = 0; j < maxRunCount + 1; j++)\n                    {\n                        mc.Run();\n\n                        // validate\n                        expected = expected.Select(x => (x == -1) ? -1 : (x - 1)).ToArray();\n                        coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(expected);\n\n                        var tail = FindLast(mc);\n                        GetTailDynamic(mc).Is(tail);\n                    }\n                    GetTailDynamic(mc).Is(0);\n                }\n            }\n            {\n                // small case2\n                for (int i = 0; i < 1000; i++)\n                {\n                    var expectedTail = rand.Next(1, 10);\n\n                    var coroutines = Enumerable.Range(1, expectedTail)\n                        .Select(x => new DecrementEnumerator(rand.Next(0, 5)))\n                        .ToArray();\n\n                    var mc = Create();\n                    foreach (var item in coroutines)\n                    {\n                        mc.AddCoroutine(item);\n                    }\n\n                    var maxRunCount = coroutines.Max(x => x.OriginalCount);\n                    var expected = coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).ToArray();\n\n                    for (int j = 0; j < maxRunCount + 1; j++)\n                    {\n                        mc.Run();\n\n                        // validate\n                        expected = expected.Select(x => (x == -1) ? -1 : (x - 1)).ToArray();\n                        coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).Is(expected);\n\n                        var tail = FindLast(mc);\n                        GetTailDynamic(mc).Is(tail);\n                    }\n                    GetTailDynamic(mc).Is(0);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/MicroCoroutineTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d1580223991d88a429cb28730160ba70\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.ConcatTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace UniRx.Tests\n{\n    \n    public class ObservableConcatTest\n    {\n        [Test]\n        public void Concat()\n        {\n            var a = Observable.Range(1, 5, Scheduler.ThreadPool);\n            var b = Observable.Range(10, 3, Scheduler.ThreadPool);\n            var c = Observable.Return(300, Scheduler.ThreadPool);\n\n            Observable.Concat(a, b, c).ToArray().Wait().Is(1, 2, 3, 4, 5, 10, 11, 12, 300);\n        }\n\n        [Test]\n        public void Zip()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.Zip(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(1); // OnNext\n\n            a.OnNext(1001);\n            l.Count.Is(1);\n\n            b.OnNext(5);\n            l.Count.Is(2); // Completed!\n\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void Zip2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.Zip(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(1); // OnNext\n\n            b.OnCompleted(); // Completed!\n\n            l.Count.Is(2); // Completed!\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ZipMulti()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.Zip(a, b).Select(xs => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(1); // OnNext\n\n            a.OnNext(1001);\n            l.Count.Is(1);\n\n            b.OnNext(5);\n            l.Count.Is(2); // Completed!\n\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ZipMulti2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.Zip(a, b).Select(xs => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(1); // OnNext\n\n            b.OnCompleted(); // Completed!\n\n            l.Count.Is(2); // Completed!\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ZipNth()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n            var c = new Subject<int>();\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0, z = 0 })).ToList();\n            Observable.Zip(a, b, c, (x, y, z) => new { x, y, z }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            c.OnNext(3000);\n\n            l.Count.Is(1); // OnNext\n\n            a.OnCompleted();\n\n            b.OnNext(1001);\n            l.Count.Is(1);\n\n            b.OnCompleted();\n            l.Count.Is(1);\n\n            c.OnCompleted();\n            l.Count.Is(2); // Completed!\n\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void WhenAll()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.WhenAll(a, b).Select(xs => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            a.OnNext(1500);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(0);\n\n            a.OnNext(1001);\n            l.Count.Is(0);\n\n            b.OnNext(5);\n            b.OnCompleted();\n\n            l.Count.Is(2); // Completed!\n\n            l[0].Value.x.Is(1500);\n            l[0].Value.y.Is(5);\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void CombineLatest()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.CombineLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l[1].Value.Is(new { x = 1000, y = 3000 });\n\n            a.OnNext(5000);\n            l[2].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnCompleted();\n            l.Count.Is(3);\n\n            a.OnNext(1001);\n            l.Count.Is(3);\n\n            b.OnNext(5);\n            l[3].Value.Is(new { x = 5000, y = 5 });\n            b.OnNext(500);\n            l[4].Value.Is(new { x = 5000, y = 500 });\n\n            b.OnCompleted();\n            l[5].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void CombineLatest2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.CombineLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnNext(2000);\n            a.OnCompleted();\n\n            l.Count.Is(0);\n\n            b.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void CombineLatest3()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.CombineLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(2000);\n            b.OnCompleted();\n\n            l.Count.Is(0);\n\n            a.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void CombineLatest4()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.CombineLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnCompleted();\n            l.Count.Is(0);\n\n            a.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void CombineLatestMulti()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.CombineLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l[1].Value.Is(new { x = 1000, y = 3000 });\n\n            a.OnNext(5000);\n            l[2].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnCompleted();\n            l.Count.Is(3);\n\n            a.OnNext(1001);\n            l.Count.Is(3);\n\n            b.OnNext(5);\n            l[3].Value.Is(new { x = 5000, y = 5 });\n            b.OnNext(500);\n            l[4].Value.Is(new { x = 5000, y = 500 });\n\n            b.OnCompleted();\n            l[5].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void CombineLatestMulti2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.CombineLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnNext(2000);\n            a.OnCompleted();\n\n            l.Count.Is(0);\n\n            b.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void CombineLatestMulti3()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.CombineLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(2000);\n            b.OnCompleted();\n\n            l.Count.Is(0);\n\n            a.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void CombineLatestMulti4()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.CombineLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnCompleted();\n            l.Count.Is(0);\n\n            a.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ZipLatest()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.ZipLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l.Count.Is(1);\n\n            a.OnNext(5000);\n            l[1].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnCompleted();\n            l.Count.Is(2);\n\n            a.OnNext(1001);\n            l.Count.Is(2);\n\n            b.OnNext(5);\n            l.Count.Is(3);\n            l[2].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ZipLatest2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.ZipLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l.Count.Is(1);\n\n            a.OnNext(5000);\n            l[1].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnNext(9999); // one more\n\n            a.OnCompleted();\n            l.Count.Is(2);\n\n            a.OnNext(1001);\n            l.Count.Is(2);\n\n            b.OnNext(5);\n            l.Count.Is(4);\n            l[2].Value.Is(new { x = 9999, y = 5 });\n            l[3].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ZipLatest2Ex()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.ZipLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnNext(2000);\n            a.OnCompleted();\n\n            l.Count.Is(0);\n\n            b.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ZipLatestMulti()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.ZipLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l.Count.Is(1);\n\n            a.OnNext(5000);\n            l[1].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnCompleted();\n            l.Count.Is(2);\n\n            b.OnNext(5);\n            l[2].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ZipLatestMulti2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.ZipLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l.Count.Is(1);\n\n            a.OnNext(5000);\n            l[1].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnNext(900);\n            a.OnCompleted();\n            l.Count.Is(2);\n\n            b.OnNext(5);\n            l[2].Value.Is(new { x = 900, y = 5 });\n            l[3].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ZipLatestNth()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n            var c = new Subject<int>();\n            var d = new Subject<int>();\n\n            var record = a.ZipLatest(b, c, d, (x, y, z, w) => new { x, y, z, w }).Record();\n\n            a.OnNext(1);\n            b.OnNext(2);\n            c.OnNext(3);\n            record.Values.Count.Is(0);\n\n            d.OnNext(4);\n            record.Values[0].Is(new { x = 1, y = 2, z = 3, w = 4 });\n\n            a.OnNext(10);\n            record.Values.Count.Is(1);\n\n            b.OnNext(20);\n            c.OnNext(30);\n            d.OnNext(40);\n\n            record.Values[1].Is(new { x = 10, y = 20, z = 30, w = 40 });\n\n            // complete\n            a.OnCompleted();\n            record.Notifications.Count.Is(2);\n\n            b.OnNext(200);\n            record.Notifications.Count.Is(3);\n            record.Notifications.Last().Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void WithLatestFrom()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var record = a.WithLatestFrom(b, (x, y) => new { x, y }).Record();\n\n            b.OnNext(0); // 50\n            b.OnNext(1); // 100\n            a.OnNext(0); // 140\n            b.OnNext(2); // 150\n            b.OnNext(3); // 200\n            b.OnNext(4); // 250\n            a.OnNext(1); // 280\n            b.OnNext(5); // 300\n            b.OnNext(6); // 350\n            b.OnNext(7); // 400\n            a.OnNext(2); // 420\n            b.OnNext(8); // 450\n            b.OnNext(9); // 500\n            b.OnNext(10); // 550\n            a.OnNext(3); // 600\n\n            record.Values.Is(\n                new { x = 0, y = 1 },\n                new { x = 1, y = 4 },\n                new { x = 2, y = 7 },\n                new { x = 3, y = 10 });\n\n            a.OnCompleted();\n            record.Notifications.Last().Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void StartWith()\n        {\n            var seq = Observable.Range(1, 5);\n\n            seq.StartWith(100).ToArray().Wait().Is(100, 1, 2, 3, 4, 5);\n            seq.StartWith(() => 100).ToArray().Wait().Is(100, 1, 2, 3, 4, 5);\n            seq.StartWith(100, 1000, 10000).ToArray().Wait().Is(100, 1000, 10000, 1, 2, 3, 4, 5);\n            seq.StartWith(Enumerable.Range(100, 3)).ToArray().Wait().Is(100, 101, 102, 1, 2, 3, 4, 5);\n\n            seq.StartWith(Scheduler.ThreadPool, 100).ToArray().Wait().Is(100, 1, 2, 3, 4, 5);\n            seq.StartWith(Scheduler.ThreadPool, 100, 1000, 10000).ToArray().Wait().Is(100, 1000, 10000, 1, 2, 3, 4, 5);\n            seq.StartWith(Scheduler.ThreadPool, Enumerable.Range(100, 3)).ToArray().Wait().Is(100, 101, 102, 1, 2, 3, 4, 5);\n        }\n\n        [Test]\n        public void Merge()\n        {\n            var s1 = new Subject<int>();\n            var s2 = new Subject<int>();\n            var s3 = new Subject<int>();\n\n            var list = new List<int>();\n            var complete = false;\n            Observable.Merge(s1, s2, s3).Subscribe(list.Add, () => complete = true);\n\n            s1.OnNext(10);\n            s1.OnNext(20);\n            s3.OnNext(100);\n            s2.OnNext(50);\n\n            list.Is(10, 20, 100, 50);\n\n            list.Clear();\n\n            s2.OnCompleted();\n\n            s3.OnNext(500);\n            complete.IsFalse();\n            s1.OnCompleted();\n            s3.OnCompleted();\n            complete.IsTrue();\n        }\n\n\n        [Test]\n        public void MergeConcurrent()\n        {\n            var s1 = new Subject<int>();\n            var s2 = new Subject<int>();\n            var s3 = new Subject<int>();\n\n            var list = new List<int>();\n            var complete = false;\n            Observable.Merge(new[] { s1, s2, s3 }, maxConcurrent: 2).Subscribe(list.Add, () => complete = true);\n\n            s1.OnNext(10);\n            s1.OnNext(20);\n            s3.OnNext(100); // in queue\n            s2.OnNext(50);\n\n            list.Is(10, 20, 50);\n\n            list.Clear();\n\n            s2.OnCompleted();\n\n            s3.OnNext(500); // dequeued\n            list.Is(500);\n            complete.IsFalse();\n\n            s1.OnCompleted();\n            s3.OnCompleted();\n            complete.IsTrue();\n        }\n\n        [Test]\n        public void Switch()\n        {\n            var source = new Subject<IObservable<int>>();\n\n            var list = new List<int>();\n            source.Switch().Subscribe(list.Add);\n\n            var s1 = new Subject<int>();\n            source.OnNext(s1);\n\n            s1.OnNext(100);\n            s1.OnNext(2000);\n\n            var s2 = new Subject<int>();\n            s1.HasObservers.IsTrue();\n            source.OnNext(s2);\n            s1.OnNext(3000); // do nothing\n            s1.HasObservers.IsFalse();\n\n            s2.OnNext(5000);\n\n            source.OnCompleted();\n\n            s2.OnNext(900000);\n\n            list.Is(100, 2000, 5000, 900000);\n            s2.OnCompleted();\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.ConcatTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 772d534c22c1ac245b362c6bac82b730\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.ConcurrencyTest.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing NUnit.Framework;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n\n    public class ObservableConcurrencyTest\n    {\n        [SetUp]\n        public void Init()\n        {\n            TestUtil.SetScehdulerForImport();\n        }\n\n        [TearDown]\n        public void Dispose()\n        {\n            UniRx.Scheduler.SetDefaultForUnity();\n        }\n\n        [Test]\n        public void ObserveOnTest()\n        {\n            Init();\n\n            var xs = Observable.Range(1, 10)\n                .ObserveOn(Scheduler.ThreadPool)\n                .ToArrayWait();\n\n            xs.OrderBy(x => x).Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n\n            var s = new Subject<int>();\n\n            var list = new List<Notification<int>>();\n            s.ObserveOn(Scheduler.Immediate).Materialize().Subscribe(list.Add);\n\n            s.OnError(new Exception());\n\n            list[0].Kind.Is(NotificationKind.OnError);\n\n            s = new Subject<int>();\n            s.ObserveOn(Scheduler.Immediate).Materialize().Subscribe(list.Add);\n\n            s.OnCompleted();\n            list[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void AmbTest()\n        {\n            var xs = Observable.Return(10).Delay(TimeSpan.FromSeconds(1), Scheduler.ThreadPool).Concat(Observable.Range(1, 3));\n            var ys = Observable.Return(30).Delay(TimeSpan.FromSeconds(2), Scheduler.ThreadPool).Concat(Observable.Range(5, 3));\n\n            // win left\n            var result = xs.Amb(ys).ToArray().Wait();\n\n            result[0].Is(10);\n            result[1].Is(1);\n            result[2].Is(2);\n            result[3].Is(3);\n\n            // win right\n            result = ys.Amb(xs).ToArray().Wait();\n\n            result[0].Is(10);\n            result[1].Is(1);\n            result[2].Is(2);\n            result[3].Is(3);\n        }\n\n        [Test]\n        public void AmbMultiTest()\n        {\n            var xs = Observable.Return(10).Delay(TimeSpan.FromSeconds(5), Scheduler.ThreadPool).Concat(Observable.Range(1, 3));\n            var ys = Observable.Return(30).Delay(TimeSpan.FromSeconds(1), Scheduler.ThreadPool).Concat(Observable.Range(5, 3));\n            var zs = Observable.Return(50).Delay(TimeSpan.FromSeconds(3), Scheduler.ThreadPool).Concat(Observable.Range(9, 3));\n\n            // win center\n            var result = Observable.Amb(xs, ys, zs).ToArray().Wait();\n\n            result[0].Is(30);\n            result[1].Is(5);\n            result[2].Is(6);\n            result[3].Is(7);\n\n            // win first\n            result = Observable.Amb(new[] { ys, xs, zs }.AsEnumerable()).ToArray().Wait();\n\n            result[0].Is(30);\n            result[1].Is(5);\n            result[2].Is(6);\n            result[3].Is(7);\n\n            // win last\n            result = Observable.Amb(new[] { zs, xs, ys }.AsEnumerable()).ToArray().Wait();\n\n            result[0].Is(30);\n            result[1].Is(5);\n            result[2].Is(6);\n            result[3].Is(7);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.ConcurrencyTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: b1df3b1fe14c8754cb94038d27845063\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.ErrorHandlingTest.cs",
    "content": "﻿using NUnit.Framework;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Tests\n{\n    \n    public class ErrorHandlingTest\n    {\n        [Test]\n        public void Finally()\n        {\n            var called = false;\n            try\n            {\n                Observable.Range(1, 10, Scheduler.Immediate)\n                    .Do(x => { throw new Exception(); })\n                    .Finally(() => called = true)\n                    .Subscribe();\n            }\n            catch\n            {\n            }\n            finally\n            {\n                called.IsTrue();\n            }\n        }\n\n        [Test]\n        public void Catch()\n        {\n            var xs = Observable.Return(2, Scheduler.ThreadPool).Concat(Observable.Throw<int>(new InvalidOperationException()))\n                .Catch((InvalidOperationException ex) =>\n                {\n                    return Observable.Range(1, 3);\n                })\n                .ToArrayWait();\n\n            xs.Is(2, 1, 2, 3);\n        }\n\n        [Test]\n        public void CatchEnumerable()\n        {\n            {\n                var xs = new[]\n                {\n                    Observable.Return(2).Concat(Observable.Throw<int>(new Exception())),\n                    Observable.Return(99).Concat(Observable.Throw<int>(new Exception())),\n                    Observable.Range(10,2)\n                }\n                .Catch()\n                .Materialize()\n                .ToArrayWait();\n\n                xs[0].Value.Is(2);\n                xs[1].Value.Is(99);\n                xs[2].Value.Is(10);\n                xs[3].Value.Is(11);\n                xs[4].Kind.Is(NotificationKind.OnCompleted);\n            }\n            {\n                var xs = new[]\n                {\n                    Observable.Return(2).Concat(Observable.Throw<int>(new Exception())),\n                    Observable.Return(99).Concat(Observable.Throw<int>(new Exception()))\n                }\n                .Catch()\n                .Materialize()\n                .ToArrayWait();\n\n                xs[0].Value.Is(2);\n                xs[1].Value.Is(99);\n                xs[2].Kind.Is(NotificationKind.OnError);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.ErrorHandlingTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 6b8096a91b7cae74c8d58d182f4eaa65\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.Events.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace UniRx.Tests\n{\n    \n    public class ObservableEventsTest\n    {\n        class EventTestesr\n        {\n            public event EventHandler Event1;\n            public event EventHandler<MyEventArgs> Event2;\n            public event MyEventHandler Event3;\n            public event Action Event4;\n            public event Action<int> Event5;\n            public event Action<int, string> Event6;\n\n            public void Fire(int num)\n            {\n                switch (num)\n                {\n                    case 1:\n                        if (Event1 == null) return;\n                        Event1(this, new EventArgs());\n                        break;\n                    case 2:\n                        if (Event2 == null) return;\n                        Event2(this, new MyEventArgs());\n                        break;\n                    case 3:\n                        if (Event3 == null) return;\n                        Event3(this, new MyEventArgs());\n                        break;\n                    case 4:\n                        if (Event4 == null) return;\n                        Event4();\n                        break;\n                    case 5:\n                        if (Event5 == null) return;\n                        Event5(100);\n                        break;\n                    case 6:\n                        if (Event6 == null) return;\n                        Event6(100, \"hogehoge\");\n                        break;\n                    default:\n                        break;\n                }\n            }\n        }\n\n        delegate void MyEventHandler(object sender, MyEventArgs eventArgs);\n\n        class MyEventArgs : EventArgs\n        {\n\n        }\n\n\n        [Test]\n        public void FromEventPattern()\n        {\n            var test = new EventTestesr();\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEventPattern<EventHandler, EventArgs>(\n                    h => h.Invoke,\n                    h => test.Event1 += h, h => test.Event1 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(1);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(1);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEventPattern<EventHandler<MyEventArgs>, MyEventArgs>(\n                    h => h.Invoke,\n                    h => test.Event2 += h, h => test.Event2 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(2);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(2);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEventPattern<MyEventHandler, MyEventArgs>(\n                    h => h.Invoke,\n                    h => test.Event3 += h, h => test.Event3 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(3);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(3);\n                isRaised.IsFalse();\n            }\n        }\n\n        [Test]\n        public void FromEvent()\n        {\n            var test = new EventTestesr();\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<EventHandler, EventArgs>(\n                    h => (sender, e) => h.Invoke(e),\n                    h => test.Event1 += h, h => test.Event1 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(1);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(1);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<EventHandler<MyEventArgs>, MyEventArgs>(\n                    h => (sender, e) => h.Invoke(e),\n                    h => test.Event2 += h, h => test.Event2 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(2);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(2);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<MyEventHandler, MyEventArgs>(\n                    h => (sender, e) => h.Invoke(e),\n                    h => test.Event3 += h, h => test.Event3 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(3);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(3);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<Action, Unit>(\n                    h => () => h(Unit.Default),\n                    h => test.Event4 += h, h => test.Event4 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(4);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(4);\n                isRaised.IsFalse();\n            }\n\n            // shortcut\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent(\n                    h => test.Event4 += h, h => test.Event4 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(4);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(4);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<Action<int>, int>(\n                    h => h,\n                    h => test.Event5 += h, h => test.Event5 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(5);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(5);\n                isRaised.IsFalse();\n            }\n\n            // shortcut\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<int>(\n                    h => test.Event5 += h, h => test.Event5 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(5);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(5);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<Action<int, string>, Tuple<int, string>>(\n                    h => (x, y) => h(Tuple.Create(x, y)),\n                    h => test.Event6 += h, h => test.Event6 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(6);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(6);\n                isRaised.IsFalse();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.Events.cs.meta",
    "content": "fileFormatVersion: 2\nguid: d1c4a931085847642ae48d60564c07ec\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.GeneratorTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections.Generic;\n\nnamespace UniRx.Tests\n{\n    \n    public class ObservableGeneratorTest\n    {\n        [SetUp]\n        public void Init()\n        {\n            TestUtil.SetScehdulerForImport();\n        }\n\n        [TearDown]\n        public void Dispose()\n        {\n            UniRx.Scheduler.SetDefaultForUnity();\n        }\n        [Test]\n        public void Empty()\n        {\n            var material = Observable.Empty<Unit>().Materialize().ToArray().Wait();\n            material.Is(Notification.CreateOnCompleted<Unit>());\n        }\n\n        [Test]\n        public void Never()\n        {\n            Assert.Catch<TimeoutException>(() =>\n                Observable.Never<Unit>().Materialize().ToArray().Wait(TimeSpan.FromMilliseconds(10)));\n        }\n\n        [Test]\n        public void Return()\n        {\n            Observable.Return(100).Materialize().ToArray().Wait().Is(Notification.CreateOnNext(100), Notification.CreateOnCompleted<int>());\n        }\n\n        [Test]\n        public void Range()\n        {\n            Observable.Range(1, 5).ToArray().Wait().Is(1, 2, 3, 4, 5);\n        }\n\n        [Test]\n        public void Repeat()\n        {\n            var xs = Observable.Range(1, 3, Scheduler.CurrentThread)\n                .Concat(Observable.Return(100))\n                .Repeat()\n                .Take(10)\n                .ToArray()\n                .Wait();\n            xs.Is(1, 2, 3, 100, 1, 2, 3, 100, 1, 2);\n            Observable.Repeat(100).Take(5).ToArray().Wait().Is(100, 100, 100, 100, 100);\n        }\n\n        [Test]\n        public void Repeat2()\n        {\n            Observable.Repeat(\"a\", 5, Scheduler.Immediate).ToArrayWait().Is(\"a\", \"a\", \"a\", \"a\", \"a\");\n        }\n\n        [Test]\n        public void RepeatStatic()\n        {\n            var xss = Observable.Repeat(5, 3).ToArray().Wait();\n            xss.Is(5, 5, 5);\n        }\n\n        [Test]\n        public void ToObservable()\n        {\n            {\n                var msgs = new List<string>();\n                new[] { 1, 10, 100, 1000, 10000, 20000 }.ToObservable(Scheduler.CurrentThread)\n                    .Do(i => msgs.Add(\"DO:\" + i))\n                    .Scan((x, y) =>\n                    {\n                        if (y == 100) throw new Exception(\"exception\");\n                        msgs.Add(\"x:\" + x + \" y:\" + y);\n                        return x + y;\n                    })\n                    .Subscribe(x => msgs.Add(x.ToString()), e => msgs.Add(e.Message), () => msgs.Add(\"comp\"));\n\n                msgs.Is(\"DO:1\", \"1\", \"DO:10\", \"x:1 y:10\", \"11\", \"DO:100\", \"exception\");\n            }\n\n            {\n                var msgs = new List<string>();\n                new[] { 1, 10, 100, 1000, 10000, 20000 }.ToObservable(Scheduler.Immediate)\n                    .Do(i => msgs.Add(\"DO:\" + i))\n                    .Scan((x, y) =>\n                    {\n                        if (y == 100) throw new Exception(\"exception\");\n                        msgs.Add(\"x:\" + x + \" y:\" + y);\n                        return x + y;\n                    })\n                    .Subscribe(x => msgs.Add(x.ToString()), e => msgs.Add(e.Message), () => msgs.Add(\"comp\"));\n\n                msgs.Is(\"DO:1\", \"1\", \"DO:10\", \"x:1 y:10\", \"11\", \"DO:100\", \"exception\",\n                    \"DO:1000\", \"x:11 y:1000\",\n                    \"DO:10000\", \"x:1011 y:10000\",\n                    \"DO:20000\", \"x:11011 y:20000\"\n                    );\n            }\n        }\n\n        [Test]\n        public void Throw()\n        {\n            var ex = new Exception();\n            Observable.Throw<string>(ex).Materialize().ToArray().Wait().Is(Notification.CreateOnError<string>(ex));\n        }\n\n        [Test]\n        public void OptimizeReturnTest()\n        {\n            for (int i = -1; i <= 9; i++)\n            {\n                var r = Observable.Return(i);\n                var xs = r.Record();\n                xs.Values[0].Is(i);\n                r.GetType().FullName.Contains(\"ImmutableReturnInt32Observable\").IsTrue();\n            }\n            foreach (var i in new[] { -2, 10, 100 })\n            {\n                var r = Observable.Return(i);\n                r.Record().Values[0].Is(i);\n                r.GetType().FullName.Contains(\"ImmediateReturnObservable\").IsTrue();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.GeneratorTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2bce999e74da21446950972f216fa0f9\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.PagingTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections.Generic;\nusing UniRx;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n\n    public class ObservablePagingTest\n    {\n        [SetUp]\n        public void Init()\n        {\n            TestUtil.SetScehdulerForImport();\n        }\n\n        [TearDown]\n        public void Dispose()\n        {\n            UniRx.Scheduler.SetDefaultForUnity();\n        }\n        [Test]\n        public void Buffer()\n        {\n            var xs = Observable.Range(1, 10)\n                .Buffer(3)\n                .ToArray()\n                .Wait();\n            xs[0].Is(1, 2, 3);\n            xs[1].Is(4, 5, 6);\n            xs[2].Is(7, 8, 9);\n            xs[3].Is(10);\n        }\n\n        [Test]\n        public void BufferTime()\n        {\n            var hoge = Observable.Return(1000).Delay(TimeSpan.FromSeconds(4));\n\n            var xs = Observable.Range(1, 10)\n                .Concat(hoge)\n                .Buffer(TimeSpan.FromSeconds(3))\n                .ToArray()\n                .Wait();\n\n            xs[0].Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n            xs[1].Is(1000);\n        }\n\n        [Test]\n        public void BufferTimeEmptyBuffer()\n        {\n            var xs = Observable.Return(10).Delay(TimeSpan.FromMilliseconds(3500))\n                .Buffer(TimeSpan.FromSeconds(1))\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(4);\n            xs[0].Count.Is(0); // 1sec\n            xs[1].Count.Is(0); // 2sec\n            xs[2].Count.Is(0); // 3sec\n            xs[3].Count.Is(1); // 4sec\n        }\n\n        [Test]\n        public void BufferTimeComplete()\n        {\n            // when complete, return empty array.\n            var xs = Observable.Return(1).Delay(TimeSpan.FromSeconds(2))\n                .Concat(Observable.Return(1).Delay(TimeSpan.FromSeconds(2)).Skip(1))\n                .Buffer(TimeSpan.FromSeconds(3))\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(2);\n            xs[0].Count.Is(1);\n            xs[1].Count.Is(0);\n        }\n\n        [Test]\n        public void BufferTimeEmptyComplete()\n        {\n            var xs = Observable.Empty<int>()\n                .Buffer(TimeSpan.FromSeconds(1000))\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(1);\n        }\n\n        [Test]\n        public void BufferEmpty()\n        {\n            var xs = Observable.Empty<int>()\n                .Buffer(10)\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(0);\n        }\n\n\n        [Test]\n        public void BufferComplete2()\n        {\n            var xs = Observable.Range(1, 2)\n                .Buffer(2)\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(1);\n            xs[0].Is(1, 2);\n        }\n\n        [Test]\n        public void Buffer3()\n        {\n            var xs = Observable.Empty<int>()\n                .Buffer(1, 2)\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(0);\n        }\n\n        [Test]\n        public void BufferSkip()\n        {\n            // count > skip\n            {\n                var xs = Observable.Range(1, 10).Buffer(3, 1)\n                    .ToArray()\n                    .Wait();\n\n                xs[0].Is(1, 2, 3);\n                xs[1].Is(2, 3, 4);\n                xs[2].Is(3, 4, 5);\n                xs[3].Is(4, 5, 6);\n                xs[4].Is(5, 6, 7);\n                xs[5].Is(6, 7, 8);\n                xs[6].Is(7, 8, 9);\n                xs[7].Is(8, 9, 10);\n                xs[8].Is(9, 10);\n                xs[9].Is(10);\n            }\n\n            // count == skip\n            {\n                var xs = Observable.Range(1, 10).Buffer(3, 3)\n                    .ToArray()\n                    .Wait();\n\n                xs[0].Is(1, 2, 3);\n                xs[1].Is(4, 5, 6);\n                xs[2].Is(7, 8, 9);\n                xs[3].Is(10);\n            }\n\n            // count < skip\n            {\n                var xs = Observable.Range(1, 20).Buffer(3, 5)\n                    .ToArray()\n                    .Wait();\n\n                xs[0].Is(1, 2, 3);\n                xs[1].Is(6, 7, 8);\n                xs[2].Is(11, 12, 13);\n                xs[3].Is(16, 17, 18);\n            }\n        }\n\n        [Test]\n        public void BufferTimeAndCount()\n        {\n            // time...count...complete\n            {\n                var xs = Observable.Return(1000)\n                    .Concat(Observable.Return(99).Delay(TimeSpan.FromMilliseconds(1500)))\n                    .Concat(Observable.Range(1, 7))\n                    .Buffer(TimeSpan.FromSeconds(1), 5)\n                    .ToArray()\n                    .Wait();\n\n                xs.Length.Is(3);\n                xs[0].Is(1000); // 1sec\n                xs[1].Is(99, 1, 2, 3, 4); // 1.5sec -> buffer\n                xs[2].Is(5, 6, 7); // next 1sec\n            }\n            // time...count...time\n            {\n                var xs = Observable.Return(1000)\n                    .Concat(Observable.Return(99).Delay(TimeSpan.FromMilliseconds(1500)))\n                    .Concat(Observable.Range(1, 7))\n                    .Concat(Observable.Never<int>())\n                    .Buffer(TimeSpan.FromSeconds(1), 5)\n                    .Take(3)\n                    .ToArray()\n                    .Wait();\n\n                xs.Length.Is(3);\n                xs[0].Is(1000); // 1sec\n                xs[1].Is(99, 1, 2, 3, 4); // 1.5sec -> buffer\n                xs[2].Is(5, 6, 7); // next 1sec\n            }\n            // time(before is canceled)\n            {\n                var start = DateTime.Now;\n                var result = Observable.Return(10).Delay(TimeSpan.FromSeconds(2))\n                    .Concat(Observable.Range(1, 2))\n                    .Concat(Observable.Return(1000).Delay(TimeSpan.FromSeconds(2)))\n                    .Concat(Observable.Never<int>())\n                    .Buffer(TimeSpan.FromSeconds(3), 3)\n                    .Take(2)\n                    .Select(xs =>\n                    {\n                        var currentSpan = DateTime.Now - start;\n                        return new { currentSpan, xs };\n                    })\n                    .ToArray()\n                    .Wait();\n\n                // after 2 seconds, buffer is flush by count\n                result[0].xs.Is(10, 1, 2);\n                result[0].currentSpan.Is(x => TimeSpan.FromMilliseconds(1800) <= x && x <= TimeSpan.FromMilliseconds(2200));\n\n                // after 3 seconds, buffer is flush by time\n                result[1].xs.Is(1000);\n                result[1].currentSpan.Is(x => TimeSpan.FromMilliseconds(4800) <= x && x <= TimeSpan.FromMilliseconds(5200));\n            }\n        }\n\n        [Test]\n        public void BufferTimeAndCountTimeSide()\n        {\n            var subject = new Subject<int>();\n            var record = subject.Buffer(TimeSpan.FromMilliseconds(100), 100).Take(5).Record();\n\n            Thread.Sleep(TimeSpan.FromSeconds(2));\n\n            record.Values.Count.Is(5);\n        }\n\n        [Test]\n        public void BufferWindowBoundaries()\n        {\n            var subject = new Subject<int>();\n            var boundaries = new Subject<int>();\n\n            var record = subject.Buffer(boundaries).Record();\n\n            subject.OnNext(1);\n            subject.OnNext(2);\n            record.Values.Count.Is(0);\n\n            boundaries.OnNext(0);\n            record.Values.Count.Is(1);\n            record.Values[0].Is(1, 2);\n\n            boundaries.OnNext(0);\n            record.Values.Count.Is(2);\n            record.Values[1].Count.Is(0);\n        }\n\n        [Test]\n        public void First()\n        {\n            var s = new Subject<int>();\n\n            var l = new List<Notification<int>>();\n            {\n                s.First().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First().Materialize().Subscribe(l.Add);\n\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnError(new Exception());\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnNext(10);\n                s.OnError(new Exception());\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnCompleted();\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [Test]\n        public void FirstOrDefault()\n        {\n            var s = new Subject<int>();\n\n            var l = new List<Notification<int>>();\n            {\n                s.FirstOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnNext(10);\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [Test]\n        public void Last()\n        {\n            var s = new Subject<int>();\n            var l = new List<Notification<int>>();\n            {\n                s.Last().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnCompleted();\n\n                l[0].Value.Is(30);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Last().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Last().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.Last(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(5);\n                s.OnNext(20);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(20);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Last(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(5);\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Last(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(5);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [Test]\n        public void LastOrDefault()\n        {\n            var s = new Subject<int>();\n\n            var l = new List<Notification<int>>();\n            {\n                s.LastOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnCompleted();\n\n                l[0].Value.Is(30);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.LastOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.LastOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.LastOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.LastOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(5);\n                s.OnNext(20);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(20);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.LastOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(5);\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [Test]\n        public void Single()\n        {\n            var s = new Subject<int>();\n            var l = new List<Notification<int>>();\n            {\n                s.Single().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single().Materialize().Subscribe(l.Add);\n\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnNext(10);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(10);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [Test]\n        public void SingleOrDefault()\n        {\n            var s = new Subject<int>();\n\n            var l = new List<Notification<int>>();\n            {\n                s.SingleOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnNext(10);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(10);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n        }\n\n        [Test]\n        public void TakeWhile()\n        {\n            Observable.Range(1, 10)\n                .TakeWhile(x => x <= 5)\n                .ToArray()\n                .Wait()\n                .Is(1, 2, 3, 4, 5);\n        }\n\n        [Test]\n        public void TakeUntil()\n        {\n            {\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n\n                var l = new List<Notification<int>>();\n\n                a.TakeUntil(b).Materialize().Subscribe(l.Add);\n\n                a.OnNext(1);\n                a.OnNext(10);\n                b.OnNext(1000);\n                l.Count.Is(3);\n                l[0].Value.Is(1);\n                l[1].Value.Is(10);\n                l[2].Kind.Is(NotificationKind.OnCompleted);\n            }\n            {\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n\n                var l = new List<Notification<int>>();\n\n                a.TakeUntil(b).Materialize().Subscribe(l.Add);\n\n                a.OnNext(1);\n                a.OnNext(10);\n                b.OnCompleted();\n                l.Count.Is(3);\n\n                b.OnNext(1000);\n                l.Count.Is(3);\n\n                a.OnNext(100);\n                l.Count.Is(3);\n                l[0].Value.Is(1);\n                l[1].Value.Is(10);\n            }\n        }\n\n\n\n        [Test]\n        public void Skip()\n        {\n            Observable.Range(1, 10)\n                .Skip(3)\n                .ToArray()\n                .Wait()\n                .Is(4, 5, 6, 7, 8, 9, 10);\n\n            {\n                var range = Observable.Range(1, 10);\n\n                Assert.Throws<ArgumentOutOfRangeException>(() => range.Skip(-1));\n\n                range.Skip(10).ToArray().Wait().Length.Is(0);\n\n                range.Skip(3).ToArrayWait().Is(4, 5, 6, 7, 8, 9, 10);\n                range.Skip(3).Skip(2).ToArrayWait().Is(6, 7, 8, 9, 10);\n            }\n        }\n\n        [Test]\n        public void SkipTime()\n        {\n            {\n                var now = DateTime.Now;\n                var timer = Observable.Timer(TimeSpan.FromSeconds(0), TimeSpan.FromMilliseconds(10))\n                    .Timestamp();\n\n                var v = timer.Skip(TimeSpan.FromMilliseconds(300))\n                    .First()\n                    .Wait();\n\n                var x = (v.Timestamp - now);\n                (TimeSpan.FromMilliseconds(250) <= x && x <= TimeSpan.FromMilliseconds(350)).IsTrue();\n            }\n\n            {\n                var now = DateTime.Now;\n                var timer = Observable.Timer(TimeSpan.FromSeconds(0), TimeSpan.FromMilliseconds(10))\n                    .Timestamp();\n\n                var v = timer\n                    .Skip(TimeSpan.FromMilliseconds(100))\n                    .Skip(TimeSpan.FromMilliseconds(300))\n                    .First()\n                    .Wait();\n\n                var x = (v.Timestamp - now);\n                (TimeSpan.FromMilliseconds(250) <= x && x <= TimeSpan.FromMilliseconds(350)).IsTrue();\n            }\n        }\n\n        [Test]\n        public void SkipWhile()\n        {\n            Observable.Range(1, 10)\n                .SkipWhile(x => x <= 5)\n                .ToArray()\n                .Wait()\n                .Is(6, 7, 8, 9, 10);\n        }\n\n        [Test]\n        public void SkipWhileIndex()\n        {\n            Observable.Range(1, 10)\n                .SkipWhile((x, i) => i <= 5)\n                .ToArray()\n                .Wait()\n                .Is(7, 8, 9, 10);\n        }\n\n\n        [Test]\n        public void SkipUntil()\n        {\n            {\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n\n                var l = new List<Notification<int>>();\n\n                a.SkipUntil(b).Materialize().Subscribe(l.Add);\n\n                a.OnNext(1);\n                a.OnNext(10);\n                b.OnNext(1000);\n\n                l.Count.Is(0);\n\n                b.OnNext(99999);\n                b.HasObservers.IsFalse();\n\n                a.OnNext(1);\n                a.OnNext(10);\n\n                l[0].Value.Is(1);\n                l[1].Value.Is(10);\n            }\n            {\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n\n                var l = new List<Notification<int>>();\n\n                a.SkipUntil(b).Materialize().Subscribe(l.Add);\n\n                a.OnNext(1);\n                a.OnNext(10);\n                b.OnCompleted();\n                l.Count.Is(0);\n\n                a.OnNext(100);\n                l.Count.Is(0);\n            }\n        }\n\n        [Test]\n        public void Pairwise()\n        {\n            var xs = Observable.Range(1, 5).Pairwise((x, y) => x + \":\" + y).ToArrayWait();\n            xs.Is(\"1:2\", \"2:3\", \"3:4\", \"4:5\");\n        }\n\n        [Test]\n        public void Pairwise2()\n        {\n            var xs = Observable.Range(1, 5).Pairwise().ToArrayWait();\n            xs[0].Previous.Is(1); xs[0].Current.Is(2);\n            xs[1].Previous.Is(2); xs[1].Current.Is(3);\n            xs[2].Previous.Is(3); xs[2].Current.Is(4);\n            xs[3].Previous.Is(4); xs[3].Current.Is(5);\n        }\n\n        [Test]\n        public void TakeLast()\n        {\n            var record = Observable.Range(1, 2).TakeLast(3).Record();\n            record.Values.Is(1, 2);\n\n            record = Observable.Range(1, 3).TakeLast(3).Record();\n            record.Values.Is(1, 2, 3);\n\n            record = Observable.Range(1, 4).TakeLast(3).Record();\n            record.Values.Is(2, 3, 4);\n\n            record = Observable.Range(1, 10).TakeLast(3).Record();\n            record.Values.Is(8, 9, 10);\n\n            record = Observable.Empty<int>().TakeLast(3).Record();\n            record.Notifications[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void TakeLastDuration()\n        {\n            var subject = new Subject<long>();\n\n            var record = subject.Record();\n            subject.OnCompleted();\n            record.Notifications[0].Kind.Is(NotificationKind.OnCompleted);\n\n            // 0, 200, 400, 600, 800\n            var data = Observable.Timer(TimeSpan.Zero, TimeSpan.FromMilliseconds(200))\n                .Take(5)\n                .TakeLast(TimeSpan.FromMilliseconds(250))\n                .ToArrayWait();\n\n            data.Is(3, 4);\n        }\n\n        [Test]\n        public void GroupBy()\n        {\n            var subject = new Subject<int>();\n\n            RecordObserver<int> a = null;\n            RecordObserver<int> b = null;\n            RecordObserver<int> c = null;\n            subject.GroupBy(x => x % 3)\n                .Subscribe(x =>\n                {\n                    if (x.Key == 0)\n                    {\n                        a = x.Record();\n                    }\n                    else if (x.Key == 1)\n                    {\n                        b = x.Record();\n                    }\n                    else if (x.Key == 2)\n                    {\n                        c = x.Record();\n                    }\n                });\n\n            subject.OnNext(99);\n            subject.OnNext(100);\n            subject.OnNext(101);\n\n            subject.OnNext(0);\n            subject.OnNext(1);\n            subject.OnNext(2);\n\n            a.Values.Is(99, 0);\n            b.Values.Is(100, 1);\n            c.Values.Is(101, 2);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.PagingTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 99ea24ba485b0dc4eb03df0b47ffce70\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.TimeTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections.Generic;\n\nnamespace UniRx.Tests\n{\n    \n    public class ObservableTimeTest\n    {\n        [SetUp]\n        public void Init()\n        {\n            TestUtil.SetScehdulerForImport();\n        }\n\n        [TearDown]\n        public void Dispose()\n        {\n            UniRx.Scheduler.SetDefaultForUnity();\n        }\n\n        [Test]\n        public void TimerTest()\n        {\n            // periodic(Observable.Interval)\n            {\n                var now = Scheduler.ThreadPool.Now;\n                var xs = Observable.Timer(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1))\n                    .Take(3)\n                    .Timestamp()\n                    .ToArray()\n                    .Wait();\n\n                xs[0].Value.Is(0L);\n                (now.AddMilliseconds(800) <= xs[0].Timestamp && xs[0].Timestamp <= now.AddMilliseconds(1200)).IsTrue();\n\n                xs[1].Value.Is(1L);\n                (now.AddMilliseconds(1800) <= xs[1].Timestamp && xs[1].Timestamp <= now.AddMilliseconds(2200)).IsTrue();\n\n                xs[2].Value.Is(2L);\n                (now.AddMilliseconds(2800) <= xs[2].Timestamp && xs[2].Timestamp <= now.AddMilliseconds(3200)).IsTrue();\n            }\n\n            // dueTime + periodic\n            {\n                var now = Scheduler.ThreadPool.Now;\n                var xs = Observable.Timer(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(1))\n                    .Take(3)\n                    .Timestamp()\n                    .Select(x => Math.Round((x.Timestamp - now).TotalSeconds, 0))\n                    .ToArray()\n                    .Wait();\n\n                xs[0].Is(2);\n                xs[1].Is(3);\n                xs[2].Is(4);\n            }\n\n            // dueTime(DateTimeOffset)\n            {\n                var now = Scheduler.ThreadPool.Now;\n                var xs = Observable.Timer(now.AddSeconds(2), TimeSpan.FromSeconds(1))\n                    .Take(3)\n                    .Timestamp()\n                    .Select(x => Math.Round((x.Timestamp - now).TotalSeconds, 0))\n                    .ToArray()\n                    .Wait();\n\n                xs[0].Is(2);\n                xs[1].Is(3);\n                xs[2].Is(4);\n            }\n\n            // onetime\n            {\n                var now = Scheduler.ThreadPool.Now;\n                var xs = Observable.Timer(TimeSpan.FromSeconds(2))\n                    .Timestamp()\n                    .Select(x => Math.Round((x.Timestamp - now).TotalSeconds, 0))\n                    .ToArray()\n                    .Wait();\n\n                xs[0].Is(2);\n            }\n\n            // non periodic scheduler\n            {\n                var now = Scheduler.CurrentThread.Now;\n                var xs = Observable.Timer(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(1), Scheduler.CurrentThread)\n                    .Take(3)\n                    .Timestamp()\n                    .Select(x => Math.Round((x.Timestamp - now).TotalSeconds, 0))\n                    .ToArray()\n                    .Wait();\n\n                xs[0].Is(2);\n                xs[1].Is(3);\n                xs[2].Is(4);\n            }\n        }\n\n        [Test]\n        public void DelayTest()\n        {\n            var now = Scheduler.ThreadPool.Now;\n\n            var xs = Observable.Range(1, 3)\n                .Delay(TimeSpan.FromSeconds(1))\n                .Timestamp()\n                .ToArray()\n                .Wait();\n\n            xs[0].Value.Is(1);\n            (now.AddMilliseconds(800) <= xs[0].Timestamp && xs[0].Timestamp <= now.AddMilliseconds(1200)).IsTrue();\n\n            xs[1].Value.Is(2);\n            (now.AddMilliseconds(800) <= xs[1].Timestamp && xs[1].Timestamp <= now.AddMilliseconds(1200)).IsTrue();\n\n            xs[2].Value.Is(3);\n            (now.AddMilliseconds(800) <= xs[2].Timestamp && xs[2].Timestamp <= now.AddMilliseconds(1200)).IsTrue();\n        }\n\n        [Test]\n        public void SampleTest()\n        {\n            // 2400, 4800, 7200, 9600\n            var xs = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1))\n                .Take(10)\n                .Sample(TimeSpan.FromMilliseconds(2400), Scheduler.CurrentThread)\n                .Timestamp()\n                .ToArray()\n                .Wait();\n\n            xs[0].Value.Is(2);\n            xs[1].Value.Is(4);\n            xs[2].Value.Is(7);\n            xs[3].Value.Is(9);\n        }\n\n        [Test]\n        public void TimeoutTest()\n        {\n            var xs = Observable.Concat(\n                    Observable.Return(1).Delay(TimeSpan.FromSeconds(1)),\n                    Observable.Return(5).Delay(TimeSpan.FromSeconds(2)),\n                    Observable.Return(9).Delay(TimeSpan.FromSeconds(3))\n                )\n                .Timestamp()\n                .Timeout(TimeSpan.FromMilliseconds(1500))\n                .Materialize()\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(2);\n            xs[0].Value.Value.Is(1);\n            xs[1].Exception.IsInstanceOf<TimeoutException>();\n        }\n\n        [Test]\n        public void TimeoutTestOffset()\n        {\n            var now = Scheduler.ThreadPool.Now;\n            var xs = Observable.Concat(\n                    Observable.Return(1).Delay(TimeSpan.FromSeconds(1)),\n                    Observable.Return(5).Delay(TimeSpan.FromSeconds(2)),\n                    Observable.Return(9).Delay(TimeSpan.FromSeconds(3))\n                )\n                .Timestamp()\n                .Timeout(now.AddMilliseconds(3500))\n                .Materialize()\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(3);\n            xs[0].Value.Value.Is(1);\n            xs[1].Value.Value.Is(5);\n            xs[2].Exception.IsInstanceOf<TimeoutException>();\n        }\n\n        [Test]\n        public void ThrottleTest()\n        {\n            var xs = Observable.Concat(\n                    Observable.Return(1).Delay(TimeSpan.FromSeconds(1)),\n                    Observable.Return(2).Delay(TimeSpan.FromSeconds(2)),\n                    Observable.Return(3).Delay(TimeSpan.FromSeconds(2)),\n                    Observable.Return(4).Delay(TimeSpan.FromSeconds(2)),\n                    Observable.Return(5).Delay(TimeSpan.FromSeconds(2)),\n                    Observable.Return(6).Delay(TimeSpan.FromSeconds(3)), // over 2500\n                    Observable.Return(7).Delay(TimeSpan.FromSeconds(1)),\n                    Observable.Return(8).Delay(TimeSpan.FromSeconds(1)) // with onCompleted\n                )\n                .Timestamp()\n                .Throttle(TimeSpan.FromMilliseconds(2500))\n                .Materialize()\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(3);\n            xs[0].Value.Value.Is(5);\n            xs[1].Value.Value.Is(8);\n            xs[2].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ThrottleFirstTest()\n        {\n            var xs = Observable.Concat(\n                    Observable.Return(1),\n                    Observable.Return(2).Delay(TimeSpan.FromSeconds(1)),\n                    Observable.Return(3).Delay(TimeSpan.FromSeconds(1)),\n                    Observable.Return(4).Delay(TimeSpan.FromSeconds(0.4)),\n                    Observable.Return(5).Delay(TimeSpan.FromSeconds(0.2)), // over 2500\n                    Observable.Return(6).Delay(TimeSpan.FromSeconds(1)),\n                    Observable.Return(7).Delay(TimeSpan.FromSeconds(1)),\n                    Observable.Return(8).Delay(TimeSpan.FromSeconds(1)), // over 2500\n                    Observable.Return(9) // withCompleted\n                )\n                .Timestamp()\n                .ThrottleFirst(TimeSpan.FromMilliseconds(2500))\n                .Materialize()\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(4);\n            xs[0].Value.Value.Is(1);\n            xs[1].Value.Value.Is(5);\n            xs[2].Value.Value.Is(8);\n            xs[3].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void Timestamp()\n        {\n            var xs = Observable.Concat(\n                Observable.Return(1),\n                Observable.Return(2).Delay(TimeSpan.FromSeconds(1)),\n                Observable.Return(3).Delay(TimeSpan.FromSeconds(1)),\n                Observable.Return(4).Delay(TimeSpan.FromSeconds(0.4)),\n                Observable.Return(5).Delay(TimeSpan.FromSeconds(0.2)) // over 2500\n            ).Timestamp()\n            .ToArray()\n            .Wait();\n\n            var now = DateTime.Now;\n\n            xs[0].Value.Is(1); (now - xs[0].Timestamp).TotalSeconds.Is(x => 2.5 <= x && x <= 3.0);\n            xs[1].Value.Is(2); (now - xs[1].Timestamp).TotalSeconds.Is(x => 1.4 <= x && x <= 1.8);\n            xs[2].Value.Is(3); (now - xs[2].Timestamp).TotalSeconds.Is(x => 0.5 <= x && x <= 0.8);\n            xs[3].Value.Is(4); (now - xs[3].Timestamp).TotalSeconds.Is(x => 0.18 <= x && x <= 0.3);\n            xs[4].Value.Is(5); (now - xs[4].Timestamp).TotalSeconds.Is(x => 0 <= x && x <= 0.1);\n        }\n\n        [Test]\n        public void TimeInterval()\n        {\n            var xs = Observable.Concat(\n                Observable.Return(1),\n                Observable.Return(2).Delay(TimeSpan.FromSeconds(1)),\n                Observable.Return(3).Delay(TimeSpan.FromSeconds(1)),\n                Observable.Return(4).Delay(TimeSpan.FromSeconds(0.4)),\n                Observable.Return(5).Delay(TimeSpan.FromSeconds(0.2)) // over 2500\n            ).TimeInterval()\n            .ToArray()\n            .Wait();\n\n            xs[0].Value.Is(1); xs[0].Interval.TotalSeconds.Is(x => 0.0 <= x && x <= 0.1);\n            xs[1].Value.Is(2); xs[1].Interval.TotalSeconds.Is(x => 0.9 <= x && x <= 1.1);\n            xs[2].Value.Is(3); xs[2].Interval.TotalSeconds.Is(x => 0.9 <= x && x <= 1.1);\n            xs[3].Value.Is(4); xs[3].Interval.TotalSeconds.Is(x => 0.3 <= x && x <= 0.5);\n            xs[4].Value.Is(5); xs[4].Interval.TotalSeconds.Is(x => 0.15 <= x && x <= 0.25);\n        }\n    }\n}"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/Observable.TimeTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: b1b1a1c58abf234439611251d02c9cc7\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ObservableTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n    \n    public class ObservableTest\n    {\n        [SetUp]\n        public void Init()\n        {\n            TestUtil.SetScehdulerForImport();\n        }\n\n        [TearDown]\n        public void Dispose()\n        {\n            UniRx.Scheduler.SetDefaultForUnity();\n        }\n\n        [Test]\n        public void ToArray()\n        {\n            var subject = new Subject<int>();\n\n            int[] array = null;\n            subject.ToArray().Subscribe(xs => array = xs);\n\n            subject.OnNext(1);\n            subject.OnNext(10);\n            subject.OnNext(100);\n            subject.OnCompleted();\n\n            array.Is(1, 10, 100);\n        }\n\n        [Test]\n        public void ToArray_Dispose()\n        {\n            var subject = new Subject<int>();\n\n            int[] array = null;\n            var disp = subject.ToArray().Subscribe(xs => array = xs);\n\n            subject.OnNext(1);\n            subject.OnNext(10);\n            subject.OnNext(100);\n\n            disp.Dispose();\n\n            subject.OnCompleted();\n\n            array.IsNull();\n        }\n\n        [Test]\n        public void Wait()\n        {\n#if !UNITY_METRO\n\n            var subject = new Subject<int>();\n\n            ThreadPool.QueueUserWorkItem(_ =>\n            {\n                Thread.Sleep(TimeSpan.FromSeconds(1));\n                subject.OnNext(100);\n                subject.OnCompleted();\n            });\n\n            subject.Wait().Is(100);\n\n#endif\n        }\n\n        [Test]\n        public void DistinctUntilChanged()\n        {\n            {\n                var subject = new Subject<int>();\n\n                int[] array = null;\n                subject.DistinctUntilChanged().ToArray().Subscribe(xs => array = xs);\n\n                foreach (var item in new[] { 1, 10, 10, 1, 100, 100, 100, 5 }) { subject.OnNext(item); };\n                subject.OnCompleted();\n\n                array.Is(1, 10, 1, 100, 5);\n            }\n            {\n\n                string[] array = null;\n                new[] { \"hoge\", \"huga\", null, null, \"huga\", \"huga\", \"hoge\" }\n                    .ToObservable()\n                    .DistinctUntilChanged()\n                    .ToArray()\n                    .Subscribe(xs => array = xs);\n\n                array.Is(\"hoge\", \"huga\", null, \"huga\", \"hoge\");\n            }\n            {\n                var subject = new Subject<int>();\n\n                int[] array = null;\n                subject.DistinctUntilChanged(x => x, EqualityComparer<int>.Default).ToArray().Subscribe(xs => array = xs);\n\n                foreach (var item in new[] { 1, 10, 10, 1, 100, 100, 100, 5 }) { subject.OnNext(item); };\n                subject.OnCompleted();\n\n                array.Is(1, 10, 1, 100, 5);\n            }\n        }\n\n        [Test]\n        public void Distinct()\n        {\n            {\n                var subject = new Subject<int>();\n\n                int[] array = null;\n                subject.Distinct().ToArray().Subscribe(xs => array = xs);\n\n                foreach (var item in new[] { 1, 10, 10, 1, 100, 100, 100, 5, 70, 7 }) { subject.OnNext(item); };\n                subject.OnCompleted();\n\n                array.Is(1, 10, 100, 5, 70, 7);\n            }\n            {\n                var subject = new Subject<int>();\n\n                int[] array = null;\n                subject.Distinct(x => x, EqualityComparer<int>.Default).ToArray().Subscribe(xs => array = xs);\n                       \n                foreach (var item in new[] { 1, 10, 10, 1, 100, 100, 100, 5, 70, 7 }) { subject.OnNext(item); };\n                subject.OnCompleted();\n\n                array.Is(1, 10, 100, 5, 70, 7);\n            }\n        }\n\n        [Test]\n        public void SelectMany()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var list = new List<int>();\n            a.SelectMany(_ => b).Subscribe(x => list.Add(x));\n\n            a.OnNext(10);\n            a.OnCompleted();\n            b.OnNext(100);\n\n            list.Count.Is(1);\n            list[0].Is(100);\n        }\n\n        [Test]\n        public void Select()\n        {\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Select(x => x * x).Subscribe(x => list.Add(x));\n\n                a.OnNext(100);\n                a.OnNext(200);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.Count.Is(3);\n                list.Is(10000, 40000, 90000);\n            }\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Select((x, i) => x * i).Subscribe(x => list.Add(x));\n\n                a.OnNext(100);\n                a.OnNext(200);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.Count.Is(3);\n                list.Is(0, 200, 600);\n            }\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Select(x => x * x).Select(x => x * x).Subscribe(x => list.Add(x));\n\n                a.OnNext(2);\n                a.OnNext(4);\n                a.OnNext(8);\n                a.OnCompleted();\n\n                list.Count.Is(3);\n                list.Is(16, 256, 4096);\n            }\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Select((x, i) => x * i).Select(x => x * 10).Subscribe(x => list.Add(x));\n\n                a.OnNext(100);\n                a.OnNext(200);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.Count.Is(3);\n                list.Is(0, 2000, 6000);\n            }\n        }\n\n        [Test]\n        public void Where()\n        {\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Where(x => x % 3 == 0).Subscribe(x => list.Add(x));\n\n                a.OnNext(3);\n                a.OnNext(5);\n                a.OnNext(7);\n                a.OnNext(9);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.Is(3, 9, 300);\n            }\n\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Where((x, i) => (x + i) % 3 == 0).Subscribe(x => list.Add(x));\n\n                a.OnNext(3); // 3 + 0\n                a.OnNext(5); // 5 + 1\n                a.OnNext(7); // 7 + 2\n                a.OnNext(9); // 9 + 3\n                a.OnNext(300); // 300 + 4\n                a.OnCompleted();\n\n                list.Is(3, 5, 7, 9);\n            }\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Where(x => x % 3 == 0).Where(x => x % 5 == 0).Subscribe(x => list.Add(x));\n\n                a.OnNext(3);\n                a.OnNext(5);\n                a.OnNext(7);\n                a.OnNext(9);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.Is(300);\n            }\n\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Where((x, i) => (x + i) % 3 == 0).Where(x => x % 5 == 0).Subscribe(x => list.Add(x));\n\n                a.OnNext(3); // 3 + 0\n                a.OnNext(5); // 5 + 1\n                a.OnNext(7); // 7 + 2\n                a.OnNext(9); // 9 + 3\n                a.OnNext(300); // 300 + 4\n                a.OnCompleted();\n\n                list.Is(5);\n            }\n        }\n\n        [Test]\n        public void Materialize()\n        {\n            var m = Observable.Empty<int>().Materialize().ToArrayWait();\n            m[0].Kind.Is(NotificationKind.OnCompleted);\n\n            m = Observable.Range(1, 3).Materialize().ToArrayWait();\n            m[0].Value.Is(1);\n            m[1].Value.Is(2);\n            m[2].Value.Is(3);\n            m[3].Kind.Is(NotificationKind.OnCompleted);\n\n            m = Observable.Range(1, 3).Concat(Observable.Throw<int>(new Exception())).Materialize().ToArrayWait();\n            m[0].Value.Is(1);\n            m[1].Value.Is(2);\n            m[2].Value.Is(3);\n            m[3].Kind.Is(NotificationKind.OnError);\n        }\n\n        [Test]\n        public void Dematerialize()\n        {\n            var m = Observable.Empty<int>().Materialize().Dematerialize().ToArrayWait();\n            m.Is();\n\n            m = Observable.Range(1, 3).Materialize().Dematerialize().ToArrayWait();\n            m.Is(1, 2, 3);\n\n            var l = new List<int>();\n            Observable.Range(1, 3).Concat(Observable.Throw<int>(new Exception())).Materialize()\n                .Dematerialize()\n                .Subscribe(x => l.Add(x), ex => l.Add(1000), () => l.Add(10000));\n            l.Is(1, 2, 3, 1000);\n        }\n\n        [Test]\n        public void DefaultIfEmpty()\n        {\n            Observable.Range(1, 3).DefaultIfEmpty(-1).ToArrayWait().Is(1, 2, 3);\n            Observable.Empty<int>().DefaultIfEmpty(-1).ToArrayWait().Is(-1);\n        }\n\n        [Test]\n        public void IgnoreElements()\n        {\n            var xs = Observable.Range(1, 10).IgnoreElements().Materialize().ToArrayWait();\n            xs[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [Test]\n        public void ForEachAsync()\n        {\n            {\n                var list = new List<int>();\n                var xs = Observable.Range(1, 10).ForEachAsync(x => list.Add(x)).ToArray().Wait();\n                list.Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n                xs.Length.Is(1);\n                xs[0].Is(Unit.Default);\n            }\n\n            {\n                var list = new List<int>();\n                var listI = new List<int>();\n                var xs = Observable.Range(1, 10).ForEachAsync((x, i) =>\n                {\n                    list.Add(x);\n                    listI.Add(i);\n                }).ToArray().Wait();\n                list.Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n                listI.Is(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);\n                xs.Length.Is(1);\n                xs[0].Is(Unit.Default);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ObservableTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: eee8ce89ebcb56c4596ee687958ae995\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/QueueWorkerTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests\n{\n    \n    public class QueueWorkerTest\n    {\n        [Test]\n        public void Enq()\n        {\n            var q = new UniRx.InternalUtil.ThreadSafeQueueWorker();\n\n            var l = new List<int>();\n            q.Enqueue(x => l.Add((int)x), 1);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -1);\n            q.Enqueue(x => l.Add((int)x), 2);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -2);\n            q.Enqueue(x => l.Add((int)x), 3);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -3);\n            q.Enqueue(x => l.Add((int)x), 4);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -4);\n            q.Enqueue(x => l.Add((int)x), 5);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -5);\n            q.Enqueue(x => l.Add((int)x), 6);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -6);\n            q.Enqueue(x => l.Add((int)x), 7);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -7);\n            q.Enqueue(x => l.Add((int)x), 8);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -8);\n            q.Enqueue(x => l.Add((int)x), 9);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -9);\n            q.Enqueue(x => l.Add((int)x), 10);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -10);\n            q.Enqueue(x => l.Add((int)x), 11);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -11);\n            q.Enqueue(x => l.Add((int)x), 12);\n\n            q.ExecuteAll(ex => { });\n\n            l.Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);\n            l.Clear();\n\n            q.ExecuteAll(ex => { });\n            l.Is(-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11);\n            l.Clear();\n\n            q.ExecuteAll(ex => { });\n            l.Count.Is(0);\n\n            q.Enqueue(x => l.Add((int)x), 1);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -1);\n            q.Enqueue(x => l.Add((int)x), 2);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -2);\n            q.Enqueue(x => l.Add((int)x), 3);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -3);\n            q.Enqueue(x => l.Add((int)x), 4);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -4);\n            q.Enqueue(x => l.Add((int)x), 5);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -5);\n            q.Enqueue(x => l.Add((int)x), 6);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -6);\n            q.Enqueue(x => l.Add((int)x), 7);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -7);\n            q.Enqueue(x => l.Add((int)x), 8);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -8);\n            q.Enqueue(x => l.Add((int)x), 9);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -9);\n            q.Enqueue(x => l.Add((int)x), 10);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -10);\n            q.Enqueue(x => l.Add((int)x), 11);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -11);\n            q.Enqueue(x => l.Add((int)x), 12);\n\n            q.ExecuteAll(ex => { });\n            l.Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);\n            l.Clear();\n\n            q.ExecuteAll(ex => { });\n            l.Is(-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11);\n            l.Clear();\n\n            q.ExecuteAll(ex => { });\n            l.Count.Is(0);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/QueueWorkerTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9dc575066c800134884327bd1f245a2e\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/RangeTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests.Operators\n{\n    public class RangeTest\n    {\n        [Test]\n        public void Range()\n        {\n            Assert.Throws<ArgumentOutOfRangeException>(() => Observable.Range(1, -1).ToArray().Wait());\n\n            Observable.Range(1, 0).ToArray().Wait().Length.Is(0);\n            Observable.Range(1, 10).ToArray().Wait().Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n\n            Observable.Range(1, 0, Scheduler.Immediate).ToArray().Wait().Length.Is(0);\n            Observable.Range(1, 10, Scheduler.Immediate).ToArray().Wait().Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/RangeTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 72c2bb80f9148504cb4480fe601abba8\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ReactivePropertyTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing NUnit.Framework;\nusing UnityEngine.TestTools;\n\nnamespace UniRx.Tests\n{\n\n    public class ReactivePropertyTest\n    {\n        [Test]\n        public void ValueType()\n        {\n            {\n                var rp = new ReactiveProperty<int>(); // 0\n\n                var result = rp.Record();\n                result.Values.Is(0);\n\n                rp.Value = 0;\n                result.Values.Is(0);\n\n                rp.Value = 10;\n                result.Values.Is(0, 10);\n\n                rp.Value = 100;\n                result.Values.Is(0, 10, 100);\n\n                rp.Value = 100;\n                result.Values.Is(0, 10, 100);\n            }\n            {\n                var rp = new ReactiveProperty<int>(20);\n\n                var result = rp.Record();\n                result.Values.Is(20);\n\n                rp.Value = 0;\n                result.Values.Is(20, 0);\n\n                rp.Value = 10;\n                result.Values.Is(20, 0, 10);\n\n                rp.Value = 100;\n                result.Values.Is(20, 0, 10, 100);\n\n                rp.Value = 100;\n                result.Values.Is(20, 0, 10, 100);\n            }\n        }\n\n        [Test]\n        public void ClassType()\n        {\n            {\n                var rp = new ReactiveProperty<string>(); // null\n\n                var result = rp.Record();\n                result.Values.Is((string)null);\n\n                rp.Value = null;\n                result.Values.Is((string)null);\n\n                rp.Value = \"a\";\n                result.Values.Is((string)null, \"a\");\n\n                rp.Value = \"b\";\n                result.Values.Is((string)null, \"a\", \"b\");\n\n                rp.Value = \"b\";\n                result.Values.Is((string)null, \"a\", \"b\");\n            }\n            {\n                var rp = new ReactiveProperty<string>(\"z\");\n\n                var result = rp.Record();\n                result.Values.Is(\"z\");\n\n                rp.Value = \"z\";\n                result.Values.Is(\"z\");\n\n                rp.Value = \"a\";\n                result.Values.Is(\"z\", \"a\");\n\n                rp.Value = \"b\";\n                result.Values.Is(\"z\", \"a\", \"b\");\n\n                rp.Value = \"b\";\n                result.Values.Is(\"z\", \"a\", \"b\");\n\n                rp.Value = null;\n                result.Values.Is(\"z\", \"a\", \"b\", null);\n            }\n        }\n\n        [Test]\n        public void ToReadOnlyReactivePropertyValueType()\n        {\n            {\n                var source = new Subject<int>();\n                var rp = source.ToReadOnlyReactiveProperty();\n\n                var result = rp.Record();\n                result.Values.Count.Is(0);\n\n                source.OnNext(0);\n                result.Values.Is(0);\n\n                source.OnNext(10);\n                result.Values.Is(0, 10);\n\n                source.OnNext(100);\n                result.Values.Is(0, 10, 100);\n\n                source.OnNext(100);\n                result.Values.Is(0, 10, 100);\n            }\n            {\n                var source = new Subject<int>();\n                var rp = source.ToSequentialReadOnlyReactiveProperty();\n\n                var result = rp.Record();\n                result.Values.Count.Is(0);\n\n                source.OnNext(0);\n                result.Values.Is(0);\n\n                source.OnNext(10);\n                result.Values.Is(0, 10);\n\n                source.OnNext(100);\n                result.Values.Is(0, 10, 100);\n\n                source.OnNext(100);\n                result.Values.Is(0, 10, 100, 100);\n            }\n            {\n                var source = new Subject<int>();\n                var rp = source.ToReadOnlyReactiveProperty(0);\n\n                var result = rp.Record();\n                result.Values.Is(0);\n\n                source.OnNext(0);\n                result.Values.Is(0);\n\n                source.OnNext(10);\n                result.Values.Is(0, 10);\n\n                source.OnNext(100);\n                result.Values.Is(0, 10, 100);\n\n                source.OnNext(100);\n                result.Values.Is(0, 10, 100);\n            }\n            {\n                var source = new Subject<int>();\n                var rp = source.ToSequentialReadOnlyReactiveProperty(0);\n\n                var result = rp.Record();\n                result.Values.Is(0);\n\n                source.OnNext(0);\n                result.Values.Is(0, 0);\n\n                source.OnNext(10);\n                result.Values.Is(0, 0, 10);\n\n                source.OnNext(100);\n                result.Values.Is(0, 0, 10, 100);\n\n                source.OnNext(100);\n                result.Values.Is(0, 0, 10, 100, 100);\n            }\n        }\n\n\n\n        [Test]\n        public void ToReadOnlyReactivePropertyClassType()\n        {\n            {\n                var source = new Subject<string>();\n                var rp = source.ToReadOnlyReactiveProperty();\n\n                var result = rp.Record();\n                result.Values.Count.Is(0);\n\n                source.OnNext(null);\n                result.Values.Is((string)null);\n\n                source.OnNext(\"a\");\n                result.Values.Is((string)null, \"a\");\n\n                source.OnNext(\"b\");\n                result.Values.Is((string)null, \"a\", \"b\");\n\n                source.OnNext(\"b\");\n                result.Values.Is((string)null, \"a\", \"b\");\n            }\n            {\n                var source = new Subject<string>();\n                var rp = source.ToSequentialReadOnlyReactiveProperty();\n\n                var result = rp.Record();\n                result.Values.Count.Is(0);\n\n                source.OnNext(null);\n                result.Values.Is((string)null);\n\n                source.OnNext(\"a\");\n                result.Values.Is((string)null, \"a\");\n\n                source.OnNext(\"b\");\n                result.Values.Is((string)null, \"a\", \"b\");\n\n                source.OnNext(\"b\");\n                result.Values.Is((string)null, \"a\", \"b\", \"b\");\n            }\n            {\n                var source = new Subject<string>();\n                var rp = source.ToReadOnlyReactiveProperty(\"z\");\n\n                var result = rp.Record();\n                result.Values.Is(\"z\");\n\n                source.OnNext(\"z\");\n                result.Values.Is(\"z\");\n\n                source.OnNext(\"a\");\n                result.Values.Is(\"z\", \"a\");\n\n                source.OnNext(\"b\");\n                result.Values.Is(\"z\", \"a\", \"b\");\n\n                source.OnNext(\"b\");\n                result.Values.Is(\"z\", \"a\", \"b\");\n\n                source.OnNext(null);\n                result.Values.Is(\"z\", \"a\", \"b\", null);\n\n                source.OnNext(null);\n                result.Values.Is(\"z\", \"a\", \"b\", null);\n            }\n            {\n                var source = new Subject<string>();\n                var rp = source.ToSequentialReadOnlyReactiveProperty(\"z\");\n\n                var result = rp.Record();\n                result.Values.Is(\"z\");\n\n                source.OnNext(\"z\");\n                result.Values.Is(\"z\", \"z\");\n\n                source.OnNext(\"a\");\n                result.Values.Is(\"z\", \"z\", \"a\");\n\n                source.OnNext(\"b\");\n                result.Values.Is(\"z\", \"z\", \"a\", \"b\");\n\n                source.OnNext(\"b\");\n                result.Values.Is(\"z\", \"z\", \"a\", \"b\", \"b\");\n\n                source.OnNext(null);\n                result.Values.Is(\"z\", \"z\", \"a\", \"b\", \"b\", null);\n\n                source.OnNext(null);\n                result.Values.Is(\"z\", \"z\", \"a\", \"b\", \"b\", null, null);\n            }\n        }\n\n        //[Test]\n        //public void FinishedSourceToReactiveProperty()\n        //{\n        //    // pattern of OnCompleted\n        //    {\n        //        var source = Observable.Return(9);\n        //        var rxProp = source.ToReactiveProperty();\n\n        //        var notifications = rxProp.Record().Notifications;\n        //        notifications.Is(Notification.CreateOnNext(9));\n\n        //        rxProp.Value = 9999;\n        //        notifications.Is(Notification.CreateOnNext(9), Notification.CreateOnNext(9999));\n        //        rxProp.Record().Values.Is(9999);\n        //    }\n\n        //    // pattern of OnError\n        //    {\n        //        // after\n        //        {\n        //            var ex = new Exception();\n        //            var source = Observable.Throw<int>(ex);\n        //            var rxProp = source.ToReactiveProperty();\n\n        //            var notifications = rxProp.Record().Notifications;\n        //            notifications.Is(Notification.CreateOnError<int>(ex));\n\n        //            rxProp.Value = 9999;\n        //            notifications.Is(Notification.CreateOnError<int>(ex));\n        //            rxProp.Record().Notifications.Is(Notification.CreateOnError<int>(ex));\n        //        }\n        //        // immediate\n        //        {\n\n        //            var ex = new Exception();\n        //            var source = new Subject<int>();\n        //            var rxProp = source.ToReactiveProperty();\n\n        //            var record = rxProp.Record();\n\n        //            source.OnError(new Exception());\n\n        //            var notifications = record.Notifications;\n        //            notifications.Count.Is(1);\n        //            notifications[0].Kind.Is(NotificationKind.OnError);\n\n        //            rxProp.Value = 9999;\n        //            notifications.Count.Is(1);\n        //            notifications[0].Kind.Is(NotificationKind.OnError);\n        //            rxProp.Record().Notifications[0].Kind.Is(NotificationKind.OnError);\n        //        }\n        //    }\n        //}\n\n        [Test]\n        public void FinishedSourceToReadOnlyReactiveProperty()\n        {\n            // pattern of OnCompleted\n            {\n                var source = Observable.Return(9);\n                var rxProp = source.ToReadOnlyReactiveProperty();\n\n                var notifications = rxProp.Record().Notifications;\n                notifications.Is(Notification.CreateOnNext(9), Notification.CreateOnCompleted<int>());\n\n                rxProp.Record().Notifications.Is(\n                    Notification.CreateOnNext(9),\n                    Notification.CreateOnCompleted<int>());\n            }\n\n            // pattern of OnError\n            {\n                // after\n                {\n                    var ex = new Exception();\n                    var source = Observable.Throw<int>(ex);\n                    var rxProp = source.ToReadOnlyReactiveProperty();\n\n                    var notifications = rxProp.Record().Notifications;\n                    notifications.Is(Notification.CreateOnError<int>(ex));\n\n                    rxProp.Record().Notifications.Is(Notification.CreateOnError<int>(ex));\n                }\n                // immediate\n                {\n\n                    // var ex = new Exception();\n                    var source = new Subject<int>();\n                    var rxProp = source.ToReadOnlyReactiveProperty();\n\n                    var record = rxProp.Record();\n\n                    source.OnError(new Exception());\n\n                    var notifications = record.Notifications;\n                    notifications.Count.Is(1);\n                    notifications[0].Kind.Is(NotificationKind.OnError);\n\n                    rxProp.Record().Notifications[0].Kind.Is(NotificationKind.OnError);\n                }\n            }\n        }\n\n        [Test]\n        public void WithLastTest()\n        {\n            var rp1 = Observable.Return(\"1\").ToReadOnlyReactiveProperty();\n            rp1.Last().Record().Notifications.Is(\n                Notification.CreateOnNext(\"1\"),\n                Notification.CreateOnCompleted<string>());\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ReactivePropertyTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2e3cbb4d78d4fd847953dab940efa204\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ReactriveDictionaryTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n    // Move to Unity Tests...\n\n    //\n    //public class ReactriveDictionaryTest\n    //{\n    //    [Test]\n    //    public void RxDictObserve()\n    //    {\n    //        var dict = new ReactiveDictionary<string, int>();\n\n    //        var count = 0;\n    //        DictionaryAddEvent<string, int> addE = default(DictionaryAddEvent<string, int>);\n    //        DictionaryRemoveEvent<string, int> removeE = default(DictionaryRemoveEvent<string, int>);\n    //        DictionaryReplaceEvent<string, int> replaceE = default(DictionaryReplaceEvent<string, int>);\n    //        var resetCount = 0;\n\n    //        dict.ObserveCountChanged().Subscribe(x => count = x);\n    //        dict.ObserveAdd().Subscribe(x => addE = x);\n    //        dict.ObserveRemove().Subscribe(x => removeE = x);\n    //        dict.ObserveReplace().Subscribe(x => replaceE = x);\n    //        dict.ObserveReset().Subscribe(x => resetCount += 1);\n\n    //        dict.Add(\"a\", 100);\n    //        count.Is(1);\n    //        addE.Key.Is(\"a\"); addE.Value.Is(100);\n\n    //        dict.Add(\"b\", 200);\n    //        count.Is(2);\n    //        addE.Key.Is(\"b\"); addE.Value.Is(200);\n\n    //        count = -1;\n    //        dict[\"a\"] = 300;\n    //        count.Is(-1); // not fired\n    //        addE.Key.Is(\"b\"); // not fired\n    //        replaceE.Key.Is(\"a\"); replaceE.OldValue.Is(100); replaceE.NewValue.Is(300);\n\n    //        dict[\"c\"] = 400;\n    //        count.Is(3);\n    //        replaceE.Key.Is(\"a\"); // not fired\n    //        addE.Key.Is(\"c\"); addE.Value.Is(400);\n\n    //        dict.Remove(\"b\");\n    //        count.Is(2);\n    //        removeE.Key.Is(\"b\"); removeE.Value.Is(200);\n\n    //        count = -1;\n    //        dict.Remove(\"z\");\n    //        count.Is(-1); // not fired\n    //        removeE.Key.Is(\"b\"); // not fired\n\n    //        dict.Clear();\n    //        count.Is(0);\n    //        resetCount.Is(1);\n\n    //        count = -1;\n    //        dict.Clear();\n    //        resetCount.Is(2);\n    //        count.Is(-1); // not fired\n    //    }\n    //}\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ReactriveDictionaryTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7ae4acf2a5a9d1a4a828575545902f45\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/SchedulerTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections.Generic;\n\nnamespace UniRx.Tests\n{\n    \n    public class SchedulerTest\n    {\n        private static string[] ScheduleTasks(IScheduler scheduler)\n        {\n            var list = new List<string>();\n\n            Action leafAction = () => list.Add(\"----leafAction.\");\n            Action innerAction = () =>\n            {\n                list.Add(\"--innerAction start.\");\n                scheduler.Schedule(leafAction);\n                list.Add(\"--innerAction end.\");\n            };\n            Action outerAction = () =>\n            {\n                list.Add(\"outer start.\");\n                scheduler.Schedule(innerAction);\n                list.Add(\"outer end.\");\n            };\n            scheduler.Schedule(outerAction);\n\n            return list.ToArray();\n        }\n\n        [Test]\n        public void CurrentThread()\n        {\n            var hoge = ScheduleTasks(Scheduler.CurrentThread);\n            hoge.Is(\"outer start.\", \"outer end.\", \"--innerAction start.\", \"--innerAction end.\", \"----leafAction.\");\n        }\n        [Test]\n        public void CurrentThread2()\n        {\n            var scheduler = Scheduler.CurrentThread;\n\n            var list = new List<string>();\n            scheduler.Schedule(() =>\n            {\n                list.Add(\"one\");\n\n                scheduler.Schedule(TimeSpan.FromSeconds(3), () =>\n                {\n                    list.Add(\"after 3\");\n                });\n\n                scheduler.Schedule(TimeSpan.FromSeconds(1), () =>\n                {\n                    list.Add(\"after 1\");\n                });\n            });\n\n            list.Is(\"one\", \"after 1\", \"after 3\");\n        }\n\n        [Test]\n        public void CurrentThread3()\n        {\n            var scheduler = Scheduler.CurrentThread;\n\n            var list = new List<string>();\n            scheduler.Schedule(() =>\n            {\n                list.Add(\"one\");\n\n                var cancel = scheduler.Schedule(TimeSpan.FromSeconds(3), () =>\n                {\n                    list.Add(\"after 3\");\n                });\n\n                scheduler.Schedule(TimeSpan.FromSeconds(1), () =>\n                {\n                    list.Add(\"after 1\");\n                    cancel.Dispose();\n                });\n            });\n\n            list.Is(\"one\", \"after 1\");\n        }\n\n        [Test]\n        public void Immediate()\n        {\n            var hoge = ScheduleTasks(Scheduler.Immediate);\n            hoge.Is(\"outer start.\", \"--innerAction start.\", \"----leafAction.\", \"--innerAction end.\", \"outer end.\");\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/SchedulerTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: be079fab84b109f4fae7ea65c3f2708c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/SelectMany.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests.Operators\n{\n    \n    public class SelectMany\n    {\n        [Test]\n        public void Selector()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c)\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext(200)\", \"OnNext(300)\", \"OnNext(400)\", \"OnCompleted()\");\n            }\n            {\n                // OnError A\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c)\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnError(new Exception());\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext(200)\", \"OnNext(300)\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnError B\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c)\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnError(new Exception());\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext(200)\", \"OnNext(300)\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnCompleted Case2\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c)\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                b.OnCompleted();\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext(200)\", \"OnNext(300)\");\n\n                a.OnCompleted();\n\n                list.Is(\"OnNext(200)\", \"OnNext(300)\", \"OnCompleted()\");\n            }\n        }\n\n        [Test]\n        public void SelectorWithIndex()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((200, 0))\", \"OnNext((300, 1))\", \"OnNext((400, 1))\", \"OnCompleted()\");\n            }\n            {\n                // OnError A\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnError(new Exception());\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((200, 0))\", \"OnNext((300, 1))\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnError B\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnError(new Exception());\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((200, 0))\", \"OnNext((300, 1))\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [Test]\n        public void SelectorEnumerable()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? Enumerable.Range(1, 3) : Enumerable.Repeat(10, 3))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnCompleted();\n\n                // check\n                list.Is(\"OnNext(1)\", \"OnNext(2)\", \"OnNext(3)\", \"OnNext(10)\", \"OnNext(10)\", \"OnNext(10)\", \"OnCompleted()\");\n            }\n            {\n                // OnError Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? Enumerable.Range(1, 3) : Enumerable.Repeat(10, 3))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnError(new Exception());\n\n                // check\n                list.Is(\"OnNext(1)\", \"OnNext(2)\", \"OnNext(3)\", \"OnNext(10)\", \"OnNext(10)\", \"OnNext(10)\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [Test]\n        public void SelectorEnumerableWithIndex()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? Enumerable.Range(i, 3) : Enumerable.Repeat(i, 3))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnCompleted();\n\n                // check\n                list.Is(\"OnNext(0)\", \"OnNext(1)\", \"OnNext(2)\", \"OnNext(1)\", \"OnNext(1)\", \"OnNext(1)\", \"OnCompleted()\");\n            }\n            {\n                // OnError Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? Enumerable.Range(i, 3) : Enumerable.Repeat(i, 3))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnError(new Exception());\n\n                // check\n                list.Is(\"OnNext(0)\", \"OnNext(1)\", \"OnNext(2)\", \"OnNext(1)\", \"OnNext(1)\", \"OnNext(1)\", \"OnError(System.Exception)\");\n            }\n        }\n\n\n\n        [Test]\n        public void ResultSelector()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c, (x, y) => Tuple.Create(x, y))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((10, 200))\", \"OnNext((100, 300))\", \"OnNext((100, 400))\", \"OnCompleted()\");\n            }\n            {\n                // OnError A\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c, (x, y) => Tuple.Create(x, y))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnError(new Exception());\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((10, 200))\", \"OnNext((100, 300))\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnError B\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c, (x, y) => Tuple.Create(x, y))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnError(new Exception());\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((10, 200))\", \"OnNext((100, 300))\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [Test]\n        public void ResultSelectorWithIndex()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)), (x, i1, y, i2) => Tuple.Create(x, i1, y.Item1, y.Item2, i2))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((10, 0, 200, 0, 0))\", \"OnNext((100, 1, 300, 1, 0))\", \"OnNext((100, 1, 400, 1, 1))\", \"OnCompleted()\");\n            }\n            {\n                // OnError A\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)), (x, i1, y, i2) => Tuple.Create(x, i1, y.Item1, y.Item2, i2))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnError(new Exception());\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((10, 0, 200, 0, 0))\", \"OnNext((100, 1, 300, 1, 0))\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnError B\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)), (x, i1, y, i2) => Tuple.Create(x, i1, y.Item1, y.Item2, i2))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnError(new Exception());\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((10, 0, 200, 0, 0))\", \"OnNext((100, 1, 300, 1, 0))\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [Test]\n        public void ResultSelectorEnumerable()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? Enumerable.Range(1, 3) : Enumerable.Repeat(10, 3), (x, y) => Tuple.Create(x, y))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((10, 1))\", \"OnNext((10, 2))\", \"OnNext((10, 3))\", \"OnNext((100, 10))\", \"OnNext((100, 10))\", \"OnNext((100, 10))\", \"OnCompleted()\");\n            }\n            {\n                // OnError Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? Enumerable.Range(1, 3) : Enumerable.Repeat(10, 3), (x, y) => Tuple.Create(x, y))\n                 .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnError(new Exception());\n\n                // check\n                list.Is(\"OnNext((10, 1))\", \"OnNext((10, 2))\", \"OnNext((10, 3))\", \"OnNext((100, 10))\", \"OnNext((100, 10))\", \"OnNext((100, 10))\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [Test]\n        public void ResultSelectorEnumerableWithIndex()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? Enumerable.Range(i, 3) : Enumerable.Repeat(i, 3), (x, i1, y, i2) => Tuple.Create(x, i1, y, i2))\n                 .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnCompleted();\n\n                // check\n                list.Is(\"OnNext((10, 0, 0, 0))\", \"OnNext((10, 0, 1, 1))\", \"OnNext((10, 0, 2, 2))\", \"OnNext((100, 1, 1, 0))\", \"OnNext((100, 1, 1, 1))\", \"OnNext((100, 1, 1, 2))\", \"OnCompleted()\");\n            }\n            {\n                // OnError Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? Enumerable.Range(i, 3) : Enumerable.Repeat(i, 3), (x, i1, y, i2) => Tuple.Create(x, i1, y, i2))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnError(new Exception());\n\n                // check\n                list.Is(\"OnNext((10, 0, 0, 0))\", \"OnNext((10, 0, 1, 1))\", \"OnNext((10, 0, 2, 2))\", \"OnNext((100, 1, 1, 0))\", \"OnNext((100, 1, 1, 1))\", \"OnNext((100, 1, 1, 2))\", \"OnError(System.Exception)\");\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/SelectMany.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 10de6724883eb154aaddb020b1bb7e0d\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/SelectWhereOptimizeTest.cs",
    "content": "﻿using NUnit.Framework;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Tests\n{\n    \n    public class SelectWhereOptimizeTest\n    {\n        [Test]\n        public void SelectSelect()\n        {\n            // Combine selector currently disabled.\n            //var selectselect = Observable.Range(1, 10)\n            //    .Select(x => x)\n            //    .Select(x => x * -1);\n        }\n\n        [Test]\n        public void WhereWhere()\n        {\n            var wherewhere = Observable.Range(1, 10)\n                .Where(x => x % 2 == 0)\n                .Where(x => x > 5);\n\n            wherewhere.ToArrayWait().Is(6, 8, 10);\n\n            var wherewhere2 = Observable.Range(1, 10)\n                .Where((x, i) => x % 2 == 0)\n                .Where(x => x > 5);\n\n            wherewhere2.ToArrayWait().Is(6, 8, 10);\n        }\n\n        [Test]\n        public void SelectWhere()\n        {\n            var selectWhere = Observable.Range(1, 10)\n                .Select(x => x * x)\n                .Where(x => x % 2 == 0);\n\n            selectWhere.GetType().Name.Contains(\"SelectWhere\").IsTrue();\n            selectWhere.ToArrayWait().Is(4, 16, 36, 64, 100);\n\n            var selectWhere2 = Observable.Range(1, 10)\n                .Select((x, i) => x * x)\n                .Where(x => x % 2 == 0);\n\n            selectWhere2.GetType().Name.Contains(\"SelectWhere\").IsFalse();\n            selectWhere2.ToArrayWait().Is(4, 16, 36, 64, 100);\n        }\n\n        [Test]\n        public void WhereSelect()\n        {\n            var whereSelect = Observable.Range(1, 10)\n                .Where(x => x % 2 == 0)\n                .Select(x => x * x);\n\n            whereSelect.GetType().Name.Contains(\"WhereSelect\").IsTrue();\n            whereSelect.ToArrayWait().Is(4, 16, 36, 64, 100);\n\n            var whereSelect2 = Observable.Range(1, 10)\n                .Where((x, i) => x % 2 == 0)\n                .Select(x => x * x);\n\n            whereSelect2.GetType().Name.Contains(\"WhereSelect\").IsFalse();\n            whereSelect2.ToArrayWait().Is(4, 16, 36, 64, 100);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/SelectWhereOptimizeTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: df3f6916345f42040988e76e64941143\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/SubjectTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n    \n    public class SubjectTests\n    {\n        [Test]\n        public void Subject()\n        {\n            // OnCompletedPattern\n            {\n                var subject = new Subject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.Is(1, 10, 100, 1000);\n\n                subject.OnCompleted();\n                onCompletedCallCount.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(4);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n\n                // ++subscription\n                onNext.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n            }\n\n            // OnErrorPattern\n            {\n                var subject = new Subject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.Is(1, 10, 100, 1000);\n\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(4);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n\n                // ++subscription\n                onNext.Clear();\n                exception.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n            }\n        }\n\n        [Test]\n        public void SubjectSubscribeTest()\n        {\n            var subject = new Subject<int>();\n            var listA = new List<int>();\n            var listB = new List<int>();\n            var listC = new List<int>();\n            subject.HasObservers.IsFalse();\n\n            var listASubscription = subject.Subscribe(x => listA.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(1);\n            listA[0].Is(1);\n\n            var listBSubscription = subject.Subscribe(x => listB.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(2);\n            listA[1].Is(2);\n            listB[0].Is(2);\n\n            var listCSubscription = subject.Subscribe(x => listC.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(3);\n            listA[2].Is(3);\n            listB[1].Is(3);\n            listC[0].Is(3);\n\n            listASubscription.Dispose();\n            subject.HasObservers.IsTrue();\n            subject.OnNext(4);\n            listA.Count.Is(3);\n            listB[2].Is(4);\n            listC[1].Is(4);\n\n            listCSubscription.Dispose();\n            subject.HasObservers.IsTrue();\n            subject.OnNext(5);\n            listC.Count.Is(2);\n            listB[3].Is(5);\n\n            listBSubscription.Dispose();\n            subject.HasObservers.IsFalse();\n            subject.OnNext(6);\n            listB.Count.Is(4);\n\n            var listD = new List<int>();\n            var listE = new List<int>();\n\n            subject.Subscribe(x => listD.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(1);\n            listD[0].Is(1);\n\n            subject.Subscribe(x => listE.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(2);\n            listD[1].Is(2);\n            listE[0].Is(2);\n\n            subject.Dispose();\n\n            Assert.Throws<ObjectDisposedException>(() => subject.OnNext(0));\n            Assert.Throws<ObjectDisposedException>(() => subject.OnError(new Exception()));\n            Assert.Throws<ObjectDisposedException>(() => subject.OnCompleted());\n        }\n\n        [Test]\n        public void AsyncSubjectTest()\n        {\n            // OnCompletedPattern\n            {\n                var subject = new AsyncSubject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.Count.Is(0);\n\n                subject.OnCompleted();\n                onNext.Is(1000);\n                onCompletedCallCount.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(1);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n\n                // ++subscription\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Is(1000, 1000);\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(2);\n            }\n\n            // OnErrorPattern\n            {\n                var subject = new AsyncSubject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.Count.Is(0);\n\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(0);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n\n                // ++subscription\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(2);\n                onCompletedCallCount.Is(0);\n            }\n        }\n\n        [Test]\n        public void BehaviorSubject()\n        {\n            // OnCompletedPattern\n            {\n                var subject = new BehaviorSubject<int>(3333);\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                var _ = subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                onNext.Is(3333);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n\n                onNext.Is(3333, 1, 10, 100, 1000);\n\n                // re subscription\n                onNext.Clear();\n                _.Dispose();\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Is(1000);\n\n                subject.OnCompleted();\n                onCompletedCallCount.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(1);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n\n                // ++subscription\n                onNext.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n            }\n\n            // OnErrorPattern\n            {\n                var subject = new BehaviorSubject<int>(3333);\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.Is(3333, 1, 10, 100, 1000);\n\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(5);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n\n                // ++subscription\n                onNext.Clear();\n                exception.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n            }\n        }\n\n        [Test]\n        public void ReplaySubject()\n        {\n            // OnCompletedPattern\n            {\n                var subject = new ReplaySubject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                var _ = subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.Is(1, 10, 100, 1000);\n\n                // replay subscription\n                onNext.Clear();\n                _.Dispose();\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Is(1, 10, 100, 1000);\n\n                subject.OnCompleted();\n                onCompletedCallCount.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(4);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n\n                // ++subscription\n                onNext.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Is(1, 10, 100, 1000);\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n            }\n\n            // OnErrorPattern\n            {\n                var subject = new ReplaySubject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.Is(1, 10, 100, 1000);\n\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(4);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n\n                // ++subscription\n                onNext.Clear();\n                exception.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Is(1, 10, 100, 1000);\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n            }\n        }\n\n        public void ReplaySubjectBufferReplay()\n        {\n            var subject = new ReplaySubject<int>(bufferSize: 3);\n\n            var onNext = new List<int>();\n            var exception = new List<Exception>();\n            int onCompletedCallCount = 0;\n            var _ = subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n            subject.OnNext(1);\n            subject.OnNext(10);\n            subject.OnNext(100);\n            subject.OnNext(1000);\n            subject.OnNext(10000);\n            onNext.Is(100, 1000, 10000);  // cut 1, 10\n\n            // replay subscription\n            onNext.Clear();\n            _.Dispose();\n            subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n            onNext.Is(100, 1000, 10000);\n\n            subject.OnNext(20000);\n            onNext.Is(1000, 10000, 20000);\n\n            subject.OnCompleted();\n            onCompletedCallCount.Is(1);\n        }\n\n        [Test]\n        public void ReplaySubjectWindowReplay()\n        {\n            var subject = new ReplaySubject<int>(window: TimeSpan.FromMilliseconds(700));\n\n            var onNext = new List<int>();\n            var exception = new List<Exception>();\n            int onCompletedCallCount = 0;\n            var _ = subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n            subject.OnNext(1); // 0\n            Thread.Sleep(TimeSpan.FromMilliseconds(300));\n\n            subject.OnNext(10); // 300\n            Thread.Sleep(TimeSpan.FromMilliseconds(300));\n\n            subject.OnNext(100); // 600\n            Thread.Sleep(TimeSpan.FromMilliseconds(300));\n\n            _.Dispose();\n            onNext.Clear();\n            subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n            onNext.Is(10, 100);\n\n            subject.OnNext(1000); // 900\n            Thread.Sleep(TimeSpan.FromMilliseconds(300));\n\n            _.Dispose();\n            onNext.Clear();\n            subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n            onNext.Is(100, 1000);\n\n            subject.OnNext(10000); // 1200\n            Thread.Sleep(TimeSpan.FromMilliseconds(500));\n\n            subject.OnNext(2); // 1500\n            Thread.Sleep(TimeSpan.FromMilliseconds(10));\n\n            subject.OnNext(20); // 1800\n            Thread.Sleep(TimeSpan.FromMilliseconds(10));\n\n            _.Dispose();\n            onNext.Clear();\n            subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n            onNext.Is(10000, 2, 20);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/SubjectTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 353f69ed67a6d0c45b772c9e74d05822\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/TakeTest.cs",
    "content": "﻿using System;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests.Operators\n{\n    public class TakeTest\n    {\n        [Test]\n        public void TakeCount()\n        {\n            var range = Observable.Range(1, 10);\n\n            Assert.Throws<ArgumentOutOfRangeException>(() => range.Take(-1));\n\n            range.Take(0).ToArray().Wait().Length.Is(0);\n\n            range.Take(3).ToArrayWait().Is(1, 2, 3);\n            range.Take(15).ToArrayWait().Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/TakeTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 9fbdf37d25a789c49952e85ccf36abef\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ToTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests.Operators\n{\n    \n    public class ToTest\n    {\n\n        [Test]\n        public void ToArray()\n        {\n            Observable.Empty<int>().ToArray().Wait().Is();\n            Observable.Return(10).ToArray().Wait().Is(10);\n            Observable.Range(1, 10).ToArray().Wait().Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n\n        [Test]\n        public void ToList()\n        {\n            Observable.Empty<int>().ToList().Wait().Is();\n            Observable.Return(10).ToList().Wait().Is(10);\n            Observable.Range(1, 10).ToList().Wait().Is(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/ToTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 4fd21f1e3d06cb142be852d91d0bff3c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/WhenAllTest.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing NUnit.Framework;\n\nnamespace UniRx.Tests.Operators\n{\n    public class WhenAllTest\n    {\n        [SetUp]\n        public void Init()\n        {\n            TestUtil.SetScehdulerForImport();\n        }\n\n        [TearDown]\n        public void Dispose()\n        {\n            UniRx.Scheduler.SetDefaultForUnity();\n        }\n\n        [Test]\n        public void WhenAllEmpty()\n        {\n            var xs = Observable.WhenAll(new IObservable<int>[0]).Wait();\n            xs.Length.Is(0);\n\n            var xs2 = Observable.WhenAll(Enumerable.Empty<IObservable<int>>().Select(x => x)).Wait();\n            xs2.Length.Is(0);\n        }\n\n        [Test]\n        public void WhenAll()\n        {\n            var xs = Observable.WhenAll(\n                    Observable.Return(100),\n                    Observable.Timer(TimeSpan.FromSeconds(1)).Select(_ => 5),\n                    Observable.Range(1, 4))\n                .Wait();\n\n            xs.Is(100, 5, 4);\n        }\n\n        [Test]\n        public void WhenAllEnumerable()\n        {\n            var xs = new[] {\n                    Observable.Return(100),\n                    Observable.Timer(TimeSpan.FromSeconds(1)).Select(_ => 5),\n                    Observable.Range(1, 4)\n            }.Select(x => x).WhenAll().Wait();\n\n            xs.Is(100, 5, 4);\n        }\n\n        [Test]\n        public void WhenAllUnitEmpty()\n        {\n            var xs = Observable.WhenAll(new IObservable<Unit>[0]).Wait();\n            xs.Is(Unit.Default);\n\n            var xs2 = Observable.WhenAll(Enumerable.Empty<IObservable<Unit>>().Select(x => x)).Wait();\n            xs2.Is(Unit.Default);\n        }\n\n        [Test]\n        public void WhenAllUnit()\n        {\n            var xs = Observable.WhenAll(\n                    Observable.Return(100).AsUnitObservable(),\n                    Observable.Timer(TimeSpan.FromSeconds(1)).AsUnitObservable(),\n                    Observable.Range(1, 4).AsUnitObservable())\n                .Wait();\n\n            xs.Is(Unit.Default);\n        }\n\n        [Test]\n        public void WhenAllUnitEnumerable()\n        {\n            var xs = new[] {\n                    Observable.Return(100).AsUnitObservable(),\n                    Observable.Timer(TimeSpan.FromSeconds(1)).AsUnitObservable(),\n                    Observable.Range(1, 4).AsUnitObservable()\n            }.Select(x => x).WhenAll().Wait();\n\n            xs.Is(Unit.Default);\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx/WhenAllTest.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 70a8977a3e609db47af8328f76421d7d\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/Rx.meta",
    "content": "fileFormatVersion: 2\nguid: c2d5c4af91fc8794fb3b3c44cbb4720b\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/TestUtil.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Tests\n{\n    public static class TestUtil\n    {\n        public static T[] ToArrayWait<T>(this IObservable<T> source)\n        {\n            return source.ToArray().Wait();\n        }\n\n        public static RecordObserver<T> Record<T>(this IObservable<T> source)\n        {\n            var d = new SingleAssignmentDisposable();\n            var observer = new RecordObserver<T>(d);\n            d.Disposable = source.Subscribe(observer);\n\n            return observer;\n        }\n\n        public static void SetScehdulerForImport()\n        {\n            Scheduler.DefaultSchedulers.ConstantTimeOperations = Scheduler.Immediate;\n            Scheduler.DefaultSchedulers.TailRecursion = Scheduler.Immediate;\n            Scheduler.DefaultSchedulers.Iteration = Scheduler.CurrentThread;\n            Scheduler.DefaultSchedulers.TimeBasedOperations = Scheduler.ThreadPool;\n            Scheduler.DefaultSchedulers.AsyncConversions = Scheduler.ThreadPool;\n        }\n    }\n\n    public class RecordObserver<T> : IObserver<T>\n    {\n        readonly object gate = new object();\n        readonly IDisposable subscription;\n\n        public List<T> Values { get; set; }\n        public List<Notification<T>> Notifications { get; set; }\n\n        public RecordObserver(IDisposable subscription)\n        {\n            this.subscription = subscription;\n            this.Values = new List<T>();\n            this.Notifications = new List<Notification<T>>();\n        }\n\n        public void DisposeSubscription()\n        {\n            subscription.Dispose();\n        }\n\n        void IObserver<T>.OnNext(T value)\n        {\n            lock (gate)\n            {\n                Values.Add(value);\n                Notifications.Add(Notification.CreateOnNext<T>(value));\n            }\n        }\n\n        void IObserver<T>.OnError(Exception error)\n        {\n            lock (gate)\n            {\n                Notifications.Add(Notification.CreateOnError<T>(error));\n            }\n        }\n        void IObserver<T>.OnCompleted()\n        {\n            lock (gate)\n            {\n                Notifications.Add(Notification.CreateOnCompleted<T>());\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Assets/Scripts/UnityTests/TestUtil.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 992f44a0f97514548936824499dba649\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests/UnityTests.asmdef",
    "content": "{\n    \"name\": \"UnityTests\",\n    \"references\": [\n        \"UniRx.Async\",\n        \"UniRx\"\n    ],\n    \"optionalUnityReferences\": [\n        \"TestAssemblies\"\n    ],\n    \"includePlatforms\": [],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false\n}"
  },
  {
    "path": "Assets/Scripts/UnityTests/UnityTests.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: d69a9b14912407043a761930c902a57c\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/UnityTests.meta",
    "content": "fileFormatVersion: 2\nguid: eb6271f9665d0244cb8aebae39d6fb4e\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts.meta",
    "content": "fileFormatVersion: 2\nguid: 1a9e319a95958e148ae30445acd4d797\nfolderAsset: yes\ntimeCreated: 1477278229\nlicenseType: Pro\nDefaultImporter:\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Dlls/UniRx/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"UniRx\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UniRx\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2016\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"8afad8d0-5d50-4a76-8380-e99fe108a1e8\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Dlls/UniRx/UniRx.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8AFAD8D0-5D50-4A76-8380-E99FE108A1E8}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UniRx</RootNamespace>\n    <AssemblyName>UniRx</AssemblyName>\n    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile>Unity Full v3.5</TargetFrameworkProfile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;UNITY;UNITY_2017_2_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_3_OR_NEWER;UNITY_5_4_0;UNITY_5_3_0;UNITY_5_3;UNITY_5;UNITY_STANDALONE_WIN;ENABLE_MICROPHONE;ENABLE_TEXTUREID_MAP;ENABLE_UNITYEVENTS;ENABLE_NEW_HIERARCHY ;ENABLE_AUDIO_FMOD;UNITY_STANDALONE;ENABLE_MONO;ENABLE_TERRAIN;ENABLE_SUBSTANCE;ENABLE_GENERICS;INCLUDE_WP8SUPPORT;ENABLE_MOVIES;ENABLE_WWW;ENABLE_IMAGEEFFECTS;ENABLE_4_6_FEATURES;INCLUDE_WP_BLUE_SUPPORT;ENABLE_WEBCAM;INCLUDE_METROSUPPORT;RENDER_SOFTWARE_CURSOR;ENABLE_NETWORK;ENABLE_PHYSICS;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_2D_PHYSICS;ENABLE_SHADOWS;ENABLE_AUDIO;ENABLE_NAVMESH_CARVING;ENABLE_DUCK_TYPING;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_PROFILER;UNITY_EDITOR;UNITY_EDITOR_WIN;UNITY_PRO_LICENSE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <DocumentationFile>bin\\Debug\\UniRx.xml</DocumentationFile>\n    <NoWarn>1591,1573</NoWarn>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>1591,1573</NoWarn>\n    <DocumentationFile>bin\\Release\\UniRx.xml</DocumentationFile>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"UnityEditor\">\n      <HintPath>Library\\UnityAssemblies\\UnityEditor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CoreModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.CoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AccessibilityModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.AccessibilityModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ParticleSystemModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.ParticleSystemModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PhysicsModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.PhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VehiclesModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.VehiclesModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClothModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.ClothModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AIModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.AIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AnimationModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.AnimationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextRenderingModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.TextRenderingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainPhysicsModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.TerrainPhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.IMGUIModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.IMGUIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UnityWebRequestModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAudioModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UnityWebRequestAudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestTextureModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UnityWebRequestTextureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestWWWModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UnityWebRequestWWWModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterInputModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.ClusterInputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterRendererModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.ClusterRendererModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UNETModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UNETModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.DirectorModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.DirectorModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityAnalyticsModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UnityAnalyticsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CrashReportingModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.CrashReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PerformanceReportingModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.PerformanceReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityConnectModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UnityConnectModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.WebModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.WebModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ARModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.ARModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VRModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.VRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIElementsModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UIElementsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StyleSheetsModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.StyleSheetsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AudioModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.AudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GameCenterModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.GameCenterModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GridModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.GridModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ImageConversionModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.ImageConversionModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.InputModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.InputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.JSONSerializeModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.JSONSerializeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ParticlesLegacyModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.ParticlesLegacyModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Physics2DModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.Physics2DModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ScreenCaptureModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.ScreenCaptureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteMaskModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.SpriteMaskModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.TerrainModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TilemapModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.TilemapModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VideoModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.VideoModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.WindModule\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.WindModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UI\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Networking\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.Networking.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TestRunner\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"nunit.framework\">\n      <HintPath>Library\\UnityAssemblies\\nunit.framework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Timeline\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.Timeline.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIAutomation\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.UIAutomation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GoogleAudioSpatializer\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.GoogleAudioSpatializer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.HoloLens\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.HoloLens.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpatialTracking\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.SpatialTracking.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Analytics\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.Analytics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Purchasing\">\n      <HintPath>Library\\UnityAssemblies\\UnityEngine.Purchasing.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Asynchronous\\WebRequestExtensions.cs\">\n      <Link>Asynchronous\\WebRequestExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\BooleanDisposable.cs\">\n      <Link>Disposables\\BooleanDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\CancellationDisposable.cs\">\n      <Link>Disposables\\CancellationDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\CompositeDisposable.cs\">\n      <Link>Disposables\\CompositeDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\DictionaryDisposable.cs\">\n      <Link>Disposables\\DictionaryDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\Disposable.cs\">\n      <Link>Disposables\\Disposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\DisposableExtensions.cs\">\n      <Link>Disposables\\DisposableExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\ICancelable.cs\">\n      <Link>Disposables\\ICancelable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\MultipleAssignmentDisposable.cs\">\n      <Link>Disposables\\MultipleAssignmentDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\RefCountDisposable.cs\">\n      <Link>Disposables\\RefCountDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\ScheduledDisposable.cs\">\n      <Link>Disposables\\ScheduledDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\SerialDisposable.cs\">\n      <Link>Disposables\\SerialDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\SingleAssignmentDisposable.cs\">\n      <Link>Disposables\\SingleAssignmentDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\StableCompositeDisposable.cs\">\n      <Link>Disposables\\StableCompositeDisposable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\EventPattern.cs\">\n      <Link>EventPattern.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\AscynLock.cs\">\n      <Link>InternalUtil\\AscynLock.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ExceptionExtensions.cs\">\n      <Link>ExceptionExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ImmutableList.cs\">\n      <Link>InternalUtil\\ImmutableList.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ListObserver.cs\">\n      <Link>InternalUtil\\ListObserver.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\MicroCoroutine.cs\">\n      <Link>InternalUtil\\MicroCoroutine.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\PriorityQueue.cs\">\n      <Link>InternalUtil\\PriorityQueue.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ReflectionAccessor.cs\">\n      <Link>InternalUtil\\ReflectionAccessor.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ScheduledItem.cs\">\n      <Link>InternalUtil\\ScheduledItem.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ThreadSafeQueueWorker.cs\">\n      <Link>InternalUtil\\ThreadSafeQueueWorker.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notification.cs\">\n      <Link>Notification.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\BooleanNotifier.cs\">\n      <Link>Notifiers\\BooleanNotifier.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\CountNotifier.cs\">\n      <Link>Notifiers\\CountNotifier.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\MessageBroker.cs\">\n      <Link>Notifiers\\MessageBroker.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\ScheduledNotifier.cs\">\n      <Link>Notifiers\\ScheduledNotifier.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Aggregate.cs\">\n      <Link>Observable.Aggregate.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Awaiter.cs\">\n      <Link>Observable.Awaiter.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Binding.cs\">\n      <Link>Observable.Binding.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Blocking.cs\">\n      <Link>Observable.Blocking.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Concatenate.cs\">\n      <Link>Observable.Concatenate.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Concurrency.cs\">\n      <Link>Observable.Concurrency.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Conversions.cs\">\n      <Link>Observable.Conversions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Creation.cs\">\n      <Link>Observable.Creation.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.cs\">\n      <Link>Observable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.ErrorHandling.cs\">\n      <Link>Observable.ErrorHandling.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Events.cs\">\n      <Link>Observable.Events.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.FromAsync.cs\">\n      <Link>Observable.FromAsync.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Joins.cs\">\n      <Link>Observable.Joins.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Paging.cs\">\n      <Link>Observable.Paging.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Time.cs\">\n      <Link>Observable.Time.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observer.cs\">\n      <Link>Observer.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Aggregate.cs\">\n      <Link>Operators\\Aggregate.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Amb.cs\">\n      <Link>Operators\\Amb.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\AsObservable.cs\">\n      <Link>Operators\\AsObservable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\AsSingleUnitObservable.cs\">\n      <Link>Operators\\AsSingleUnitObservable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\AsUnitObservable.cs\">\n      <Link>Operators\\AsUnitObservable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Buffer.cs\">\n      <Link>Operators\\Buffer.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Cast.cs\">\n      <Link>Operators\\Cast.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Catch.cs\">\n      <Link>Operators\\Catch.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\CombineLatest.cs\">\n      <Link>Operators\\CombineLatest.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Concat.cs\">\n      <Link>Operators\\Concat.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ContinueWith.cs\">\n      <Link>Operators\\ContinueWith.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Create.cs\">\n      <Link>Operators\\Create.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\DefaultIfEmpty.cs\">\n      <Link>Operators\\DefaultIfEmpty.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Defer.cs\">\n      <Link>Operators\\Defer.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Delay.cs\">\n      <Link>Operators\\Delay.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\DelaySubscription.cs\">\n      <Link>Operators\\DelaySubscription.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Dematerialize.cs\">\n      <Link>Operators\\Dematerialize.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Distinct.cs\">\n      <Link>Operators\\Distinct.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\DistinctUntilChanged.cs\">\n      <Link>Operators\\DistinctUntilChanged.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Do.cs\">\n      <Link>Operators\\Do.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Empty.cs\">\n      <Link>Operators\\Empty.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Finally.cs\">\n      <Link>Operators\\Finally.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\First.cs\">\n      <Link>Operators\\First.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ForEachAsync.cs\">\n      <Link>Operators\\ForEachAsync.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\FromEvent.cs\">\n      <Link>Operators\\FromEvent.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\GroupBy.cs\">\n      <Link>Operators\\GroupBy.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\IgnoreElements.cs\">\n      <Link>Operators\\IgnoreElements.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Last.cs\">\n      <Link>Operators\\Last.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Materialize.cs\">\n      <Link>Operators\\Materialize.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Merge.cs\">\n      <Link>Operators\\Merge.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Never.cs\">\n      <Link>Operators\\Never.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ObserveOn.cs\">\n      <Link>Operators\\ObserveOn.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\OfType.cs\">\n      <Link>Operators\\OfType.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\OperatorObservableBase.cs\">\n      <Link>Operators\\OperatorObservableBase.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\OperatorObserverBase.cs\">\n      <Link>Operators\\OperatorObserverBase.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\PairWise.cs\">\n      <Link>Operators\\PairWise.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Range.cs\">\n      <Link>Operators\\Range.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\RefCount.cs\">\n      <Link>Operators\\RefCount.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Repeat.cs\">\n      <Link>Operators\\Repeat.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\RepeatSafe.cs\">\n      <Link>Operators\\RepeatSafe.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Return.cs\">\n      <Link>Operators\\Return.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Sample.cs\">\n      <Link>Operators\\Sample.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Scan.cs\">\n      <Link>Operators\\Scan.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Select.cs\">\n      <Link>Operators\\Select.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SelectMany.cs\">\n      <Link>Operators\\SelectMany.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SelectWhere.cs\">\n      <Link>Operators\\SelectWhere.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Single.cs\">\n      <Link>Operators\\Single.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Skip.cs\">\n      <Link>Operators\\Skip.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SkipUntil.cs\">\n      <Link>Operators\\SkipUntil.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SkipWhile.cs\">\n      <Link>Operators\\SkipWhile.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Start.cs\">\n      <Link>Operators\\Start.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\StartWith.cs\">\n      <Link>Operators\\StartWith.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SubscribeOn.cs\">\n      <Link>Operators\\SubscribeOn.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Switch.cs\">\n      <Link>Operators\\Switch.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Synchronize.cs\">\n      <Link>Operators\\Synchronize.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SynchronizedObserver.cs\">\n      <Link>Operators\\SynchronizedObserver.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Take.cs\">\n      <Link>Operators\\Take.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\TakeLast.cs\">\n      <Link>Operators\\TakeLast.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\TakeUntil.cs\">\n      <Link>Operators\\TakeUntil.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\TakeWhile.cs\">\n      <Link>Operators\\TakeWhile.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Throttle.cs\">\n      <Link>Operators\\Throttle.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ThrottleFirst.cs\">\n      <Link>Operators\\ThrottleFirst.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Throw.cs\">\n      <Link>Operators\\Throw.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\TimeInterval.cs\">\n      <Link>Operators\\TimeInterval.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Timeout.cs\">\n      <Link>Operators\\Timeout.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Timer.cs\">\n      <Link>Operators\\Timer.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Timestamp.cs\">\n      <Link>Operators\\Timestamp.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ToArray.cs\">\n      <Link>Operators\\ToArray.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ToList.cs\">\n      <Link>Operators\\ToList.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ToObservable.cs\">\n      <Link>Operators\\ToObservable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Wait.cs\">\n      <Link>Operators\\Wait.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\WhenAll.cs\">\n      <Link>Operators\\WhenAll.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Where.cs\">\n      <Link>Operators\\Where.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\WhereSelect.cs\">\n      <Link>Operators\\WhereSelect.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\WithLatestFrom.cs\">\n      <Link>Operators\\WithLatestFrom.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Zip.cs\">\n      <Link>Operators\\Zip.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ZipLatest.cs\">\n      <Link>Operators\\ZipLatest.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Pair.cs\">\n      <Link>Pair.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\CurrentThreadScheduler.cs\">\n      <Link>Schedulers\\CurrentThreadScheduler.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\ImmediateScheduler.cs\">\n      <Link>Schedulers\\ImmediateScheduler.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\IScheduler.cs\">\n      <Link>Schedulers\\IScheduler.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\Scheduler.cs\">\n      <Link>Schedulers\\Scheduler.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\ThreadPoolScheduler.cs\">\n      <Link>Schedulers\\ThreadPoolScheduler.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\AsyncSubject.cs\">\n      <Link>Subjects\\AsyncSubject.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\BehaviorSubject.cs\">\n      <Link>Subjects\\BehaviorSubject.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\ConnectableObservable.cs\">\n      <Link>Subjects\\ConnectableObservable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\ISubject.cs\">\n      <Link>Subjects\\ISubject.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\ReplaySubject.cs\">\n      <Link>Subjects\\ReplaySubject.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\Subject.cs\">\n      <Link>Subjects\\Subject.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\SubjectExtensions.cs\">\n      <Link>Subjects\\SubjectExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\IObservable.cs\">\n      <Link>System\\IObservable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\IObserver.cs\">\n      <Link>System\\IObserver.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\IOptimizedObservable.cs\">\n      <Link>System\\IOptimizedObservable.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\IProgress.cs\">\n      <Link>System\\IProgress.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\Tuple.cs\">\n      <Link>System\\Tuple.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\Unit.cs\">\n      <Link>System\\Unit.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Tasks\\TaskObservableExtensions.cs\">\n      <Link>Tasks\\TaskObservableExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\TimeInterval.cs\">\n      <Link>TimeInterval.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Timestamped.cs\">\n      <Link>Timestamped.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\AotSafeExtensions.cs\">\n      <Link>UnityEngineBridge\\AotSafeExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\AsyncOperationExtensions.cs\">\n      <Link>UnityEngineBridge\\AsyncOperationExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\CancellationToken.cs\">\n      <Link>UnityEngineBridge\\CancellationToken.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\CoroutineAsyncBridge.cs\">\n      <Link>UnityEngineBridge\\CoroutineAsyncBridge.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\LogEntry.cs\">\n      <Link>UnityEngineBridge\\Diagnostics\\LogEntry.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\LogEntryExtensions.cs\">\n      <Link>UnityEngineBridge\\Diagnostics\\LogEntryExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\Logger.cs\">\n      <Link>UnityEngineBridge\\Diagnostics\\Logger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\ObservableDebugExtensions.cs\">\n      <Link>UnityEngineBridge\\Diagnostics\\ObservableDebugExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\ObservableLogger.cs\">\n      <Link>UnityEngineBridge\\Diagnostics\\ObservableLogger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\UnityDebugSink.cs\">\n      <Link>UnityEngineBridge\\Diagnostics\\UnityDebugSink.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\FrameInterval.cs\">\n      <Link>UnityEngineBridge\\FrameInterval.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\InspectableReactiveProperty.cs\">\n      <Link>UnityEngineBridge\\InspectableReactiveProperty.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\InspectorDisplayDrawer.cs\">\n      <Link>UnityEngineBridge\\InspectorDisplayDrawer.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\LazyTask.cs\">\n      <Link>UnityEngineBridge\\LazyTask.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\LifetimeDisposableExtensions.cs\">\n      <Link>UnityEngineBridge\\LifetimeDisposableExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\MainThreadDispatcher.cs\">\n      <Link>UnityEngineBridge\\MainThreadDispatcher.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\MainThreadScheduler.cs\">\n      <Link>UnityEngineBridge\\MainThreadScheduler.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Observable.Unity.cs\">\n      <Link>UnityEngineBridge\\Observable.Unity.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ObservableMonoBehaviour.cs\">\n      <Link>UnityEngineBridge\\ObservableMonoBehaviour.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ObservableWWW.cs\">\n      <Link>UnityEngineBridge\\ObservableWWW.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ObserveExtensions.cs\">\n      <Link>UnityEngineBridge\\ObserveExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\BatchFrame.cs\">\n      <Link>UnityEngineBridge\\Operators\\BatchFrame.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\DelayFrame.cs\">\n      <Link>UnityEngineBridge\\Operators\\DelayFrame.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\DelayFrameSubscription.cs\">\n      <Link>UnityEngineBridge\\Operators\\DelayFrameSubscription.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\FrameInterval.cs\">\n      <Link>UnityEngineBridge\\Operators\\FrameInterval.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\FrameTimeInterval.cs\">\n      <Link>UnityEngineBridge\\Operators\\FrameTimeInterval.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\FromCoroutine.cs\">\n      <Link>UnityEngineBridge\\Operators\\FromCoroutine.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\RepeatUntil.cs\">\n      <Link>UnityEngineBridge\\Operators\\RepeatUntil.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\SampleFrame.cs\">\n      <Link>UnityEngineBridge\\Operators\\SampleFrame.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\SubscribeOnMainThread.cs\">\n      <Link>UnityEngineBridge\\Operators\\SubscribeOnMainThread.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\ThrottleFirstFrame.cs\">\n      <Link>UnityEngineBridge\\Operators\\ThrottleFirstFrame.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\ThrottleFrame.cs\">\n      <Link>UnityEngineBridge\\Operators\\ThrottleFrame.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\TimeoutFrame.cs\">\n      <Link>UnityEngineBridge\\Operators\\TimeoutFrame.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\PresenterBase.cs\">\n      <Link>UnityEngineBridge\\PresenterBase.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveCollection.cs\">\n      <Link>UnityEngineBridge\\ReactiveCollection.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveCommand.cs\">\n      <Link>UnityEngineBridge\\ReactiveCommand.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveDictionary.cs\">\n      <Link>UnityEngineBridge\\ReactiveDictionary.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveProperty.cs\">\n      <Link>UnityEngineBridge\\ReactiveProperty.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ScenePlaybackDetector.cs\">\n      <Link>UnityEngineBridge\\ScenePlaybackDetector.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Toolkit\\ObjectPool.cs\">\n      <Link>UnityEngineBridge\\Tookit\\ObjectPool.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableAnimatorTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableAnimatorTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableBeginDragTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableBeginDragTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableCancelTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableCancelTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableCanvasGroupChangedTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableCanvasGroupChangedTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableCollision2DTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableCollision2DTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableCollisionTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableCollisionTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableDeselectTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableDeselectTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableDestroyTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableDestroyTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableDragTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableDragTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableDropTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableDropTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableEnableTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableEnableTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableEndDragTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableEndDragTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableEventTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableEventTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableFixedUpdateTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableFixedUpdateTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableInitializePotentialDragTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableInitializePotentialDragTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableLateUpdateTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableLateUpdateTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableMouseTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableMouseTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableMoveTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableMoveTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableParticleTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableParticleTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerClickTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservablePointerClickTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerDownTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservablePointerDownTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerEnterTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservablePointerEnterTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerExitTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservablePointerExitTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerUpTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservablePointerUpTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableRectTransformTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableRectTransformTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableScrollTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableScrollTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableSelectTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableSelectTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableStateMachineTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableStateMachineTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableSubmitTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableSubmitTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTransformChangedTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableTransformChangedTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTrigger2DTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableTrigger2DTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTriggerBase.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableTriggerBase.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTriggerExtensions.Component.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableTriggerExtensions.Component.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTriggerExtensions.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableTriggerExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTriggerTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableTriggerTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableUpdateSelectedTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableUpdateSelectedTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableUpdateTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableUpdateTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableVisibleTrigger.cs\">\n      <Link>UnityEngineBridge\\Triggers\\ObservableVisibleTrigger.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\TypedMonoBehaviour.cs\">\n      <Link>UnityEngineBridge\\TypedMonoBehaviour.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\UniRxSynchronizationContext.cs\">\n      <Link>UnityEngineBridge\\UniRxSynchronizationContext.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\UnityEqualityComparer.cs\">\n      <Link>UnityEngineBridge\\UnityEqualityComparer.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\UnityEventExtensions.cs\">\n      <Link>UnityEngineBridge\\UnityEventExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\UnityGraphicExtensions.cs\">\n      <Link>UnityEngineBridge\\UnityGraphicExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\UnityUIComponentExtensions.cs\">\n      <Link>UnityEngineBridge\\UnityUIComponentExtensions.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\YieldInstructionCache.cs\">\n      <Link>UnityEngineBridge\\YieldInstructionCache.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityWinRTBridge\\Thread.cs\">\n      <Link>UnityWinRTBridge\\Thread.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityWinRTBridge\\ThreadPoolScheduler_UnityWinRT.cs\">\n      <Link>UnityWinRTBridge\\ThreadPoolScheduler_UnityWinRT.cs</Link>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup />\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.\n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Dlls/UniRx.Library/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"UniRx.Library\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"UniRx.Library\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Build and Revision Numbers \r\n// by using the '*' as shown below:\r\n// [assembly: AssemblyVersion(\"1.0.*\")]\r\n[assembly: AssemblyVersion(\"5.4.1.0\")]\r\n[assembly: AssemblyFileVersion(\"5.4.1.0\")]\r\n\r\n[assembly: InternalsVisibleTo(\"UniRx.Tests\")]"
  },
  {
    "path": "Dlls/UniRx.Library/UniRx.Library.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProjectGuid>{21C57E17-D4B8-4DA4-A6A2-07D8B2E5B3BD}</ProjectGuid>\r\n    <OutputType>Library</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>UniRx</RootNamespace>\r\n    <AssemblyName>UniRx</AssemblyName>\r\n    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>\r\n    <FileAlignment>512</FileAlignment>\r\n    <TargetFrameworkProfile />\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DefineConstants>TRACE;DEBUG;UniRxLibrary,CSHARP_7_OR_LATER</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>3</WarningLevel>\r\n    <DocumentationFile>bin\\Debug\\UniRx.xml</DocumentationFile>\r\n    <NoWarn>1573,1591</NoWarn>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <DebugType>pdbonly</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE;UniRxLibrary,CSHARP_7_OR_LATER</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n    <DocumentationFile>bin\\Release\\UniRx.xml</DocumentationFile>\r\n    <NoWarn>1591</NoWarn>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Xml\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Asynchronous\\WebRequestExtensions.cs\">\r\n      <Link>Asynchronous\\WebRequestExtensions.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\AsyncUnit.cs\">\r\n      <Link>Async\\AsyncUnit.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\CancellationTokenEqualityComparer.cs\">\r\n      <Link>Async\\CancellationTokenEqualityComparer.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\CancellationTokenExtensions.cs\">\r\n      <Link>Async\\CancellationTokenExtensions.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\CompilerServices\\AsyncMethodBuilderAttribute.cs\">\r\n      <Link>Async\\Compiler\\AsyncMethodBuilderAttribute.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\CompilerServices\\AsyncUniTaskMethodBuilder.cs\">\r\n      <Link>Async\\Compiler\\AsyncUniTaskMethodBuilder.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\CompilerServices\\AsyncUniTaskVoidMethodBuilder.cs\">\r\n      <Link>Async\\Compiler\\AsyncUniTaskVoidMethodBuilder.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\CompilerServices\\MoveNextRunner.cs\">\r\n      <Link>Async\\Compiler\\MoveNextRunner.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\DiagnosticsExtensions.cs\">\r\n      <Link>Async\\DiagnosticsExtensions.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\IAwaiter.cs\">\r\n      <Link>Async\\IAwaiter.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\ArrayPool.cs\">\r\n      <Link>Async\\Internal\\ArrayPool.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\ArrayPoolUtil.cs\">\r\n      <Link>Async\\Internal\\ArrayPoolUtil.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\ArrayUtil.cs\">\r\n      <Link>Async\\Internal\\ArrayUtil.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\CancellationTokenHelper.cs\">\r\n      <Link>Async\\Internal\\CancellationTokenHelper.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\Error.cs\">\r\n      <Link>Async\\Internal\\Error.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\Hack.cs\">\r\n      <Link>Async\\Internal\\Hack.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\LazyPromise.cs\">\r\n      <Link>Async\\Internal\\LazyPromise.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\MinimumQueue.cs\">\r\n      <Link>Async\\Internal\\MinimumQueue.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\PromiseHelper.cs\">\r\n      <Link>Async\\Internal\\PromiseHelper.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\ReusablePromise.cs\">\r\n      <Link>Async\\Internal\\ReusablePromise.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\RuntimeHelpersAbstraction.cs\">\r\n      <Link>Async\\Internal\\RuntimeHelpersAbstraction.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\TaskTracker.cs\">\r\n      <Link>InternalUtil\\TaskTracker.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\WeakDictionary.cs\">\r\n      <Link>InternalUtil\\WeakDictionary.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Progress.cs\">\r\n      <Link>Async\\Progress.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTask.cs\">\r\n      <Link>Async\\UniTask.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTask.Factory.cs\">\r\n      <Link>Async\\UniTask.Factory.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTask.Threading.cs\">\r\n      <Link>Async\\UniTask.Threading.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTask.WhenAll.cs\">\r\n      <Link>Async\\UniTask.WhenAll.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTask.WhenAll.Generated.cs\">\r\n      <Link>Async\\UniTask.WhenAll.Generated.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTask.WhenAny.cs\">\r\n      <Link>Async\\UniTask.WhenAny.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTask.WhenAny.Generated.cs\">\r\n      <Link>Async\\UniTask.WhenAny.Generated.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTaskCompletionSource.cs\">\r\n      <Link>Async\\UniTaskCompletionSource.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTaskExtensions.cs\">\r\n      <Link>Async\\UniTaskExtensions.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTaskScheduler.cs\">\r\n      <Link>Async\\UniTaskScheduler.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UniTaskVoid.cs\">\r\n      <Link>Async\\UniTaskVoid.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\UnityEqualityComparer.cs\">\r\n      <Link>Async\\UnityEqualityComparer.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\BooleanDisposable.cs\">\r\n      <Link>Disposables\\BooleanDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\CancellationDisposable.cs\">\r\n      <Link>Disposables\\CancellationDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\CompositeDisposable.cs\">\r\n      <Link>Disposables\\CompositeDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\DictionaryDisposable.cs\">\r\n      <Link>Disposables\\DictionaryDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\Disposable.cs\">\r\n      <Link>Disposables\\Disposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\DisposableExtensions.cs\">\r\n      <Link>Disposables\\DisposableExtensions.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\ICancelable.cs\">\r\n      <Link>Disposables\\ICancelable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\MultipleAssignmentDisposable.cs\">\r\n      <Link>Disposables\\MultipleAssignmentDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\RefCountDisposable.cs\">\r\n      <Link>Disposables\\RefCountDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\ScheduledDisposable.cs\">\r\n      <Link>Disposables\\ScheduledDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\SerialDisposable.cs\">\r\n      <Link>Disposables\\SerialDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\SingleAssignmentDisposable.cs\">\r\n      <Link>Disposables\\SingleAssignmentDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Disposables\\StableCompositeDisposable.cs\">\r\n      <Link>Disposables\\StableCompositeDisposable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\EventPattern.cs\">\r\n      <Link>EventPattern.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\AscynLock.cs\">\r\n      <Link>InternalUtil\\AscynLock.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ExceptionExtensions.cs\">\r\n      <Link>ExceptionExtensions.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ImmutableList.cs\">\r\n      <Link>InternalUtil\\ImmutableList.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ListObserver.cs\">\r\n      <Link>InternalUtil\\ListObserver.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\MicroCoroutine.cs\">\r\n      <Link>InternalUtil\\MicroCoroutine.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\PriorityQueue.cs\">\r\n      <Link>InternalUtil\\PriorityQueue.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ScheduledItem.cs\">\r\n      <Link>InternalUtil\\ScheduledItem.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ThreadSafeQueueWorker.cs\">\r\n      <Link>InternalUtil\\ThreadSafeQueueWorker.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notification.cs\">\r\n      <Link>Notification.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\BooleanNotifier.cs\">\r\n      <Link>Notifiers\\BooleanNotifier.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\CountNotifier.cs\">\r\n      <Link>Notifiers\\CountNotifier.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\MessageBroker.cs\">\r\n      <Link>Notifiers\\MessageBroker.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\ScheduledNotifier.cs\">\r\n      <Link>Notifiers\\ScheduledNotifier.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Aggregate.cs\">\r\n      <Link>Observable.Aggregate.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Awaiter.cs\">\r\n      <Link>Observable.Awaiter.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Binding.cs\">\r\n      <Link>Observable.Binding.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Blocking.cs\">\r\n      <Link>Observable.Blocking.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Concatenate.cs\">\r\n      <Link>Observable.Concatenate.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Concurrency.cs\">\r\n      <Link>Observable.Concurrency.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Conversions.cs\">\r\n      <Link>Observable.Conversions.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Creation.cs\">\r\n      <Link>Observable.Creation.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.cs\">\r\n      <Link>Observable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.ErrorHandling.cs\">\r\n      <Link>Observable.ErrorHandling.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Events.cs\">\r\n      <Link>Observable.Events.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.FromAsync.cs\">\r\n      <Link>Observable.FromAsync.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Joins.cs\">\r\n      <Link>Observable.Joins.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Paging.cs\">\r\n      <Link>Observable.Paging.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observable.Time.cs\">\r\n      <Link>Observable.Time.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Observer.cs\">\r\n      <Link>Observer.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Aggregate.cs\">\r\n      <Link>Operators\\Aggregate.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Amb.cs\">\r\n      <Link>Operators\\Amb.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\AsObservable.cs\">\r\n      <Link>Operators\\AsObservable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\AsSingleUnitObservable.cs\">\r\n      <Link>Operators\\AsSingleUnitObservable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\AsUnitObservable.cs\">\r\n      <Link>Operators\\AsUnitObservable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Buffer.cs\">\r\n      <Link>Operators\\Buffer.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Cast.cs\">\r\n      <Link>Operators\\Cast.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Catch.cs\">\r\n      <Link>Operators\\Catch.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\CombineLatest.cs\">\r\n      <Link>Operators\\CombineLatest.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Concat.cs\">\r\n      <Link>Operators\\Concat.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ContinueWith.cs\">\r\n      <Link>Operators\\ContinueWith.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Create.cs\">\r\n      <Link>Operators\\Create.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\DefaultIfEmpty.cs\">\r\n      <Link>Operators\\DefaultIfEmpty.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Defer.cs\">\r\n      <Link>Operators\\Defer.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Delay.cs\">\r\n      <Link>Operators\\Delay.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\DelaySubscription.cs\">\r\n      <Link>Operators\\DelaySubscription.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Dematerialize.cs\">\r\n      <Link>Operators\\Dematerialize.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Distinct.cs\">\r\n      <Link>Operators\\Distinct.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\DistinctUntilChanged.cs\">\r\n      <Link>Operators\\DistinctUntilChanged.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Do.cs\">\r\n      <Link>Operators\\Do.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Empty.cs\">\r\n      <Link>Operators\\Empty.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Finally.cs\">\r\n      <Link>Operators\\Finally.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\First.cs\">\r\n      <Link>Operators\\First.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ForEachAsync.cs\">\r\n      <Link>Operators\\ForEachAsync.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\FromEvent.cs\">\r\n      <Link>Operators\\FromEvent.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\GroupBy.cs\">\r\n      <Link>Operators\\GroupBy.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\IgnoreElements.cs\">\r\n      <Link>Operators\\IgnoreElements.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Last.cs\">\r\n      <Link>Operators\\Last.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Materialize.cs\">\r\n      <Link>Operators\\Materialize.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Merge.cs\">\r\n      <Link>Operators\\Merge.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Never.cs\">\r\n      <Link>Operators\\Never.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ObserveOn.cs\">\r\n      <Link>Operators\\ObserveOn.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\OfType.cs\">\r\n      <Link>Operators\\OfType.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\OperatorObservableBase.cs\">\r\n      <Link>Operators\\OperatorObservableBase.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\OperatorObserverBase.cs\">\r\n      <Link>Operators\\OperatorObserverBase.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\PairWise.cs\">\r\n      <Link>Operators\\PairWise.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Range.cs\">\r\n      <Link>Operators\\Range.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\RefCount.cs\">\r\n      <Link>Operators\\RefCount.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Repeat.cs\">\r\n      <Link>Operators\\Repeat.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\RepeatSafe.cs\">\r\n      <Link>Operators\\RepeatSafe.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Return.cs\">\r\n      <Link>Operators\\Return.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Sample.cs\">\r\n      <Link>Operators\\Sample.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Scan.cs\">\r\n      <Link>Operators\\Scan.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Select.cs\">\r\n      <Link>Operators\\Select.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SelectMany.cs\">\r\n      <Link>Operators\\SelectMany.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SelectWhere.cs\">\r\n      <Link>Operators\\SelectWhere.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Single.cs\">\r\n      <Link>Operators\\Single.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Skip.cs\">\r\n      <Link>Operators\\Skip.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SkipUntil.cs\">\r\n      <Link>Operators\\SkipUntil.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SkipWhile.cs\">\r\n      <Link>Operators\\SkipWhile.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Start.cs\">\r\n      <Link>Operators\\Start.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\StartWith.cs\">\r\n      <Link>Operators\\StartWith.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SubscribeOn.cs\">\r\n      <Link>Operators\\SubscribeOn.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Switch.cs\">\r\n      <Link>Operators\\Switch.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Synchronize.cs\">\r\n      <Link>Operators\\Synchronize.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\SynchronizedObserver.cs\">\r\n      <Link>Operators\\SynchronizedObserver.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Take.cs\">\r\n      <Link>Operators\\Take.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\TakeLast.cs\">\r\n      <Link>Operators\\TakeLast.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\TakeUntil.cs\">\r\n      <Link>Operators\\TakeUntil.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\TakeWhile.cs\">\r\n      <Link>Operators\\TakeWhile.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Throttle.cs\">\r\n      <Link>Operators\\Throttle.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ThrottleFirst.cs\">\r\n      <Link>Operators\\ThrottleFirst.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Throw.cs\">\r\n      <Link>Operators\\Throw.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\TimeInterval.cs\">\r\n      <Link>Operators\\TimeInterval.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Timeout.cs\">\r\n      <Link>Operators\\Timeout.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Timer.cs\">\r\n      <Link>Operators\\Timer.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Timestamp.cs\">\r\n      <Link>Operators\\Timestamp.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ToArray.cs\">\r\n      <Link>Operators\\ToArray.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ToList.cs\">\r\n      <Link>Operators\\ToList.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ToObservable.cs\">\r\n      <Link>Operators\\ToObservable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Wait.cs\">\r\n      <Link>Operators\\Wait.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\WhenAll.cs\">\r\n      <Link>Operators\\WhenAll.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Where.cs\">\r\n      <Link>Operators\\Where.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\WhereSelect.cs\">\r\n      <Link>Operators\\WhereSelect.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\WithLatestFrom.cs\">\r\n      <Link>Operators\\WithLatestFrom.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\Zip.cs\">\r\n      <Link>Operators\\Zip.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Operators\\ZipLatest.cs\">\r\n      <Link>Operators\\ZipLatest.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Pair.cs\">\r\n      <Link>Pair.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\CurrentThreadScheduler.cs\">\r\n      <Link>Schedulers\\CurrentThreadScheduler.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\ImmediateScheduler.cs\">\r\n      <Link>Schedulers\\ImmediateScheduler.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\IScheduler.cs\">\r\n      <Link>Schedulers\\IScheduler.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\Scheduler.cs\">\r\n      <Link>Schedulers\\Scheduler.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\ThreadPoolScheduler.cs\">\r\n      <Link>Schedulers\\ThreadPoolScheduler.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\AsyncSubject.cs\">\r\n      <Link>Subjects\\AsyncSubject.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\BehaviorSubject.cs\">\r\n      <Link>Subjects\\BehaviorSubject.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\ConnectableObservable.cs\">\r\n      <Link>Subjects\\ConnectableObservable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\ISubject.cs\">\r\n      <Link>Subjects\\ISubject.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\ReplaySubject.cs\">\r\n      <Link>Subjects\\ReplaySubject.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\Subject.cs\">\r\n      <Link>Subjects\\Subject.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Subjects\\SubjectExtensions.cs\">\r\n      <Link>Subjects\\SubjectExtensions.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\IObservable.cs\">\r\n      <Link>System\\IObservable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\IObserver.cs\">\r\n      <Link>System\\IObserver.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\IOptimizedObservable.cs\">\r\n      <Link>System\\IOptimizedObservable.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\IProgress.cs\">\r\n      <Link>System\\IProgress.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\Tuple.cs\">\r\n      <Link>System\\Tuple.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\System\\Unit.cs\">\r\n      <Link>System\\Unit.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Tasks\\TaskObservableExtensions.cs\">\r\n      <Link>Tasks\\TaskObservableExtensions.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\TimeInterval.cs\">\r\n      <Link>TimeInterval.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Timestamped.cs\">\r\n      <Link>Timestamped.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveCollection.cs\">\r\n      <Link>UnityEngineBridge\\ReactiveCollection.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveCommand.cs\">\r\n      <Link>UnityEngineBridge\\ReactiveCommand.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveDictionary.cs\">\r\n      <Link>UnityEngineBridge\\ReactiveDictionary.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveProperty.cs\">\r\n      <Link>UnityEngineBridge\\ReactiveProperty.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactivePropertyReusablePromise.cs\">\r\n      <Link>UnityEngineBridge\\ReactivePropertyReusablePromise.cs</Link>\r\n    </Compile>\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n  </ItemGroup>\r\n  <ItemGroup />\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r\n       Other similar extension points exist, see Microsoft.Common.targets.\r\n  <Target Name=\"BeforeBuild\">\r\n  </Target>\r\n  <Target Name=\"AfterBuild\">\r\n  </Target>\r\n  -->\r\n</Project>"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2018 Yoshifumi Kawai\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "ProjectSettings/AudioManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!11 &1\nAudioManager:\n  m_ObjectHideFlags: 0\n  m_Volume: 1\n  Rolloff Scale: 1\n  m_SpeedOfSound: 347\n  Doppler Factor: 1\n  Default Speaker Mode: 2\n  m_DSPBufferSize: 0\n  m_DisableAudio: 0\n"
  },
  {
    "path": "ProjectSettings/ClusterInputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!236 &1\nClusterInputManager:\n  m_ObjectHideFlags: 0\n  m_Inputs: []\n"
  },
  {
    "path": "ProjectSettings/DynamicsManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!55 &1\nPhysicsManager:\n  m_ObjectHideFlags: 0\n  serializedVersion: 3\n  m_Gravity: {x: 0, y: -9.81, z: 0}\n  m_DefaultMaterial: {fileID: 0}\n  m_BounceThreshold: 2\n  m_SleepThreshold: 0.005\n  m_DefaultContactOffset: 0.01\n  m_DefaultSolverIterations: 6\n  m_DefaultSolverVelocityIterations: 1\n  m_QueriesHitBackfaces: 0\n  m_QueriesHitTriggers: 1\n  m_EnableAdaptiveForce: 0\n  m_EnablePCM: 1\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n  m_AutoSimulation: 1\n  m_AutoSyncTransforms: 1\n"
  },
  {
    "path": "ProjectSettings/EditorBuildSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1045 &1\nEditorBuildSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_Scenes:\n  - enabled: 1\n    path: Assets/Scripts/Sandbox/SandboxScene.unity\n    guid: 0da18e0c958224640849b321b54bb51d\n  m_configObjects: {}\n"
  },
  {
    "path": "ProjectSettings/EditorSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!159 &1\nEditorSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 3\n  m_ExternalVersionControlSupport: Hidden Meta Files\n  m_SerializationMode: 2\n  m_WebSecurityEmulationEnabled: 0\n  m_WebSecurityEmulationHostUrl: http://www.mydomain.com/mygame.unity3d\n  m_DefaultBehaviorMode: 1\n  m_SpritePackerMode: 0\n"
  },
  {
    "path": "ProjectSettings/GraphicsSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!30 &1\nGraphicsSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 12\n  m_Deferred:\n    m_Mode: 1\n    m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}\n  m_DeferredReflections:\n    m_Mode: 1\n    m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}\n  m_ScreenSpaceShadows:\n    m_Mode: 1\n    m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}\n  m_LegacyDeferred:\n    m_Mode: 1\n    m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}\n  m_DepthNormals:\n    m_Mode: 1\n    m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}\n  m_MotionVectors:\n    m_Mode: 1\n    m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}\n  m_LightHalo:\n    m_Mode: 1\n    m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}\n  m_LensFlare:\n    m_Mode: 1\n    m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}\n  m_AlwaysIncludedShaders:\n  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}\n  m_PreloadedShaders: []\n  m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,\n    type: 0}\n  m_CustomRenderPipeline: {fileID: 0}\n  m_TransparencySortMode: 0\n  m_TransparencySortAxis: {x: 0, y: 0, z: 1}\n  m_DefaultRenderingPath: 1\n  m_DefaultMobileRenderingPath: 1\n  m_TierSettings: []\n  m_LightmapStripping: 0\n  m_FogStripping: 0\n  m_InstancingStripping: 0\n  m_LightmapKeepPlain: 1\n  m_LightmapKeepDirCombined: 1\n  m_LightmapKeepDynamicPlain: 1\n  m_LightmapKeepDynamicDirCombined: 1\n  m_LightmapKeepShadowMask: 1\n  m_LightmapKeepSubtractive: 1\n  m_FogKeepLinear: 1\n  m_FogKeepExp: 1\n  m_FogKeepExp2: 1\n  m_AlbedoSwatchInfos: []\n  m_LightsUseLinearIntensity: 0\n  m_LightsUseColorTemperature: 0\n"
  },
  {
    "path": "ProjectSettings/InputManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!13 &1\nInputManager:\n  m_ObjectHideFlags: 0\n  m_Axes:\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: left\n    positiveButton: right\n    altNegativeButton: a\n    altPositiveButton: d\n    gravity: 3\n    dead: .00100000005\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: down\n    positiveButton: up\n    altNegativeButton: s\n    altPositiveButton: w\n    gravity: 3\n    dead: .00100000005\n    sensitivity: 3\n    snap: 1\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left ctrl\n    altNegativeButton: \n    altPositiveButton: mouse 0\n    gravity: 1000\n    dead: .00100000005\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left alt\n    altNegativeButton: \n    altPositiveButton: mouse 1\n    gravity: 1000\n    dead: .00100000005\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: left cmd\n    altNegativeButton: \n    altPositiveButton: mouse 2\n    gravity: 1000\n    dead: .00100000005\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: space\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: .00100000005\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse X\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: .100000001\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse Y\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: .100000001\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Mouse ScrollWheel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: 0\n    sensitivity: .100000001\n    snap: 0\n    invert: 0\n    type: 1\n    axis: 2\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Horizontal\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: .189999998\n    sensitivity: 1\n    snap: 0\n    invert: 0\n    type: 2\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Vertical\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: \n    altNegativeButton: \n    altPositiveButton: \n    gravity: 0\n    dead: .189999998\n    sensitivity: 1\n    snap: 0\n    invert: 1\n    type: 2\n    axis: 1\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire1\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 0\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: .00100000005\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire2\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 1\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: .00100000005\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Fire3\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 2\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: .00100000005\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Jump\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: joystick button 3\n    altNegativeButton: \n    altPositiveButton: \n    gravity: 1000\n    dead: .00100000005\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n"
  },
  {
    "path": "ProjectSettings/NavMeshAreas.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!126 &1\nNavMeshLayers:\n  m_ObjectHideFlags: 0\n  Built-in Layer 0:\n    name: Default\n    cost: 1\n    editType: 2\n  Built-in Layer 1:\n    name: Not Walkable\n    cost: 1\n    editType: 0\n  Built-in Layer 2:\n    name: Jump\n    cost: 2\n    editType: 2\n  User Layer 0:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 1:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 2:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 3:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 4:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 5:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 6:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 7:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 8:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 9:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 10:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 11:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 12:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 13:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 14:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 15:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 16:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 17:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 18:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 19:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 20:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 21:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 22:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 23:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 24:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 25:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 26:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 27:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 28:\n    name: \n    cost: 1\n    editType: 3\n"
  },
  {
    "path": "ProjectSettings/NavMeshLayers.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!126 &1\nNavMeshLayers:\n  m_ObjectHideFlags: 0\n  Built-in Layer 0:\n    name: Default\n    cost: 1\n    editType: 2\n  Built-in Layer 1:\n    name: Not Walkable\n    cost: 1\n    editType: 0\n  Built-in Layer 2:\n    name: Jump\n    cost: 2\n    editType: 2\n  User Layer 0:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 1:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 2:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 3:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 4:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 5:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 6:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 7:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 8:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 9:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 10:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 11:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 12:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 13:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 14:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 15:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 16:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 17:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 18:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 19:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 20:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 21:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 22:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 23:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 24:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 25:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 26:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 27:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 28:\n    name: \n    cost: 1\n    editType: 3\n"
  },
  {
    "path": "ProjectSettings/NavMeshProjectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!126 &1\nNavMeshLayers:\n  m_ObjectHideFlags: 0\n  Built-in Layer 0:\n    name: Default\n    cost: 1\n    editType: 2\n  Built-in Layer 1:\n    name: Not Walkable\n    cost: 1\n    editType: 0\n  Built-in Layer 2:\n    name: Jump\n    cost: 2\n    editType: 2\n  User Layer 0:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 1:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 2:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 3:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 4:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 5:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 6:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 7:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 8:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 9:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 10:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 11:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 12:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 13:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 14:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 15:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 16:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 17:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 18:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 19:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 20:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 21:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 22:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 23:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 24:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 25:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 26:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 27:\n    name: \n    cost: 1\n    editType: 3\n  User Layer 28:\n    name: \n    cost: 1\n    editType: 3\n"
  },
  {
    "path": "ProjectSettings/NetworkManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!149 &1\nNetworkManager:\n  m_ObjectHideFlags: 0\n  m_DebugLevel: 0\n  m_Sendrate: 15\n  m_AssetToPrefab: {}\n"
  },
  {
    "path": "ProjectSettings/Physics2DSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!19 &1\nPhysics2DSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 3\n  m_Gravity: {x: 0, y: -9.81}\n  m_DefaultMaterial: {fileID: 0}\n  m_VelocityIterations: 8\n  m_PositionIterations: 3\n  m_VelocityThreshold: 1\n  m_MaxLinearCorrection: 0.2\n  m_MaxAngularCorrection: 8\n  m_MaxTranslationSpeed: 100\n  m_MaxRotationSpeed: 360\n  m_BaumgarteScale: 0.2\n  m_BaumgarteTimeOfImpactScale: 0.75\n  m_TimeToSleep: 0.5\n  m_LinearSleepTolerance: 0.01\n  m_AngularSleepTolerance: 2\n  m_DefaultContactOffset: 0.01\n  m_AutoSimulation: 1\n  m_QueriesHitTriggers: 1\n  m_QueriesStartInColliders: 1\n  m_ChangeStopsCallbacks: 0\n  m_CallbacksOnDisable: 1\n  m_AutoSyncTransforms: 1\n  m_AlwaysShowColliders: 0\n  m_ShowColliderSleep: 1\n  m_ShowColliderContacts: 0\n  m_ShowColliderAABB: 0\n  m_ContactArrowScale: 0.2\n  m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}\n  m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}\n  m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}\n  m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n"
  },
  {
    "path": "ProjectSettings/PresetManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!1386491679 &1\nPresetManager:\n  m_ObjectHideFlags: 0\n  m_DefaultList: []\n"
  },
  {
    "path": "ProjectSettings/ProjectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!129 &1\nPlayerSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 16\n  productGUID: b286933f5059e50428b251ea31eb0f32\n  AndroidProfiler: 0\n  AndroidFilterTouchesWhenObscured: 0\n  AndroidEnableSustainedPerformanceMode: 0\n  defaultScreenOrientation: 0\n  targetDevice: 2\n  useOnDemandResources: 0\n  accelerometerFrequency: 60\n  companyName: neuecc\n  productName: UniRx\n  defaultCursor: {fileID: 0}\n  cursorHotspot: {x: 0, y: 0}\n  m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}\n  m_ShowUnitySplashScreen: 1\n  m_ShowUnitySplashLogo: 1\n  m_SplashScreenOverlayOpacity: 1\n  m_SplashScreenAnimation: 1\n  m_SplashScreenLogoStyle: 1\n  m_SplashScreenDrawMode: 0\n  m_SplashScreenBackgroundAnimationZoom: 1\n  m_SplashScreenLogoAnimationZoom: 1\n  m_SplashScreenBackgroundLandscapeAspect: 1\n  m_SplashScreenBackgroundPortraitAspect: 1\n  m_SplashScreenBackgroundLandscapeUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenBackgroundPortraitUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenLogos: []\n  m_VirtualRealitySplashScreen: {fileID: 0}\n  m_HolographicTrackingLossScreen: {fileID: 0}\n  defaultScreenWidth: 1024\n  defaultScreenHeight: 768\n  defaultScreenWidthWeb: 960\n  defaultScreenHeightWeb: 600\n  m_StereoRenderingPath: 0\n  m_ActiveColorSpace: 0\n  m_MTRendering: 1\n  m_StackTraceTypes: 010000000100000001000000010000000100000001000000\n  iosShowActivityIndicatorOnLoading: -1\n  androidShowActivityIndicatorOnLoading: -1\n  iosAppInBackgroundBehavior: 0\n  displayResolutionDialog: 1\n  iosAllowHTTPDownload: 1\n  allowedAutorotateToPortrait: 1\n  allowedAutorotateToPortraitUpsideDown: 1\n  allowedAutorotateToLandscapeRight: 1\n  allowedAutorotateToLandscapeLeft: 1\n  useOSAutorotation: 1\n  use32BitDisplayBuffer: 1\n  preserveFramebufferAlpha: 0\n  disableDepthAndStencilBuffers: 0\n  androidStartInFullscreen: 1\n  androidRenderOutsideSafeArea: 1\n  androidBlitType: 0\n  defaultIsNativeResolution: 1\n  macRetinaSupport: 1\n  runInBackground: 1\n  captureSingleScreen: 0\n  muteOtherAudioSources: 0\n  Prepare IOS For Recording: 0\n  Force IOS Speakers When Recording: 0\n  deferSystemGesturesMode: 0\n  hideHomeButton: 0\n  submitAnalytics: 1\n  usePlayerLog: 1\n  bakeCollisionMeshes: 0\n  forceSingleInstance: 0\n  resizableWindow: 0\n  useMacAppStoreValidation: 0\n  macAppStoreCategory: public.app-category.games\n  gpuSkinning: 0\n  graphicsJobs: 0\n  xboxPIXTextureCapture: 0\n  xboxEnableAvatar: 0\n  xboxEnableKinect: 0\n  xboxEnableKinectAutoTracking: 0\n  xboxEnableFitness: 0\n  visibleInBackground: 0\n  allowFullscreenSwitch: 1\n  graphicsJobMode: 0\n  fullscreenMode: 1\n  xboxSpeechDB: 0\n  xboxEnableHeadOrientation: 0\n  xboxEnableGuest: 0\n  xboxEnablePIXSampling: 0\n  metalFramebufferOnly: 0\n  xboxOneResolution: 0\n  xboxOneSResolution: 0\n  xboxOneXResolution: 3\n  xboxOneMonoLoggingLevel: 0\n  xboxOneLoggingLevel: 1\n  xboxOneDisableEsram: 0\n  xboxOnePresentImmediateThreshold: 0\n  switchQueueCommandMemory: 0\n  switchQueueControlMemory: 16384\n  switchQueueComputeMemory: 262144\n  switchNVNShaderPoolsGranularity: 33554432\n  switchNVNDefaultPoolsGranularity: 16777216\n  switchNVNOtherPoolsGranularity: 16777216\n  vulkanEnableSetSRGBWrite: 0\n  m_SupportedAspectRatios:\n    4:3: 1\n    5:4: 1\n    16:10: 1\n    16:9: 1\n    Others: 1\n  bundleVersion: 1.0\n  preloadedAssets: []\n  metroInputSource: 0\n  wsaTransparentSwapchain: 0\n  m_HolographicPauseOnTrackingLoss: 1\n  xboxOneDisableKinectGpuReservation: 0\n  xboxOneEnable7thCore: 1\n  vrSettings:\n    cardboard:\n      depthFormat: 0\n      enableTransitionView: 0\n    daydream:\n      depthFormat: 0\n      useSustainedPerformanceMode: 0\n      enableVideoLayer: 0\n      useProtectedVideoMemory: 0\n      minimumSupportedHeadTracking: 0\n      maximumSupportedHeadTracking: 1\n    hololens:\n      depthFormat: 1\n      depthBufferSharingEnabled: 0\n    lumin:\n      depthFormat: 0\n      frameTiming: 2\n      enableGLCache: 0\n      glCacheMaxBlobSize: 524288\n      glCacheMaxFileSize: 8388608\n    oculus:\n      sharedDepthBuffer: 0\n      dashSupport: 0\n    enable360StereoCapture: 0\n  isWsaHolographicRemotingEnabled: 0\n  protectGraphicsMemory: 0\n  enableFrameTimingStats: 0\n  useHDRDisplay: 0\n  m_ColorGamuts: 00000000\n  targetPixelDensity: 30\n  resolutionScalingMode: 0\n  androidSupportedAspectRatio: 1\n  androidMaxAspectRatio: 2.1\n  applicationIdentifier:\n    Android: com.Company.ProductName\n    Standalone: unity.neuecc.UniRx\n    iPhone: com.Company.ProductName\n    tvOS: com.Company.ProductName\n  buildNumber:\n    iPhone: \n  AndroidBundleVersionCode: 1\n  AndroidMinSdkVersion: 16\n  AndroidTargetSdkVersion: 0\n  AndroidPreferredInstallLocation: 1\n  aotOptions: \n  stripEngineCode: 1\n  iPhoneStrippingLevel: 0\n  iPhoneScriptCallOptimization: 1\n  ForceInternetPermission: 0\n  ForceSDCardPermission: 0\n  CreateWallpaper: 0\n  APKExpansionFiles: 0\n  keepLoadedShadersAlive: 0\n  StripUnusedMeshComponents: 0\n  VertexChannelCompressionMask: 4054\n  iPhoneSdkVersion: 988\n  iOSTargetOSVersionString: 9.0\n  tvOSSdkVersion: 0\n  tvOSRequireExtendedGameController: 0\n  tvOSTargetOSVersionString: 9.0\n  uIPrerenderedIcon: 0\n  uIRequiresPersistentWiFi: 0\n  uIRequiresFullScreen: 1\n  uIStatusBarHidden: 1\n  uIExitOnSuspend: 0\n  uIStatusBarStyle: 0\n  iPhoneSplashScreen: {fileID: 0}\n  iPhoneHighResSplashScreen: {fileID: 0}\n  iPhoneTallHighResSplashScreen: {fileID: 0}\n  iPhone47inSplashScreen: {fileID: 0}\n  iPhone55inPortraitSplashScreen: {fileID: 0}\n  iPhone55inLandscapeSplashScreen: {fileID: 0}\n  iPhone58inPortraitSplashScreen: {fileID: 0}\n  iPhone58inLandscapeSplashScreen: {fileID: 0}\n  iPadPortraitSplashScreen: {fileID: 0}\n  iPadHighResPortraitSplashScreen: {fileID: 0}\n  iPadLandscapeSplashScreen: {fileID: 0}\n  iPadHighResLandscapeSplashScreen: {fileID: 0}\n  iPhone65inPortraitSplashScreen: {fileID: 0}\n  iPhone65inLandscapeSplashScreen: {fileID: 0}\n  iPhone61inPortraitSplashScreen: {fileID: 0}\n  iPhone61inLandscapeSplashScreen: {fileID: 0}\n  appleTVSplashScreen: {fileID: 0}\n  appleTVSplashScreen2x: {fileID: 0}\n  tvOSSmallIconLayers: []\n  tvOSSmallIconLayers2x: []\n  tvOSLargeIconLayers: []\n  tvOSLargeIconLayers2x: []\n  tvOSTopShelfImageLayers: []\n  tvOSTopShelfImageLayers2x: []\n  tvOSTopShelfImageWideLayers: []\n  tvOSTopShelfImageWideLayers2x: []\n  iOSLaunchScreenType: 0\n  iOSLaunchScreenPortrait: {fileID: 0}\n  iOSLaunchScreenLandscape: {fileID: 0}\n  iOSLaunchScreenBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreenFillPct: 100\n  iOSLaunchScreenSize: 100\n  iOSLaunchScreenCustomXibPath: \n  iOSLaunchScreeniPadType: 0\n  iOSLaunchScreeniPadImage: {fileID: 0}\n  iOSLaunchScreeniPadBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreeniPadFillPct: 100\n  iOSLaunchScreeniPadSize: 100\n  iOSLaunchScreeniPadCustomXibPath: \n  iOSUseLaunchScreenStoryboard: 0\n  iOSLaunchScreenCustomStoryboardPath: \n  iOSDeviceRequirements: []\n  iOSURLSchemes: []\n  iOSBackgroundModes: 0\n  iOSMetalForceHardShadows: 0\n  metalEditorSupport: 1\n  metalAPIValidation: 1\n  iOSRenderExtraFrameOnPause: 1\n  appleDeveloperTeamID: \n  iOSManualSigningProvisioningProfileID: \n  tvOSManualSigningProvisioningProfileID: \n  iOSManualSigningProvisioningProfileType: 0\n  tvOSManualSigningProvisioningProfileType: 0\n  appleEnableAutomaticSigning: 0\n  iOSRequireARKit: 0\n  iOSAutomaticallyDetectAndAddCapabilities: 1\n  appleEnableProMotion: 0\n  clonedFromGUID: 00000000000000000000000000000000\n  templatePackageId: \n  templateDefaultScene: \n  AndroidTargetArchitectures: 5\n  AndroidSplashScreenScale: 0\n  androidSplashScreen: {fileID: 0}\n  AndroidKeystoreName: '{inproject}: '\n  AndroidKeyaliasName: \n  AndroidBuildApkPerCpuArchitecture: 0\n  AndroidTVCompatibility: 1\n  AndroidIsGame: 1\n  AndroidEnableTango: 0\n  androidEnableBanner: 1\n  androidUseLowAccuracyLocation: 0\n  androidUseCustomKeystore: 0\n  m_AndroidBanners:\n  - width: 320\n    height: 180\n    banner: {fileID: 0}\n  androidGamepadSupportLevel: 0\n  resolutionDialogBanner: {fileID: 0}\n  m_BuildTargetIcons:\n  - m_BuildTarget: \n    m_Icons:\n    - serializedVersion: 2\n      m_Icon: {fileID: 0}\n      m_Width: 1\n      m_Height: 1\n      m_Kind: 0\n  m_BuildTargetPlatformIcons: []\n  m_BuildTargetBatching: []\n  m_BuildTargetGraphicsAPIs: []\n  m_BuildTargetVRSettings: []\n  m_BuildTargetEnableVuforiaSettings: []\n  openGLRequireES31: 0\n  openGLRequireES31AEP: 0\n  openGLRequireES32: 0\n  m_TemplateCustomTags: {}\n  mobileMTRendering:\n    iPhone: 1\n    tvOS: 1\n  m_BuildTargetGroupLightmapEncodingQuality:\n  - m_BuildTarget: Standalone\n    m_EncodingQuality: 1\n  - m_BuildTarget: XboxOne\n    m_EncodingQuality: 1\n  - m_BuildTarget: PS4\n    m_EncodingQuality: 1\n  m_BuildTargetGroupLightmapSettings: []\n  playModeTestRunnerEnabled: 0\n  runPlayModeTestAsEditModeTest: 0\n  actionOnDotNetUnhandledException: 1\n  enableInternalProfiler: 0\n  logObjCUncaughtExceptions: 1\n  enableCrashReportAPI: 0\n  cameraUsageDescription: \n  locationUsageDescription: \n  microphoneUsageDescription: \n  switchNetLibKey: \n  switchSocketMemoryPoolSize: 6144\n  switchSocketAllocatorPoolSize: 128\n  switchSocketConcurrencyLimit: 14\n  switchScreenResolutionBehavior: 2\n  switchUseCPUProfiler: 0\n  switchApplicationID: 0x01004b9000490000\n  switchNSODependencies: \n  switchTitleNames_0: \n  switchTitleNames_1: \n  switchTitleNames_2: \n  switchTitleNames_3: \n  switchTitleNames_4: \n  switchTitleNames_5: \n  switchTitleNames_6: \n  switchTitleNames_7: \n  switchTitleNames_8: \n  switchTitleNames_9: \n  switchTitleNames_10: \n  switchTitleNames_11: \n  switchTitleNames_12: \n  switchTitleNames_13: \n  switchTitleNames_14: \n  switchPublisherNames_0: \n  switchPublisherNames_1: \n  switchPublisherNames_2: \n  switchPublisherNames_3: \n  switchPublisherNames_4: \n  switchPublisherNames_5: \n  switchPublisherNames_6: \n  switchPublisherNames_7: \n  switchPublisherNames_8: \n  switchPublisherNames_9: \n  switchPublisherNames_10: \n  switchPublisherNames_11: \n  switchPublisherNames_12: \n  switchPublisherNames_13: \n  switchPublisherNames_14: \n  switchIcons_0: {fileID: 0}\n  switchIcons_1: {fileID: 0}\n  switchIcons_2: {fileID: 0}\n  switchIcons_3: {fileID: 0}\n  switchIcons_4: {fileID: 0}\n  switchIcons_5: {fileID: 0}\n  switchIcons_6: {fileID: 0}\n  switchIcons_7: {fileID: 0}\n  switchIcons_8: {fileID: 0}\n  switchIcons_9: {fileID: 0}\n  switchIcons_10: {fileID: 0}\n  switchIcons_11: {fileID: 0}\n  switchIcons_12: {fileID: 0}\n  switchIcons_13: {fileID: 0}\n  switchIcons_14: {fileID: 0}\n  switchSmallIcons_0: {fileID: 0}\n  switchSmallIcons_1: {fileID: 0}\n  switchSmallIcons_2: {fileID: 0}\n  switchSmallIcons_3: {fileID: 0}\n  switchSmallIcons_4: {fileID: 0}\n  switchSmallIcons_5: {fileID: 0}\n  switchSmallIcons_6: {fileID: 0}\n  switchSmallIcons_7: {fileID: 0}\n  switchSmallIcons_8: {fileID: 0}\n  switchSmallIcons_9: {fileID: 0}\n  switchSmallIcons_10: {fileID: 0}\n  switchSmallIcons_11: {fileID: 0}\n  switchSmallIcons_12: {fileID: 0}\n  switchSmallIcons_13: {fileID: 0}\n  switchSmallIcons_14: {fileID: 0}\n  switchManualHTML: \n  switchAccessibleURLs: \n  switchLegalInformation: \n  switchMainThreadStackSize: 1048576\n  switchPresenceGroupId: \n  switchLogoHandling: 0\n  switchReleaseVersion: 0\n  switchDisplayVersion: 1.0.0\n  switchStartupUserAccount: 0\n  switchTouchScreenUsage: 0\n  switchSupportedLanguagesMask: 0\n  switchLogoType: 0\n  switchApplicationErrorCodeCategory: \n  switchUserAccountSaveDataSize: 0\n  switchUserAccountSaveDataJournalSize: 0\n  switchApplicationAttribute: 0\n  switchCardSpecSize: -1\n  switchCardSpecClock: -1\n  switchRatingsMask: 0\n  switchRatingsInt_0: 0\n  switchRatingsInt_1: 0\n  switchRatingsInt_2: 0\n  switchRatingsInt_3: 0\n  switchRatingsInt_4: 0\n  switchRatingsInt_5: 0\n  switchRatingsInt_6: 0\n  switchRatingsInt_7: 0\n  switchRatingsInt_8: 0\n  switchRatingsInt_9: 0\n  switchRatingsInt_10: 0\n  switchRatingsInt_11: 0\n  switchLocalCommunicationIds_0: \n  switchLocalCommunicationIds_1: \n  switchLocalCommunicationIds_2: \n  switchLocalCommunicationIds_3: \n  switchLocalCommunicationIds_4: \n  switchLocalCommunicationIds_5: \n  switchLocalCommunicationIds_6: \n  switchLocalCommunicationIds_7: \n  switchParentalControl: 0\n  switchAllowsScreenshot: 1\n  switchAllowsVideoCapturing: 1\n  switchAllowsRuntimeAddOnContentInstall: 0\n  switchDataLossConfirmation: 0\n  switchUserAccountLockEnabled: 0\n  switchSystemResourceMemory: 16777216\n  switchSupportedNpadStyles: 3\n  switchNativeFsCacheSize: 32\n  switchIsHoldTypeHorizontal: 0\n  switchSupportedNpadCount: 8\n  switchSocketConfigEnabled: 0\n  switchTcpInitialSendBufferSize: 32\n  switchTcpInitialReceiveBufferSize: 64\n  switchTcpAutoSendBufferSizeMax: 256\n  switchTcpAutoReceiveBufferSizeMax: 256\n  switchUdpSendBufferSize: 9\n  switchUdpReceiveBufferSize: 42\n  switchSocketBufferEfficiency: 4\n  switchSocketInitializeEnabled: 1\n  switchNetworkInterfaceManagerInitializeEnabled: 1\n  switchPlayerConnectionEnabled: 1\n  ps4NPAgeRating: 12\n  ps4NPTitleSecret: \n  ps4NPTrophyPackPath: \n  ps4ParentalLevel: 1\n  ps4ContentID: ED1633-NPXX51362_00-0000000000000000\n  ps4Category: 0\n  ps4MasterVersion: 01.00\n  ps4AppVersion: 01.00\n  ps4AppType: 0\n  ps4ParamSfxPath: \n  ps4VideoOutPixelFormat: 0\n  ps4VideoOutInitialWidth: 1920\n  ps4VideoOutBaseModeInitialWidth: 1920\n  ps4VideoOutReprojectionRate: 60\n  ps4PronunciationXMLPath: \n  ps4PronunciationSIGPath: \n  ps4BackgroundImagePath: \n  ps4StartupImagePath: \n  ps4StartupImagesFolder: \n  ps4IconImagesFolder: \n  ps4SaveDataImagePath: \n  ps4SdkOverride: \n  ps4BGMPath: \n  ps4ShareFilePath: \n  ps4ShareOverlayImagePath: \n  ps4PrivacyGuardImagePath: \n  ps4NPtitleDatPath: \n  ps4RemotePlayKeyAssignment: -1\n  ps4RemotePlayKeyMappingDir: \n  ps4PlayTogetherPlayerCount: 0\n  ps4EnterButtonAssignment: 1\n  ps4ApplicationParam1: 0\n  ps4ApplicationParam2: 0\n  ps4ApplicationParam3: 0\n  ps4ApplicationParam4: 0\n  ps4DownloadDataSize: 0\n  ps4GarlicHeapSize: 2048\n  ps4ProGarlicHeapSize: 2560\n  playerPrefsMaxSize: 32768\n  ps4Passcode: eaoEiIgxIX4a2dREbbSqWy6yhKIDCdJO\n  ps4pnSessions: 1\n  ps4pnPresence: 1\n  ps4pnFriends: 1\n  ps4pnGameCustomData: 1\n  playerPrefsSupport: 0\n  enableApplicationExit: 0\n  resetTempFolder: 1\n  restrictedAudioUsageRights: 0\n  ps4UseResolutionFallback: 0\n  ps4ReprojectionSupport: 0\n  ps4UseAudio3dBackend: 0\n  ps4SocialScreenEnabled: 0\n  ps4ScriptOptimizationLevel: 2\n  ps4Audio3dVirtualSpeakerCount: 14\n  ps4attribCpuUsage: 0\n  ps4PatchPkgPath: \n  ps4PatchLatestPkgPath: \n  ps4PatchChangeinfoPath: \n  ps4PatchDayOne: 0\n  ps4attribUserManagement: 0\n  ps4attribMoveSupport: 0\n  ps4attrib3DSupport: 0\n  ps4attribShareSupport: 0\n  ps4attribExclusiveVR: 0\n  ps4disableAutoHideSplash: 0\n  ps4videoRecordingFeaturesUsed: 0\n  ps4contentSearchFeaturesUsed: 0\n  ps4attribEyeToEyeDistanceSettingVR: 0\n  ps4IncludedModules: []\n  monoEnv: \n  splashScreenBackgroundSourceLandscape: {fileID: 0}\n  splashScreenBackgroundSourcePortrait: {fileID: 0}\n  spritePackerPolicy: \n  webGLMemorySize: 256\n  webGLExceptionSupport: 0\n  webGLNameFilesAsHashes: 0\n  webGLDataCaching: 0\n  webGLDebugSymbols: 0\n  webGLEmscriptenArgs: \n  webGLModulesDirectory: \n  webGLTemplate: APPLICATION:Default\n  webGLAnalyzeBuildSize: 0\n  webGLUseEmbeddedResources: 0\n  webGLCompressionFormat: 1\n  webGLLinkerTarget: 1\n  webGLThreadsSupport: 0\n  webGLWasmStreaming: 0\n  scriptingDefineSymbols:\n    4: Exception\n  platformArchitecture:\n    iPhone: 2\n  scriptingBackend:\n    Standalone: 0\n    WP8: 2\n    WebGL: 1\n    Windows Store Apps: 2\n    iPhone: 0\n  il2cppCompilerConfiguration: {}\n  managedStrippingLevel: {}\n  incrementalIl2cppBuild: {}\n  allowUnsafeCode: 0\n  additionalIl2CppArgs: \n  scriptingRuntimeVersion: 1\n  gcIncremental: 0\n  gcWBarrierValidation: 0\n  apiCompatibilityLevelPerPlatform:\n    Standalone: 3\n  m_RenderingPath: 1\n  m_MobileRenderingPath: 1\n  metroPackageName: UnityRx\n  metroPackageVersion: 1.0.0.0\n  metroCertificatePath: Assets/WSATestCertificate.pfx\n  metroCertificatePassword: \n  metroCertificateSubject: neuecc\n  metroCertificateIssuer: neuecc\n  metroCertificateNotAfter: 8094c35e0586d201\n  metroApplicationDescription: UnityRx\n  wsaImages: {}\n  metroTileShortName: \n  metroTileShowName: 1\n  metroMediumTileShowName: 0\n  metroLargeTileShowName: 0\n  metroWideTileShowName: 0\n  metroSupportStreamingInstall: 0\n  metroLastRequiredScene: 0\n  metroDefaultTileSize: 1\n  metroTileForegroundText: 1\n  metroTileBackgroundColor: {r: 0, g: 0, b: 0, a: 1}\n  metroSplashScreenBackgroundColor: {r: 0, g: 0, b: 0, a: 1}\n  metroSplashScreenUseBackgroundColor: 0\n  platformCapabilities: {}\n  metroTargetDeviceFamilies: {}\n  metroFTAName: \n  metroFTAFileTypes: []\n  metroProtocolName: \n  XboxOneProductId: \n  XboxOneUpdateKey: \n  XboxOneSandboxId: \n  XboxOneContentId: \n  XboxOneTitleId: \n  XboxOneSCId: \n  XboxOneGameOsOverridePath: \n  XboxOnePackagingOverridePath: \n  XboxOneAppManifestOverridePath: \n  XboxOneVersion: 1.0.0.0\n  XboxOnePackageEncryption: 0\n  XboxOnePackageUpdateGranularity: 2\n  XboxOneDescription: \n  XboxOneLanguage:\n  - enus\n  XboxOneCapability: []\n  XboxOneGameRating: {}\n  XboxOneIsContentPackage: 0\n  XboxOneEnableGPUVariability: 0\n  XboxOneSockets: {}\n  XboxOneSplashScreen: {fileID: 0}\n  XboxOneAllowedProductIds: []\n  XboxOnePersistentLocalStorageSize: 0\n  XboxOneXTitleMemory: 8\n  xboxOneScriptCompiler: 1\n  XboxOneOverrideIdentityName: \n  vrEditorSettings:\n    daydream:\n      daydreamIconForeground: {fileID: 0}\n      daydreamIconBackground: {fileID: 0}\n  cloudServicesEnabled: {}\n  luminIcon:\n    m_Name: \n    m_ModelFolderPath: \n    m_PortalFolderPath: \n  luminCert:\n    m_CertPath: \n    m_SignPackage: 1\n  luminIsChannelApp: 0\n  luminVersion:\n    m_VersionCode: 1\n    m_VersionName: \n  facebookSdkVersion: 7.9.4\n  facebookAppId: \n  facebookCookies: 1\n  facebookLogging: 1\n  facebookStatus: 1\n  facebookXfbml: 0\n  facebookFrictionlessRequests: 1\n  apiCompatibilityLevel: 6\n  cloudProjectId: \n  framebufferDepthMemorylessMode: 0\n  projectName: \n  organizationId: \n  cloudEnabled: 0\n  enableNativePlatformBackendsForNewInputSystem: 0\n  disableOldInputManagerSupport: 0\n  legacyClampBlendShapeWeights: 1\n"
  },
  {
    "path": "ProjectSettings/ProjectVersion.txt",
    "content": "m_EditorVersion: 2019.1.0f2\nm_EditorVersionWithRevision: 2019.1.0f2 (292b93d75a2c)\n"
  },
  {
    "path": "ProjectSettings/QualitySettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!47 &1\nQualitySettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 5\n  m_CurrentQuality: 3\n  m_QualitySettings:\n  - serializedVersion: 2\n    name: Fastest\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 15\n    shadowNearPlaneOffset: 2\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    blendWeights: 1\n    textureQuality: 1\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.3\n    maximumLODLevel: 0\n    particleRaycastBudget: 4\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 4\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Fast\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 2\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 0\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.4\n    maximumLODLevel: 0\n    particleRaycastBudget: 16\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 4\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Simple\n    pixelLightCount: 1\n    shadows: 1\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 2\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 0\n    realtimeReflectionProbes: 0\n    billboardsFaceCameraPosition: 0\n    vSyncCount: 0\n    lodBias: 0.7\n    maximumLODLevel: 0\n    particleRaycastBudget: 64\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 4\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Good\n    pixelLightCount: 2\n    shadows: 2\n    shadowResolution: 1\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 40\n    shadowNearPlaneOffset: 2\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 4\n    softParticles: 0\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 0\n    lodBias: 1\n    maximumLODLevel: 0\n    particleRaycastBudget: 256\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 4\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Beautiful\n    pixelLightCount: 3\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 70\n    shadowNearPlaneOffset: 2\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1.5\n    maximumLODLevel: 0\n    particleRaycastBudget: 1024\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 4\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Fantastic\n    pixelLightCount: 4\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 4\n    shadowDistance: 150\n    shadowNearPlaneOffset: 2\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    blendWeights: 4\n    textureQuality: 0\n    anisotropicTextures: 2\n    antiAliasing: 2\n    softParticles: 1\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 2\n    maximumLODLevel: 0\n    particleRaycastBudget: 4096\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 4\n    excludedTargetPlatforms: []\n  m_PerPlatformDefaultQuality:\n    Android: 0\n    Standalone: 0\n    Web: 0\n    WebGL: 0\n    Windows Store Apps: 0\n    iPhone: 0\n"
  },
  {
    "path": "ProjectSettings/TagManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!78 &1\nTagManager:\n  tags:\n  - \n  Builtin Layer 0: Default\n  Builtin Layer 1: TransparentFX\n  Builtin Layer 2: Ignore Raycast\n  Builtin Layer 3: \n  Builtin Layer 4: Water\n  Builtin Layer 5: UI\n  Builtin Layer 6: \n  Builtin Layer 7: \n  User Layer 8: \n  User Layer 9: \n  User Layer 10: \n  User Layer 11: \n  User Layer 12: \n  User Layer 13: \n  User Layer 14: \n  User Layer 15: \n  User Layer 16: \n  User Layer 17: \n  User Layer 18: \n  User Layer 19: \n  User Layer 20: \n  User Layer 21: \n  User Layer 22: \n  User Layer 23: \n  User Layer 24: \n  User Layer 25: \n  User Layer 26: \n  User Layer 27: \n  User Layer 28: \n  User Layer 29: \n  User Layer 30: \n  User Layer 31: \n  m_SortingLayers:\n  - name: Default\n    userID: 0\n    uniqueID: 0\n    locked: 0\n"
  },
  {
    "path": "ProjectSettings/TimeManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!5 &1\nTimeManager:\n  m_ObjectHideFlags: 0\n  Fixed Timestep: .0199999996\n  Maximum Allowed Timestep: .333333343\n  m_TimeScale: 1\n"
  },
  {
    "path": "ProjectSettings/UnityConnectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!310 &1\nUnityConnectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 1\n  m_Enabled: 1\n  m_TestMode: 0\n  m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events\n  m_EventUrl: https://cdp.cloud.unity3d.com/v1/events\n  m_ConfigUrl: https://config.uca.cloud.unity3d.com\n  m_TestInitMode: 0\n  CrashReportingSettings:\n    m_EventUrl: https://perf-events.cloud.unity3d.com\n    m_Enabled: 0\n    m_LogBufferSize: 10\n    m_CaptureEditorExceptions: 1\n  UnityPurchasingSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n  UnityAnalyticsSettings:\n    m_Enabled: 0\n    m_TestMode: 0\n    m_InitializeOnStartup: 1\n  UnityAdsSettings:\n    m_Enabled: 0\n    m_InitializeOnStartup: 1\n    m_TestMode: 0\n    m_IosGameId: \n    m_AndroidGameId: \n    m_GameIds: {}\n    m_GameId: \n  PerformanceReportingSettings:\n    m_Enabled: 0\n"
  },
  {
    "path": "ProjectSettings/VFXManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!937362698 &1\nVFXManager:\n  m_ObjectHideFlags: 0\n  m_IndirectShader: {fileID: 0}\n  m_CopyBufferShader: {fileID: 0}\n  m_SortShader: {fileID: 0}\n  m_RenderPipeSettingsPath: \n  m_FixedTimeStep: 0.016666668\n  m_MaxDeltaTime: 0.05\n"
  },
  {
    "path": "ProjectSettings/XRSettings.asset",
    "content": "{\n    \"m_SettingKeys\": [\n        \"VR Device Disabled\",\n        \"VR Device User Alert\"\n    ],\n    \"m_SettingValues\": [\n        \"False\",\n        \"False\"\n    ]\n}"
  },
  {
    "path": "README.md",
    "content": "> [!IMPORTANT]\n> I have started distributing an evolved version of UniRx in [Cysharp/R3](https://github.com/Cysharp/R3), please use it instead of UniRx.\n\nUniRx - Reactive Extensions for Unity\n===\nCreated by Yoshifumi Kawai(neuecc)\n\nWhat is UniRx?\n---\nUniRx (Reactive Extensions for Unity) is a reimplementation of the .NET Reactive Extensions. The Official Rx implementation is great but doesn't work on Unity and has issues with iOS IL2CPP compatibility. This library fixes those issues and adds some specific utilities for Unity. Supported platforms are PC/Mac/Android/iOS/WebGL/WindowsStore/etc and the library.\n\nUniRx is available on the Unity Asset Store (FREE) - http://u3d.as/content/neuecc/uni-rx-reactive-extensions-for-unity/7tT\n\nBlog for update info - https://medium.com/@neuecc\n\nSupport thread on the Unity Forums: Ask me any question - http://forum.unity3d.com/threads/248535-UniRx-Reactive-Extensions-for-Unity\n\nRelease Notes, see [UniRx/releases](https://github.com/neuecc/UniRx/releases)\n\nUniRx is Core Library (Port of Rx) + Platform Adaptor (MainThreadScheduler/FromCoroutine/etc) + Framework (ObservableTriggers/ReactiveProeperty/etc).\n\n> Note: async/await integration(UniRx.Async) is separated to [Cysharp/UniTask](https://github.com/Cysharp/UniTask) after ver. 7.0.\n\nWhy Rx?\n---\nOrdinarily, Network operations in Unity require the use of `WWW` and `Coroutine`. That said, using `Coroutine` is not good practice for asynchronous operations for the following (and other) reasons:\n\n1. Coroutines can't return any values, since its return type must be IEnumerator.\n2. Coroutines can't handle exceptions, because yield return statements cannot be surrounded with a try-catch construction.\n\nThis kind of lack of composability causes operations to be close-coupled, which often results in huge monolithic IEnumerators.\n\nRx cures that kind of \"asynchronous blues\". Rx is a library for composing asynchronous and event-based programs using observable collections and LINQ-style query operators. \n  \nThe game loop (every Update, OnCollisionEnter, etc), sensor data (Kinect, Leap Motion, VR Input, etc.) are all types of events. Rx represents events as reactive sequences which are both easily composable and support time-based operations by using LINQ query operators.\n\nUnity is generally single threaded but UniRx facilitates multithreading for joins, cancels, accessing GameObjects, etc.\n\nUniRx helps UI programming with uGUI. All UI events (clicked, valuechanged, etc) can be converted to UniRx event streams. \n\nUnity supports async/await from 2017 with C# upgrades, UniRx family prjects provides more lightweight, more powerful async/await integration with Unity. Please see  [Cysharp/UniTask](https://github.com/Cysharp/UniTask).\n\nIntroduction\n---\nGreat introduction to Rx article: [The introduction to Reactive Programming you've been missing](https://gist.github.com/staltz/868e7e9bc2a7b8c1f754).\n\nThe following code implements the double click detection example from the article in UniRx:\n\n```csharp\nvar clickStream = Observable.EveryUpdate()\n    .Where(_ => Input.GetMouseButtonDown(0));\n\nclickStream.Buffer(clickStream.Throttle(TimeSpan.FromMilliseconds(250)))\n    .Where(xs => xs.Count >= 2)\n    .Subscribe(xs => Debug.Log(\"DoubleClick Detected! Count:\" + xs.Count));\n```\n\nThis example demonstrates the following features (in only five lines!):\n\n* The game loop (Update) as an event stream\n* Composable event streams\n* Merging self stream\n* Easy handling of time based operations   \n\nNetwork operations\n---\nUse ObservableWWW for asynchronous network operations. Its Get/Post functions return subscribable IObservables:\n\n```csharp\nObservableWWW.Get(\"http://google.co.jp/\")\n    .Subscribe(\n        x => Debug.Log(x.Substring(0, 100)), // onSuccess\n        ex => Debug.LogException(ex)); // onError\n```\n\nRx is composable and cancelable. You can also query with LINQ expressions:\n\n```csharp\n// composing asynchronous sequence with LINQ query expressions\nvar query = from google in ObservableWWW.Get(\"http://google.com/\")\n            from bing in ObservableWWW.Get(\"http://bing.com/\")\n            from unknown in ObservableWWW.Get(google + bing)\n            select new { google, bing, unknown };\n\nvar cancel = query.Subscribe(x => Debug.Log(x));\n\n// Call Dispose is cancel.\ncancel.Dispose();\n```\n\nUse Observable.WhenAll for parallel requests:\n\n```csharp\n// Observable.WhenAll is for parallel asynchronous operation\n// (It's like Observable.Zip but specialized for single async operations like Task.WhenAll)\nvar parallel = Observable.WhenAll(\n    ObservableWWW.Get(\"http://google.com/\"),\n    ObservableWWW.Get(\"http://bing.com/\"),\n    ObservableWWW.Get(\"http://unity3d.com/\"));\n\nparallel.Subscribe(xs =>\n{\n    Debug.Log(xs[0].Substring(0, 100)); // google\n    Debug.Log(xs[1].Substring(0, 100)); // bing\n    Debug.Log(xs[2].Substring(0, 100)); // unity\n});\n```\n\nProgress information is available:\n\n```csharp\n// notifier for progress use ScheduledNotifier or new Progress<float>(/* action */)\nvar progressNotifier = new ScheduledNotifier<float>();\nprogressNotifier.Subscribe(x => Debug.Log(x)); // write www.progress\n\n// pass notifier to WWW.Get/Post\nObservableWWW.Get(\"http://google.com/\", progress: progressNotifier).Subscribe();\n```\n\nError handling:\n\n```csharp\n// If WWW has .error, ObservableWWW throws WWWErrorException to onError pipeline.\n// WWWErrorException has RawErrorMessage, HasResponse, StatusCode, ResponseHeaders\nObservableWWW.Get(\"http://www.google.com/404\")\n    .CatchIgnore((WWWErrorException ex) =>\n    {\n        Debug.Log(ex.RawErrorMessage);\n        if (ex.HasResponse)\n        {\n            Debug.Log(ex.StatusCode);\n        }\n        foreach (var item in ex.ResponseHeaders)\n        {\n            Debug.Log(item.Key + \":\" + item.Value);\n        }\n    })\n    .Subscribe();\n```\n\nUsing with IEnumerators (Coroutines)\n---\nIEnumerator (Coroutine) is Unity's primitive asynchronous tool. UniRx integrates coroutines and IObservables. You can write asynchronious code in coroutines, and orchestrate them using UniRx. This is best way to control asynchronous flow.\n\n```csharp\n// two coroutines\n\nIEnumerator AsyncA()\n{\n    Debug.Log(\"a start\");\n    yield return new WaitForSeconds(1);\n    Debug.Log(\"a end\");\n}\n\nIEnumerator AsyncB()\n{\n    Debug.Log(\"b start\");\n    yield return new WaitForEndOfFrame();\n    Debug.Log(\"b end\");\n}\n\n// main code\n// Observable.FromCoroutine converts IEnumerator to Observable<Unit>.\n// You can also use the shorthand, AsyncA().ToObservable()\n        \n// after AsyncA completes, run AsyncB as a continuous routine.\n// UniRx expands SelectMany(IEnumerator) as SelectMany(IEnumerator.ToObservable())\nvar cancel = Observable.FromCoroutine(AsyncA)\n    .SelectMany(AsyncB)\n    .Subscribe();\n\n// you can stop a coroutine by calling your subscription's Dispose.\ncancel.Dispose();\n```\n\nIf in Unity 5.3, you can use ToYieldInstruction for Observable to Coroutine.\n\n```csharp\nIEnumerator TestNewCustomYieldInstruction()\n{\n    // wait Rx Observable.\n    yield return Observable.Timer(TimeSpan.FromSeconds(1)).ToYieldInstruction();\n\n    // you can change the scheduler(this is ignore Time.scale)\n    yield return Observable.Timer(TimeSpan.FromSeconds(1), Scheduler.MainThreadIgnoreTimeScale).ToYieldInstruction();\n\n    // get return value from ObservableYieldInstruction\n    var o = ObservableWWW.Get(\"http://unity3d.com/\").ToYieldInstruction(throwOnError: false);\n    yield return o;\n\n    if (o.HasError) { Debug.Log(o.Error.ToString()); }\n    if (o.HasResult) { Debug.Log(o.Result); }\n\n    // other sample(wait until transform.position.y >= 100) \n    yield return this.transform.ObserveEveryValueChanged(x => x.position).FirstOrDefault(p => p.y >= 100).ToYieldInstruction();\n}\n```\nNormally, we have to use callbacks when we require a coroutine to return a value. Observable.FromCoroutine can convert coroutines to cancellable IObservable[T] instead.\n\n```csharp\n// public method\npublic static IObservable<string> GetWWW(string url)\n{\n    // convert coroutine to IObservable\n    return Observable.FromCoroutine<string>((observer, cancellationToken) => GetWWWCore(url, observer, cancellationToken));\n}\n\n// IObserver is a callback publisher\n// Note: IObserver's basic scheme is \"OnNext* (OnError | Oncompleted)?\" \nstatic IEnumerator GetWWWCore(string url, IObserver<string> observer, CancellationToken cancellationToken)\n{\n    var www = new UnityEngine.WWW(url);\n    while (!www.isDone && !cancellationToken.IsCancellationRequested)\n    {\n        yield return null;\n    }\n\n    if (cancellationToken.IsCancellationRequested) yield break;\n\n    if (www.error != null)\n    {\n        observer.OnError(new Exception(www.error));\n    }\n    else\n    {\n        observer.OnNext(www.text);\n        observer.OnCompleted(); // IObserver needs OnCompleted after OnNext!\n    }\n}\n```\n\nHere are some more examples. Next is a multiple OnNext pattern.\n\n```csharp\npublic static IObservable<float> ToObservable(this UnityEngine.AsyncOperation asyncOperation)\n{\n    if (asyncOperation == null) throw new ArgumentNullException(\"asyncOperation\");\n\n    return Observable.FromCoroutine<float>((observer, cancellationToken) => RunAsyncOperation(asyncOperation, observer, cancellationToken));\n}\n\nstatic IEnumerator RunAsyncOperation(UnityEngine.AsyncOperation asyncOperation, IObserver<float> observer, CancellationToken cancellationToken)\n{\n    while (!asyncOperation.isDone && !cancellationToken.IsCancellationRequested)\n    {\n        observer.OnNext(asyncOperation.progress);\n        yield return null;\n    }\n    if (!cancellationToken.IsCancellationRequested)\n    {\n        observer.OnNext(asyncOperation.progress); // push 100%\n        observer.OnCompleted();\n    }\n}\n\n// usecase\nApplication.LoadLevelAsync(\"testscene\")\n    .ToObservable()\n    .Do(x => Debug.Log(x)) // output progress\n    .Last() // last sequence is load completed\n    .Subscribe();\n```\n\nUsing for MultiThreading\n---\n\n```csharp\n// Observable.Start is start factory methods on specified scheduler\n// default is on ThreadPool\nvar heavyMethod = Observable.Start(() =>\n{\n    // heavy method...\n    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));\n    return 10;\n});\n\nvar heavyMethod2 = Observable.Start(() =>\n{\n    // heavy method...\n    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));\n    return 10;\n});\n\n// Join and await two other thread values\nObservable.WhenAll(heavyMethod, heavyMethod2)\n    .ObserveOnMainThread() // return to main thread\n    .Subscribe(xs =>\n    {\n        // Unity can't touch GameObject from other thread\n        // but use ObserveOnMainThread, you can touch GameObject naturally.\n        (GameObject.Find(\"myGuiText\")).guiText.text = xs[0] + \":\" + xs[1];\n    }); \n```\n\nDefaultScheduler\n---\nUniRx's default time based operations (Interval, Timer, Buffer(timeSpan), etc) use `Scheduler.MainThread` as their scheduler. That means most operators (except for `Observable.Start`) work on a single thread, so ObserverOn isn't needed and thread safety measures can be ignored. This is differet from the standard RxNet implementation but better suited to the Unity environment.  \n\n`Scheduler.MainThread` runs under Time.timeScale's influence. If you want to ignore the time scale, use ` Scheduler.MainThreadIgnoreTimeScale` instead.\n\nMonoBehaviour triggers\n---\nUniRx can handle MonoBehaviour events with `UniRx.Triggers`:\n\n```csharp\nusing UniRx;\nusing UniRx.Triggers; // need UniRx.Triggers namespace\n\npublic class MyComponent : MonoBehaviour\n{\n    void Start()\n    {\n        // Get the plain object\n        var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);\n\n        // Add ObservableXxxTrigger for handle MonoBehaviour's event as Observable\n        cube.AddComponent<ObservableUpdateTrigger>()\n            .UpdateAsObservable()\n            .SampleFrame(30)\n            .Subscribe(x => Debug.Log(\"cube\"), () => Debug.Log(\"destroy\"));\n\n        // destroy after 3 second:)\n        GameObject.Destroy(cube, 3f);\n    }\n}\n```\n\nSupported triggers are listed in [UniRx.wiki#UniRx.Triggers](https://github.com/neuecc/UniRx/wiki#unirxtriggers).\n\nThese can also be handled more easily by directly subscribing to observables returned by extension methods on Component/GameObject. These methods inject ObservableTrigger automaticaly (except for `ObservableEventTrigger` and `ObservableStateMachineTrigger`):\n\n```csharp\nusing UniRx;\nusing UniRx.Triggers; // need UniRx.Triggers namespace for extend gameObejct\n\npublic class DragAndDropOnce : MonoBehaviour\n{\n    void Start()\n    {\n        // All events can subscribe by ***AsObservable\n        this.OnMouseDownAsObservable()\n            .SelectMany(_ => this.UpdateAsObservable())\n            .TakeUntil(this.OnMouseUpAsObservable())\n            .Select(_ => Input.mousePosition)\n            .Subscribe(x => Debug.Log(x));\n    }\n}\n```\n\n> Previous versions of UniRx provided `ObservableMonoBehaviour`. This is a legacy interface that is no longer supported. Please use UniRx.Triggers instead.\n\nCreating custom triggers\n---\nConverting to Observable is the best way to handle Unity events. If the standard triggers supplied by UniRx are not enough, you can create custom triggers. To demonstrate, here's a LongTap trigger for uGUI:\n\n```csharp\npublic class ObservableLongPointerDownTrigger : ObservableTriggerBase, IPointerDownHandler, IPointerUpHandler\n{\n    public float IntervalSecond = 1f;\n\n    Subject<Unit> onLongPointerDown;\n\n    float? raiseTime;\n\n    void Update()\n    {\n        if (raiseTime != null && raiseTime <= Time.realtimeSinceStartup)\n        {\n            if (onLongPointerDown != null) onLongPointerDown.OnNext(Unit.Default);\n            raiseTime = null;\n        }\n    }\n\n    void IPointerDownHandler.OnPointerDown(PointerEventData eventData)\n    {\n        raiseTime = Time.realtimeSinceStartup + IntervalSecond;\n    }\n\n    void IPointerUpHandler.OnPointerUp(PointerEventData eventData)\n    {\n        raiseTime = null;\n    }\n\n    public IObservable<Unit> OnLongPointerDownAsObservable()\n    {\n        return onLongPointerDown ?? (onLongPointerDown = new Subject<Unit>());\n    }\n\n    protected override void RaiseOnCompletedOnDestroy()\n    {\n        if (onLongPointerDown != null)\n        {\n            onLongPointerDown.OnCompleted();\n        }\n    }\n}\n```\n\nIt can be used as easily as the standard triggers:\n\n```csharp\nvar trigger = button.AddComponent<ObservableLongPointerDownTrigger>();\n\ntrigger.OnLongPointerDownAsObservable().Subscribe();\n```\n\nObservable Lifecycle Management\n---\nWhen is OnCompleted called? Subscription lifecycle management is very important to consider when using UniRx. `ObservableTriggers` call OnCompleted when the GameObject they are attached to is destroyed. Other static generator methods (`Observable.Timer`, `Observable.EveryUpdate`, etc...) do not stop automatically, and their subscriptions should be managed manually.\n\nRx provides some helper methods, such as `IDisposable.AddTo` which allows you to dispose of several subscriptions at once:\n\n```csharp\n// CompositeDisposable is similar with List<IDisposable>, manage multiple IDisposable\nCompositeDisposable disposables = new CompositeDisposable(); // field\n\nvoid Start()\n{\n    Observable.EveryUpdate().Subscribe(x => Debug.Log(x)).AddTo(disposables);\n}\n\nvoid OnTriggerEnter(Collider other)\n{\n    // .Clear() => Dispose is called for all inner disposables, and the list is cleared.\n    // .Dispose() => Dispose is called for all inner disposables, and Dispose is called immediately after additional Adds.\n    disposables.Clear();\n}\n```\n\nIf you want to automatically Dispose when a GameObjects is destroyed, use AddTo(GameObject/Component):\n\n```csharp\nvoid Start()\n{\n    Observable.IntervalFrame(30).Subscribe(x => Debug.Log(x)).AddTo(this);\n}\n```\n\nAddTo calls facilitate automatic Dispose. If you needs special OnCompleted handling in the pipeline, however, use `TakeWhile`, `TakeUntil`, `TakeUntilDestroy` and `TakeUntilDisable` instead:\n\n```csharp\nObservable.IntervalFrame(30).TakeUntilDisable(this)\n    .Subscribe(x => Debug.Log(x), () => Debug.Log(\"completed!\"));\n```\n\nIf you handle events, `Repeat` is an important but dangerous method. It may cause an infinite loop, so handle with care:\n\n```csharp\nusing UniRx;\nusing UniRx.Triggers;\n\npublic class DangerousDragAndDrop : MonoBehaviour\n{\n    void Start()\n    {\n        this.gameObject.OnMouseDownAsObservable()\n            .SelectMany(_ => this.gameObject.UpdateAsObservable())\n            .TakeUntil(this.gameObject.OnMouseUpAsObservable())\n            .Select(_ => Input.mousePosition)\n            .Repeat() // dangerous!!! Repeat cause infinite repeat subscribe at GameObject was destroyed.(If in UnityEditor, Editor is freezed)\n            .Subscribe(x => Debug.Log(x));\n    }\n}\n```\n\nUniRx provides an additional safe Repeat method. `RepeatSafe`: if contiguous \"OnComplete\" are called repeat stops. `RepeatUntilDestroy(gameObject/component)`, `RepeatUntilDisable(gameObject/component)` allows to stop when a target GameObject has been destroyed:\n\n```csharp\nthis.gameObject.OnMouseDownAsObservable()\n    .SelectMany(_ => this.gameObject.UpdateAsObservable())\n    .TakeUntil(this.gameObject.OnMouseUpAsObservable())\n    .Select(_ => Input.mousePosition)\n    .RepeatUntilDestroy(this) // safety way\n    .Subscribe(x => Debug.Log(x));            \n```\n\nUniRx gurantees hot observable(FromEvent/Subject/ReactiveProperty/UnityUI.AsObservable..., there are like event) have unhandled exception durability. What is it? If subscribe in subcribe, does not detach event.\n\n```csharp\nbutton.OnClickAsObservable().Subscribe(_ =>\n{\n    // If throws error in inner subscribe, but doesn't detached OnClick event.\n    ObservableWWW.Get(\"htttp://error/\").Subscribe(x =>\n    {\n        Debug.Log(x);\n    });\n});\n```\n\nThis behaviour is sometimes useful such as user event handling.\n\n\nAll class instances provide an `ObserveEveryValueChanged` method, which watches for changing values every frame:\n\n```csharp\n// watch position change\nthis.transform.ObserveEveryValueChanged(x => x.position).Subscribe(x => Debug.Log(x));\n```\n\nIt's very useful. If the watch target is a GameObject, it will stop observing when the target is destroyed, and call OnCompleted. If the watch target is a plain C# Object, OnCompleted will be called on GC.\n\nConverting Unity callbacks to IObservables\n---\nUse Subject (or AsyncSubject for asynchronious operations):\n\n```csharp\npublic class LogCallback\n{\n    public string Condition;\n    public string StackTrace;\n    public UnityEngine.LogType LogType;\n}\n\npublic static class LogHelper\n{\n    static Subject<LogCallback> subject;\n\n    public static IObservable<LogCallback> LogCallbackAsObservable()\n    {\n        if (subject == null)\n        {\n            subject = new Subject<LogCallback>();\n\n            // Publish to Subject in callback\n            UnityEngine.Application.RegisterLogCallback((condition, stackTrace, type) =>\n            {\n                subject.OnNext(new LogCallback { Condition = condition, StackTrace = stackTrace, LogType = type });\n            });\n        }\n\n        return subject.AsObservable();\n    }\n}\n\n// method is separatable and composable\nLogHelper.LogCallbackAsObservable()\n    .Where(x => x.LogType == LogType.Warning)\n    .Subscribe();\n\nLogHelper.LogCallbackAsObservable()\n    .Where(x => x.LogType == LogType.Error)\n    .Subscribe();\n```\n\nIn Unity5, `Application.RegisterLogCallback` was removed in favor of `Application.logMessageReceived`, so we can now simply use `Observable.FromEvent`.\n\n```csharp\npublic static IObservable<LogCallback> LogCallbackAsObservable()\n{\n    return Observable.FromEvent<Application.LogCallback, LogCallback>(\n        h => (condition, stackTrace, type) => h(new LogCallback { Condition = condition, StackTrace = stackTrace, LogType = type }),\n        h => Application.logMessageReceived += h, h => Application.logMessageReceived -= h);\n}\n```\n\nStream Logger\n---\n```csharp\n// using UniRx.Diagnostics;\n\n// logger is threadsafe, define per class with name.\nstatic readonly Logger logger = new Logger(\"Sample11\");\n\n// call once at applicationinit\npublic static void ApplicationInitialize()\n{\n    // Log as Stream, UniRx.Diagnostics.ObservableLogger.Listener is IObservable<LogEntry>\n    // You can subscribe and output to any place.\n    ObservableLogger.Listener.LogToUnityDebug();\n\n    // for example, filter only Exception and upload to web.\n    // (make custom sink(IObserver<EventEntry>) is better to use)\n    ObservableLogger.Listener\n        .Where(x => x.LogType == LogType.Exception)\n        .Subscribe(x =>\n        {\n            // ObservableWWW.Post(\"\", null).Subscribe();\n        });\n}\n\n// Debug is write only DebugBuild.\nlogger.Debug(\"Debug Message\");\n\n// or other logging methods\nlogger.Log(\"Message\");\nlogger.Exception(new Exception(\"test exception\"));\n```\n\nDebugging\n---\n`Debug` operator in `UniRx.Diagnostics` namespace helps debugging.\n\n```csharp\n// needs Diagnostics using\nusing UniRx.Diagnostics;\n\n---\n\n// [DebugDump, Normal]OnSubscribe\n// [DebugDump, Normal]OnNext(1)\n// [DebugDump, Normal]OnNext(10)\n// [DebugDump, Normal]OnCompleted()\n{\n    var subject = new Subject<int>();\n\n    subject.Debug(\"DebugDump, Normal\").Subscribe();\n\n    subject.OnNext(1);\n    subject.OnNext(10);\n    subject.OnCompleted();\n}\n\n// [DebugDump, Cancel]OnSubscribe\n// [DebugDump, Cancel]OnNext(1)\n// [DebugDump, Cancel]OnCancel\n{\n    var subject = new Subject<int>();\n\n    var d = subject.Debug(\"DebugDump, Cancel\").Subscribe();\n\n    subject.OnNext(1);\n    d.Dispose();\n}\n\n// [DebugDump, Error]OnSubscribe\n// [DebugDump, Error]OnNext(1)\n// [DebugDump, Error]OnError(System.Exception)\n{\n    var subject = new Subject<int>();\n\n    subject.Debug(\"DebugDump, Error\").Subscribe();\n\n    subject.OnNext(1);\n    subject.OnError(new Exception());\n}\n```\n\nshows sequence element on `OnNext`, `OnError`, `OnCompleted`, `OnCancel`, `OnSubscribe` timing to Debug.Log. It enables only `#if DEBUG`.\n\nUnity-specific Extra Gems\n---\n```csharp\n// Unity's singleton UiThread Queue Scheduler\nScheduler.MainThreadScheduler \nObserveOnMainThread()/SubscribeOnMainThread()\n\n// Global StartCoroutine runner\nMainThreadDispatcher.StartCoroutine(enumerator)\n\n// convert Coroutine to IObservable\nObservable.FromCoroutine((observer, token) => enumerator(observer, token)); \n\n// convert IObservable to Coroutine\nyield return Observable.Range(1, 10).ToYieldInstruction(); // after Unity 5.3, before can use StartAsCoroutine()\n\n// Lifetime hooks\nObservable.EveryApplicationPause();\nObservable.EveryApplicationFocus();\nObservable.OnceApplicationQuit();\n```\n\nFramecount-based time operators\n---\nUniRx provides a few framecount-based time operators:\n\nMethod | \n-------|\nEveryUpdate|\nEveryFixedUpdate|\nEveryEndOfFrame|\nEveryGameObjectUpdate|\nEveryLateUpdate|\nObserveOnMainThread|\nNextFrame|\nIntervalFrame|\nTimerFrame|\nDelayFrame|\nSampleFrame|\nThrottleFrame|\nThrottleFirstFrame|\nTimeoutFrame|\nDelayFrameSubscription|\nFrameInterval|\nFrameTimeInterval|\nBatchFrame|\n\nFor example, delayed invoke once:\n\n```csharp\nObservable.TimerFrame(100).Subscribe(_ => Debug.Log(\"after 100 frame\"));\n```\n\nEvery* Method's execution order is\n\n```\nEveryGameObjectUpdate(in MainThreadDispatcher's Execution Order) ->\nEveryUpdate -> \nEveryLateUpdate -> \nEveryEndOfFrame\n```\n\nEveryGameObjectUpdate invoke from same frame if caller is called before MainThreadDispatcher.Update(I recommend MainThreadDispatcher called first than others(ScriptExecutionOrder makes -32000)      \nEveryLateUpdate, EveryEndOfFrame invoke from same frame.  \nEveryUpdate, invoke from next frame.  \n\nMicroCoroutine\n---\nMicroCoroutine is memory efficient and fast coroutine worker. This implemantation is based on [Unity blog's 10000 UPDATE() CALLS](http://blogs.unity3d.com/2015/12/23/1k-update-calls/), avoid managed-unmanaged overhead so gets 10x faster iteration. MicroCoroutine is automaticaly used on Framecount-based time operators and ObserveEveryValueChanged.\n\nIf you want to use MicroCoroutine instead of standard unity coroutine, use `MainThreadDispatcher.StartUpdateMicroCoroutine` or `Observable.FromMicroCoroutine`.\n\n```csharp\nint counter;\n\nIEnumerator Worker()\n{\n    while(true)\n    {\n        counter++;\n        yield return null;\n    }\n}\n\nvoid Start()\n{\n    for(var i = 0; i < 10000; i++)\n    {\n        // fast, memory efficient\n        MainThreadDispatcher.StartUpdateMicroCoroutine(Worker());\n\n        // slow...\n        // StartCoroutine(Worker());\n    }\n}\n```\n\n![image](https://cloud.githubusercontent.com/assets/46207/15267997/86e9ed5c-1a0c-11e6-8371-14b61a09c72c.png)\n\nMicroCoroutine's limitation, only supports `yield return null` and update timing is determined start method(`StartUpdateMicroCoroutine`, `StartFixedUpdateMicroCoroutine`, `StartEndOfFrameMicroCoroutine`). \n\nIf you combine with other IObservable, you can check completed property like isDone.\n\n```csharp\nIEnumerator MicroCoroutineWithToYieldInstruction()\n{\n    var www = ObservableWWW.Get(\"http://aaa\").ToYieldInstruction();\n    while (!www.IsDone)\n    {\n        yield return null;\n    }\n\n    if (www.HasResult)\n    {\n        UnityEngine.Debug.Log(www.Result);\n    }\n}\n```\n\nuGUI Integration\n---\nUniRx can handle `UnityEvent`s easily. Use `UnityEvent.AsObservable` to subscribe to events:\n\n```csharp\npublic Button MyButton;\n// ---\nMyButton.onClick.AsObservable().Subscribe(_ => Debug.Log(\"clicked\"));\n```\n\nTreating Events as Observables enables declarative UI programming. \n\n```csharp\npublic Toggle MyToggle;\npublic InputField MyInput;\npublic Text MyText;\npublic Slider MySlider;\n\n// On Start, you can write reactive rules for declaretive/reactive ui programming\nvoid Start()\n{\n    // Toggle, Input etc as Observable (OnValueChangedAsObservable is a helper providing isOn value on subscribe)\n    // SubscribeToInteractable is an Extension Method, same as .interactable = x)\n    MyToggle.OnValueChangedAsObservable().SubscribeToInteractable(MyButton);\n    \n    // Input is displayed after a 1 second delay\n    MyInput.OnValueChangedAsObservable()\n        .Where(x => x != null)\n        .Delay(TimeSpan.FromSeconds(1))\n        .SubscribeToText(MyText); // SubscribeToText is helper for subscribe to text\n    \n    // Converting for human readability\n    MySlider.OnValueChangedAsObservable()\n        .SubscribeToText(MyText, x => Math.Round(x, 2).ToString());\n}\n```\n\nFor more on reactive UI programming please consult Sample12, Sample13 and the ReactiveProperty section below. \n\nReactiveProperty, ReactiveCollection\n---\nGame data often requires notification. Should we use properties and events (callbacks)? That's often too complex. UniRx provides ReactiveProperty, a lightweight property broker.\n\n```csharp\n// Reactive Notification Model\npublic class Enemy\n{\n    public ReactiveProperty<long> CurrentHp { get; private set; }\n\n    public ReactiveProperty<bool> IsDead { get; private set; }\n\n    public Enemy(int initialHp)\n    {\n        // Declarative Property\n        CurrentHp = new ReactiveProperty<long>(initialHp);\n        IsDead = CurrentHp.Select(x => x <= 0).ToReactiveProperty();\n    }\n}\n\n// ---\n// onclick, HP decrement\nMyButton.OnClickAsObservable().Subscribe(_ => enemy.CurrentHp.Value -= 99);\n// subscribe from notification model.\nenemy.CurrentHp.SubscribeToText(MyText);\nenemy.IsDead.Where(isDead => isDead == true)\n    .Subscribe(_ =>\n    {\n        MyButton.interactable = false;\n    });\n```\n\nYou can combine ReactiveProperties, ReactiveCollections and observables returned by UnityEvent.AsObservable. All UI elements are observable.\n\nGeneric ReactiveProperties are not serializable or inspecatble in the Unity editor, but UniRx provides specialized subclasses of ReactiveProperty that are. These include classes such as Int/LongReactiveProperty, Float/DoubleReactiveProperty, StringReactiveProperty, BoolReactiveProperty and more (Browse them here: [InspectableReactiveProperty.cs](https://github.com/neuecc/UniRx/blob/master/Assets/Plugins/UniRx/Scripts/UnityEngineBridge/InspectableReactiveProperty.cs)). All are fully editable in the inspector. For custom Enum ReactiveProperty, it's easy to write a custom inspectable ReactiveProperty[T].\n\nIf you needs `[Multiline]` or `[Range]` attach to ReactiveProperty, you can use `MultilineReactivePropertyAttribute` and `RangeReactivePropertyAttribute` instead of `Multiline` and `Range`.\n\nThe provided derived InpsectableReactiveProperties are displayed in the inspector naturally and notify when their value is changed even when it is changed in the inspector.\n\n![](StoreDocument/RxPropInspector.png)\n\nThis functionality is provided by [InspectorDisplayDrawer](https://github.com/neuecc/UniRx/blob/master/Assets/Plugins/UniRx/Scripts/UnityEngineBridge/InspectorDisplayDrawer.cs). You can supply your own custom specialized ReactiveProperties by inheriting from it:\n\n```csharp\npublic enum Fruit\n{\n    Apple, Grape\n}\n\n[Serializable]\npublic class FruitReactiveProperty : ReactiveProperty<Fruit>\n{\n    public FruitReactiveProperty()\n    {\n    }\n\n    public FruitReactiveProperty(Fruit initialValue)\n        :base(initialValue)\n    {\n    }\n}\n\n[UnityEditor.CustomPropertyDrawer(typeof(FruitReactiveProperty))]\n[UnityEditor.CustomPropertyDrawer(typeof(YourSpecializedReactiveProperty2))] // and others...\npublic class ExtendInspectorDisplayDrawer : InspectorDisplayDrawer\n{\n}\n```\n\nIf a ReactiveProperty value is only updated within a stream, you can make it read only by using from `ReadOnlyReactiveProperty`.\n\n```csharp\npublic class Person\n{\n    public ReactiveProperty<string> GivenName { get; private set; }\n    public ReactiveProperty<string> FamilyName { get; private set; }\n    public ReadOnlyReactiveProperty<string> FullName { get; private set; }\n\n    public Person(string givenName, string familyName)\n    {\n        GivenName = new ReactiveProperty<string>(givenName);\n        FamilyName = new ReactiveProperty<string>(familyName);\n        // If change the givenName or familyName, notify with fullName!\n        FullName = GivenName.CombineLatest(FamilyName, (x, y) => x + \" \" + y).ToReadOnlyReactiveProperty();\n    }\n}\n```\n\nModel-View-(Reactive)Presenter Pattern\n---\nUniRx makes it possible to implement the MVP(MVRP) Pattern.\n\n![](StoreDocument/MVP_Pattern.png)\n\nWhy should we use MVP instead of MVVM? Unity doesn't provide a UI binding mechanism and creating a binding layer is too complex and loss and affects performance. Still, Views need updating. Presenters are aware of their view's components and can update them. Although there is no real binding, Observables enables subscription to notification, which can act much like the real thing. This pattern is called a Reactive Presenter: \n\n```csharp\n// Presenter for scene(canvas) root.\npublic class ReactivePresenter : MonoBehaviour\n{\n    // Presenter is aware of its View (binded in the inspector)\n    public Button MyButton;\n    public Toggle MyToggle;\n    \n    // State-Change-Events from Model by ReactiveProperty\n    Enemy enemy = new Enemy(1000);\n\n    void Start()\n    {\n        // Rx supplies user events from Views and Models in a reactive manner \n        MyButton.OnClickAsObservable().Subscribe(_ => enemy.CurrentHp.Value -= 99);\n        MyToggle.OnValueChangedAsObservable().SubscribeToInteractable(MyButton);\n\n        // Models notify Presenters via Rx, and Presenters update their views\n        enemy.CurrentHp.SubscribeToText(MyText);\n        enemy.IsDead.Where(isDead => isDead == true)\n            .Subscribe(_ =>\n            {\n                MyToggle.interactable = MyButton.interactable = false;\n            });\n    }\n}\n\n// The Model. All property notify when their values change\npublic class Enemy\n{\n    public ReactiveProperty<long> CurrentHp { get; private set; }\n\n    public ReactiveProperty<bool> IsDead { get; private set; }\n\n    public Enemy(int initialHp)\n    {\n        // Declarative Property\n        CurrentHp = new ReactiveProperty<long>(initialHp);\n        IsDead = CurrentHp.Select(x => x <= 0).ToReactiveProperty();\n    }\n}\n```\n\nA View is a scene, that is a Unity hierarchy. Views are associated with Presenters by the Unity Engine on initialize. The XxxAsObservable methods make creating event signals simple, without any overhead. SubscribeToText and SubscribeToInteractable are simple binding-like helpers. These may be simple tools, but they are very powerful. They feel natural in the Unity environment and provide high performance and a clean architecture.\n\n![](StoreDocument/MVRP_Loop.png)\n\nV -> RP -> M -> RP -> V completely connected in a reactive way. UniRx provides all of the adaptor methods and classes, but other MVVM(or MV*) frameworks can be used instead. UniRx/ReactiveProperty is only simple toolkit. \n\nGUI programming also benefits from ObservableTriggers. ObservableTriggers convert Unity events to Observables, so the MV(R)P pattern can be composed using them. For example, `ObservableEventTrigger` converts uGUI events to Observable:\n\n```csharp\nvar eventTrigger = this.gameObject.AddComponent<ObservableEventTrigger>();\neventTrigger.OnBeginDragAsObservable()\n    .SelectMany(_ => eventTrigger.OnDragAsObservable(), (start, current) => UniRx.Tuple.Create(start, current))\n    .TakeUntil(eventTrigger.OnEndDragAsObservable())\n    .RepeatUntilDestroy(this)\n    .Subscribe(x => Debug.Log(x));\n```\n\n(Obsolete)PresenterBase\n---\n> Note:\n> PresenterBase works enough, but too complex.  \n> You can use simple `Initialize` method and call parent to child, it works for most scenario.  \n> So I don't recommend using `PresenterBase`, sorry.   \n\nReactiveCommand, AsyncReactiveCommand\n----\nReactiveCommand abstraction of button command with boolean interactable.\n             \n```csharp\npublic class Player\n{\t\t\n   public ReactiveProperty<int> Hp;\t\t\n   public ReactiveCommand Resurrect;\t\t\n\t\t\n   public Player()\n   {\t\t\n        Hp = new ReactiveProperty<int>(1000);\t\t\n        \t\t\n        // If dead, can not execute.\t\t\n        Resurrect = Hp.Select(x => x <= 0).ToReactiveCommand();\t\t\n        // Execute when clicked\t\t\n        Resurrect.Subscribe(_ =>\t\t\n        {\t\t\n             Hp.Value = 1000;\t\t\n        }); \t\t\n    }\t\t\n}\t\t\n\t\t\npublic class Presenter : MonoBehaviour\t\t\n{\t\t\n    public Button resurrectButton;\t\t\n\t\t\n    Player player;\t\t\n\t\t\n    void Start()\n    {\t\t\n      player = new Player();\t\t\n\t\t\n      // If Hp <= 0, can't press button.\t\t\n      player.Resurrect.BindTo(resurrectButton);\t\t\n    }\t\t\n}\t\t\n```\t\t\n\t\t\nAsyncReactiveCommand is a variation of ReactiveCommand that `CanExecute`(in many cases bind to button's interactable) is changed to false until asynchronous execution was finished.\t\t\n\t\t\n```csharp\t\t\npublic class Presenter : MonoBehaviour\t\t\n{\t\t\n    public UnityEngine.UI.Button button;\t\t\n\t\t\n    void Start()\n    {\t\t\n        var command = new AsyncReactiveCommand();\t\t\n\t\t\n        command.Subscribe(_ =>\t\t\n        {\t\t\n            // heavy, heavy, heavy method....\t\t\n            return Observable.Timer(TimeSpan.FromSeconds(3)).AsUnitObservable();\t\t\n        });\t\t\n\t\t\n        // after clicked, button shows disable for 3 seconds\t\t\n        command.BindTo(button);\t\t\n\t\t\n        // Note:shortcut extension, bind aync onclick directly\t\t\n        button.BindToOnClick(_ =>\t\t\n        {\t\t\n            return Observable.Timer(TimeSpan.FromSeconds(3)).AsUnitObservable();\t\t\n        });\t\t\n    }\t\t\n}\t\t\n```\n\n`AsyncReactiveCommand` has three constructor.\n\n* `()` - CanExecute is changed to false until async execution finished\n* `(IObservable<bool> canExecuteSource)` - Mixed with empty, CanExecute becomes true when canExecuteSource send to true and does not executing \n* `(IReactiveProperty<bool> sharedCanExecute)` - share execution status between multiple AsyncReactiveCommands, if one AsyncReactiveCommand is executing, other AsyncReactiveCommands(with same sharedCanExecute property) becomes CanExecute false until async execution finished\n\n```csharp\npublic class Presenter : MonoBehaviour\n{\n    public UnityEngine.UI.Button button1;\n    public UnityEngine.UI.Button button2;\n\n    void Start()\n    {\n        // share canExecute status.\n        // when clicked button1, button1 and button2 was disabled for 3 seconds.\n\n        var sharedCanExecute = new ReactiveProperty<bool>();\n\n        button1.BindToOnClick(sharedCanExecute, _ =>\n        {\n            return Observable.Timer(TimeSpan.FromSeconds(3)).AsUnitObservable();\n        });\n\n        button2.BindToOnClick(sharedCanExecute, _ =>\n        {\n            return Observable.Timer(TimeSpan.FromSeconds(3)).AsUnitObservable();\n        });\n    }\n}\n```\n\nMessageBroker, AsyncMessageBroker\n---\nMessageBroker is Rx based in-memory pubsub system filtered by type.\n\n```csharp\npublic class TestArgs\n{\n    public int Value { get; set; }\n}\n\n---\n\n// Subscribe message on global-scope.\nMessageBroker.Default.Receive<TestArgs>().Subscribe(x => UnityEngine.Debug.Log(x));\n\n// Publish message\nMessageBroker.Default.Publish(new TestArgs { Value = 1000 });\n```\n\nAsyncMessageBroker is variation of MessageBroker, can await Publish call.\n\n```csharp\nAsyncMessageBroker.Default.Subscribe<TestArgs>(x =>\n{\n    // show after 3 seconds.\n    return Observable.Timer(TimeSpan.FromSeconds(3))\n        .ForEachAsync(_ =>\n        {\n            UnityEngine.Debug.Log(x);\n        });\n});\n\nAsyncMessageBroker.Default.PublishAsync(new TestArgs { Value = 3000 })\n    .Subscribe(_ =>\n    {\n        UnityEngine.Debug.Log(\"called all subscriber completed\");\n    });\n```\n\nUniRx.Toolkit\n---\n`UniRx.Toolkit` includes serveral Rx-ish tools. Currently includes `ObjectPool` and `AsyncObjectPool`.  It can `Rent`, `Return` and `PreloadAsync` for fill pool before rent operation.\n\n```csharp\n// sample class\npublic class Foobar : MonoBehaviour\n{\n    public IObservable<Unit> ActionAsync()\n    {\n        // heavy, heavy, action...\n        return Observable.Timer(TimeSpan.FromSeconds(3)).AsUnitObservable();\n    }\n}\n\npublic class FoobarPool : ObjectPool<Foobar>\n{\n    readonly Foobar prefab;\n    readonly Transform hierarchyParent;\n\n    public FoobarPool(Foobar prefab, Transform hierarchyParent)\n    {\n        this.prefab = prefab;\n        this.hierarchyParent = hierarchyParent;\n    }\n\n    protected override Foobar CreateInstance()\n    {\n        var foobar = GameObject.Instantiate<Foobar>(prefab);\n        foobar.transform.SetParent(hierarchyParent);\n\n        return foobar;\n    }\n\n    // You can overload OnBeforeRent, OnBeforeReturn, OnClear for customize action.\n    // In default, OnBeforeRent = SetActive(true), OnBeforeReturn = SetActive(false)\n\n    // protected override void OnBeforeRent(Foobar instance)\n    // protected override void OnBeforeReturn(Foobar instance)\n    // protected override void OnClear(Foobar instance)\n}\n\npublic class Presenter : MonoBehaviour\n{\n    FoobarPool pool = null;\n\n    public Foobar prefab;\n    public Button rentButton;\n\n    void Start()\n    {\n        pool = new FoobarPool(prefab, this.transform);\n\n        rentButton.OnClickAsObservable().Subscribe(_ =>\n        {\n            var foobar = pool.Rent();\n            foobar.ActionAsync().Subscribe(__ =>\n            {\n                // if action completed, return to pool\n                pool.Return(foobar);\n            });\n        });\n    }\n}\n```\n\nVisual Studio Analyzer\n---\nFor Visual Studio 2015 users, a custom analyzer, UniRxAnalyzer, is provided. It can, for example, detect when streams aren't subscribed to.\n\n![](StoreDocument/AnalyzerReference.jpg)\n\n![](StoreDocument/VSAnalyzer.jpg)\n\n`ObservableWWW` doesn't fire until it's subscribed to, so the analyzer warns about incorrect usage. It can be downloaded from NuGet.\n\n* Install-Package [UniRxAnalyzer](http://www.nuget.org/packages/UniRxAnalyzer)\n\nPlease submit new analyzer ideas on GitHub Issues!\n\nSamples\n---\nSee [UniRx/Examples](https://github.com/neuecc/UniRx/tree/master/Assets/Plugins/UniRx/Examples)  \n\nThe samples demonstrate how to do resource management (Sample09_EventHandling), what is the MainThreadDispatcher, among other things.\n\nWindows Store/Phone App (NETFX_CORE)\n---\nSome interfaces, such as  `UniRx.IObservable<T>` and `System.IObservable<T>`, cause conflicts when submitting to the Windows Store App.\nTherefore, when using NETFX_CORE, please refrain from using such constructs as `UniRx.IObservable<T>` and refer to the UniRx components by their short name, without adding the namespace. This solves the conflicts.\n\nDLL Separation\n---\nIf you want to pre-build UniRx, you can build own dll. clone project and open `UniRx.sln`, you can see `UniRx`, it is fullset separated project of UniRx. You should define compile symbol like  `UNITY;UNITY_5_4_OR_NEWER;UNITY_5_4_0;UNITY_5_4;UNITY_5;` + `UNITY_EDITOR`, `UNITY_IPHONE` or other platform symbol. We can not provides pre-build binary to release page, asset store because compile symbol is different each other.\n\nUPM Package\n---\nAfter Unity 2019.3.4f1, Unity 2020.1a21, that support path query parameter of git package. You can add `https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts` to Package Manager\n\nor add `\"com.neuecc.unirx\": \"https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts\"` to `Packages/manifest.json`.\n\nReference\n---\n* [UniRx/wiki](https://github.com/neuecc/UniRx/wiki)\n\nUniRx API documents.\n\n* [ReactiveX](http://reactivex.io/)\n\nThe home of ReactiveX. [Introduction](http://reactivex.io/intro.html), [All operators](http://reactivex.io/documentation/operators.html) are illustrated with graphical marble diagrams, there makes easy to understand. And UniRx is official [ReactiveX Languages](http://reactivex.io/languages.html).\n\n* [Introduction to Rx](http://introtorx.com/)\n\nA great online tutorial and eBook.\n\n* [Beginner's Guide to the Reactive Extensions](http://msdn.microsoft.com/en-us/data/gg577611)\n\nMany videos, slides and documents for Rx.NET.\n\n* [The future of programming technology in Unity - UniRx -(JPN)](http://www.slideshare.net/torisoup/unity-unirx) \n  - [Korean translation](http://www.slideshare.net/agebreak/160402-unirx)\n\nIntro slide by [@torisoup](https://github.com/torisoup)\n\n* [Reactive Programming, ​Unity 3D and you](http://slides.com/sammegidov/unirx#/)\n  - [Repository of UniRxSimpleGame](https://github.com/Xerios/UniRxSimpleGame)\n\nIntro slide and sample game by [@Xerios](https://github.com/Xerios)\n\n* [GDC 2016 Sessions of Adventure Capialist](https://www.youtube.com/watch?v=j3YhG91mPsU&feature=youtu.be&t=9m12s)\n\nHow to integrate with PlayFab API\n\nHelp & Contribute\n---\nSupport thread on the Unity forum. Ask me any question - [http://forum.unity3d.com/threads/248535-UniRx-Reactive-Extensions-for-Unity](http://forum.unity3d.com/threads/248535-UniRx-Reactive-Extensions-for-Unity)  \n\nWe welcome any contributions, be they bug reports, requests or pull request.  \nPlease consult and submit your reports or requests on GitHub issues.  \nSource code is available in `Assets/Plugins/UniRx/Scripts`.  \n\nAuthor's other Unity + LINQ Assets\n---\n[LINQ to GameObject](https://github.com/neuecc/LINQ-to-GameObject-for-Unity/) is a group of GameObject extensions for Unity that allows traversing the hierarchy and appending GameObject to it like LINQ to XML. It's free and opensource on GitHub.\n\n![](https://raw.githubusercontent.com/neuecc/LINQ-to-GameObject-for-Unity/master/Images/axis.jpg)\n\nAuthor Info\n---\nYoshifumi Kawai(a.k.a. neuecc) is a software developer in Japan.  \nCurrently founded consulting company [New World, Inc.](http://new-world.co/)  \nHe is awarding Microsoft MVP for Visual C# since 2011.  \n\nBlog: https://medium.com/@neuecc (English)  \nBlog: http://neue.cc/ (Japanese)   \nTwitter: https://twitter.com/neuecc (Japanese)\n\nLicense\n---\nThis library is under the MIT License.\n\nSome code is borrowed from [Rx.NET](https://github.com/dotnet/reactive/) and [mono/mcs](https://github.com/mono/mono).\n"
  },
  {
    "path": "RuntimeUnitTestToolkit.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n    <CscToolPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Tools\\RoslynScripts</CscToolPath>\n    <CscToolExe>unity_csc.bat</CscToolExe>\n  </PropertyGroup>\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>10.0.20506</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <RootNamespace></RootNamespace>\n    <ProjectGuid>{1E3311C2-2F9C-3153-5981-699605B16915}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <AssemblyName>RuntimeUnitTestToolkit</AssemblyName>\n    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <BaseDirectory>.</BaseDirectory>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>Temp\\bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;UNITY_2019_1_0;UNITY_2019_1;UNITY_2019;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2019_1_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_SCRIPTING_GC_WBARRIERS;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>Temp\\bin\\Release\\</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup>\n    <NoConfig>true</NoConfig>\n    <NoStdLib>true</NoStdLib>\n    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\n    <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>\n    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <UnityProjectGenerator>Unity/VSTU</UnityProjectGenerator>\n    <UnityProjectType>Game:1</UnityProjectType>\n    <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>\n    <UnityVersion>2019.1.0f2</UnityVersion>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"UnityEngine\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEngine/UnityEngine.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEditor.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Assets\\RuntimeUnitTestToolkit\\Editor\\HierarchyTreeBuilder.cs\" />\n    <Compile Include=\"Assets\\RuntimeUnitTestToolkit\\Editor\\UnitTestBuilder.cs\" />\n    <Compile Include=\"Assets\\RuntimeUnitTestToolkit\\Editor\\UnitTestBuilder.MenuItems.cs\" />\n    <Compile Include=\"Assets\\RuntimeUnitTestToolkit\\UnitTestRunner.cs\" />\n    <None Include=\"Assets\\RuntimeUnitTestToolkit\\RuntimeUnitTestToolkit.asmdef\" />\n    <Reference Include=\"UnityEngine.AIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ARModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AccessibilityModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AnimationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClothModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterInputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterRendererModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CrashReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.DirectorModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.FileSystemHttpModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GameCenterModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GridModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.HotReloadModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.IMGUIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ImageConversionModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.InputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.JSONSerializeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.LocalizationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ParticleSystemModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PerformanceReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Physics2DModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ProfilerModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ScreenCaptureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SharedInternalsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteMaskModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteShapeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StreamingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StyleSheetsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SubstanceModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TLSModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainPhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextCoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextRenderingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TilemapModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIElementsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UNETModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UmbraModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityAnalyticsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityConnectModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityTestProtocolModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestTextureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestWWWModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VFXModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VehiclesModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VideoModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.WindModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.XRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Locator\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"nunit.framework\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.VR\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Graphs\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.WindowsStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.OSXStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Android.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.iOS.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SyntaxTree.VisualStudio.Unity.Bridge\">\n      <HintPath>C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreTools\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreTools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreToolsExtra\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreToolsExtra.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Advertisements\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.StandardEvents\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Tracker\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Purchasing\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll</HintPath>\n    </Reference>\n    <Reference Include=\"mscorlib\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Core\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.CSharp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Win32.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"netstandard\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.AppContext\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Concurrent\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.NonGeneric\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Specialized\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Annotations\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.EventBasedAsync\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.TypeConverter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Console\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data.Common\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Contracts\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Debug\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.FileVersionInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Process\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.StackTrace\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TextWriterTraceListener\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Tools\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TraceSource\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Drawing.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Dynamic.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Calendars\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Compression.ZipFile\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.DriveInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Watcher\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.IsolatedStorage\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.MemoryMappedFiles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Pipes\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.UnmanagedMemoryStream\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Expressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Queryable\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Rtc\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NameResolution\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NetworkInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Ping\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Requests\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Sockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebHeaderCollection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets.Client\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ObjectModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.ILGeneration\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.Lightweight\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Reader\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.ResourceManager\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Writer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.CompilerServices.VisualC\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Handles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.RuntimeInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.WindowsRuntime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Formatters\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Json\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Claims\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Algorithms\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Csp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.X509Certificates\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Principal\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.SecureString\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Duplex\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.NetTcp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.RegularExpressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Overlapped\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Thread\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.ThreadPool\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Timer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ValueTuple\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.ReaderWriter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlSerializer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Boo.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <Target Name=\"GenerateTargetFrameworkMonikerAttribute\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Tests/UniRx.Console/App.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup> \n        \n    <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.7.1\" /></startup>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Collections.Immutable\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-1.2.1.0\" newVersion=\"1.2.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.IO.Compression\" publicKeyToken=\"b77a5c561934e089\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.2.0\" newVersion=\"4.1.2.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>\n"
  },
  {
    "path": "Tests/UniRx.Console/CombineLatestGenerator.tt",
    "content": "﻿<#@ template debug=\"true\" hostSpecific=\"true\" #>\n<#@ output extension=\".txt\" #>\n<#@ Assembly Name=\"System.Core\" #>\n<#@ Assembly Name=\"System.Windows.Forms\" #>\n<#@ import namespace=\"System\" #>\n<#@ import namespace=\"System.IO\" #>\n<#@ import namespace=\"System.Diagnostics\" #>\n<#@ import namespace=\"System.Linq\" #>\n<#@ import namespace=\"System.Collections\" #>\n<#@ import namespace=\"System.Collections.Generic\" #> \n<#\n   \n   \n   var endCount = 7;\n#>\n\n<# for(var i = 3; i <= endCount; i++) { #>\npublic delegate TR CombineLatestFunc<<# for(var j = 1; j <= i; j++) { #>T<#= j #>, <# } #>TR>(<# for(var j = 1; j <= i; j++) { #>T<#= j #> arg<#= j #>, <# } #>);\n<# } #>\n\n\n\n<# for(var i = 3; i <= endCount; i++) { #>\npublic static IObservable<TR> CombineLatest<#= GetTRGeneric(i) #>(this <#= GetSources(i) #>, CombineLatestFunc<#= GetTRGeneric(i) #> resultSelector)\n{\n    return new CombineLatestObservable<#= GetTRGeneric(i) #>(<#= GetSources2(i) #>, resultSelector);\n}\n\n<# } #>\n\n\n\n\n\n\n\n<# for(var i = 3; i <= endCount; i++) { #>\n\ninternal class CombineLatestObservable<#= GetTRGeneric(i) #> : OperatorObservableBase<TR>\n{\n<# for(var j = 1; j <= i; j++) { #>\n    IObservable<T<#= j #>> source<#= j #>;\n<# } #>\n    CombineLatestFunc<#= GetTRGeneric(i) #> resultSelector;\n\n    public CombineLatestObservable(\n<# for(var j = 1; j <= i; j++) { #>\n        IObservable<T<#= j #>> source<#= j #>,\n<# } #>\n          CombineLatestFunc<#= GetTRGeneric(i) #> resultSelector)\n        : base(\n<# for(var j = 1; j <= i; j++) { #>\n            source<#= j #>.IsRequiredSubscribeOnCurrentThread() || \n<# } #>\n            false)\n    {\n<# for(var j = 1; j <= i; j++) { #>\n        this.source<#= j #> = source<#= j #>;\n<# } #>\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new CombineLatest(<#= i #>, this, observer, cancel).Run();\n    }\n\n    class CombineLatest : NthCombineLatestObserverBase<TR>\n    {\n        readonly CombineLatestObservable<#= GetTRGeneric(i) #> parent;\n        readonly object gate = new object();\n<# for(var j = 1; j <= i; j++) { #>\n        CombineLatestObserver<T<#= j #>> c<#= j #>;\n<# } #>\n\n        public CombineLatest(int length, CombineLatestObservable<#= GetTRGeneric(i) #> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n<# for(var j = 1; j <= i; j++) { #>\n            c<#= j #> = new CombineLatestObserver<T<#= j #>>(gate, this, <#= j - 1 #>);\n<# } #>\n            \n<# for(var j = 1; j <= i; j++) { #>\n            var s<#= j #> = parent.source<#= j #>.Subscribe(c<#= j #>);\n<# } #>\n\n            return StableCompositeDisposable.Create(<#= GetQ(\"s\", i) #>);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(<#= GetValue(i) #>);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n<# } #>\n\n<#+ \n\n    string GetTRGeneric(int count)\n    {\n        return  \"<\" + string.Join(\", \", Enumerable.Range(1, count).Select(x => \"T\" + x).ToArray()) + \", TR\" + \">\";\n    }\n    \n    string GetQ(string prefix, int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => prefix + x).ToArray());\n    }\n    \n    string GetValue(int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => \"c\" + x + \".Value\").ToArray());\n    }\n    \n    string GetClear(int count)\n    {\n        return  string.Join(\" \", Enumerable.Range(1, count).Select(x => \"q\" + x + \".Clear();\").ToArray());\n    }\n    \n    string GetSources(int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => string.Format(\"IObservable<T{0}> source{0}\", x)).ToArray());\n    }\n    \n    string GetSources2(int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => string.Format(\"source{0}\", x)).ToArray());\n    }\n\n\n\n #>"
  },
  {
    "path": "Tests/UniRx.Console/CombineLatestGenerator.txt",
    "content": "﻿ \n\npublic delegate TR CombineLatestFunc<T1, T2, T3, TR>(T1 arg1, T2 arg2, T3 arg3, );\npublic delegate TR CombineLatestFunc<T1, T2, T3, T4, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, );\npublic delegate TR CombineLatestFunc<T1, T2, T3, T4, T5, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, );\npublic delegate TR CombineLatestFunc<T1, T2, T3, T4, T5, T6, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, );\npublic delegate TR CombineLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, );\n\n\n\npublic static IObservable<TR> CombineLatest<T1, T2, T3, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, CombineLatestFunc<T1, T2, T3, TR> resultSelector)\n{\n    return new CombineLatestObservable<T1, T2, T3, TR>(source1, source2, source3, resultSelector);\n}\n\npublic static IObservable<TR> CombineLatest<T1, T2, T3, T4, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, CombineLatestFunc<T1, T2, T3, T4, TR> resultSelector)\n{\n    return new CombineLatestObservable<T1, T2, T3, T4, TR>(source1, source2, source3, source4, resultSelector);\n}\n\npublic static IObservable<TR> CombineLatest<T1, T2, T3, T4, T5, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, CombineLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n{\n    return new CombineLatestObservable<T1, T2, T3, T4, T5, TR>(source1, source2, source3, source4, source5, resultSelector);\n}\n\npublic static IObservable<TR> CombineLatest<T1, T2, T3, T4, T5, T6, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, CombineLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n{\n    return new CombineLatestObservable<T1, T2, T3, T4, T5, T6, TR>(source1, source2, source3, source4, source5, source6, resultSelector);\n}\n\npublic static IObservable<TR> CombineLatest<T1, T2, T3, T4, T5, T6, T7, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, CombineLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n{\n    return new CombineLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR>(source1, source2, source3, source4, source5, source6, source7, resultSelector);\n}\n\n\n\n\n\n\n\n\n\ninternal class CombineLatestObservable<T1, T2, T3, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    CombineLatestFunc<T1, T2, T3, TR> resultSelector;\n\n    public CombineLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n          CombineLatestFunc<T1, T2, T3, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new CombineLatest(3, this, observer, cancel).Run();\n    }\n\n    class CombineLatest : NthCombineLatestObserverBase<TR>\n    {\n        readonly CombineLatestObservable<T1, T2, T3, TR> parent;\n        readonly object gate = new object();\n        CombineLatestObserver<T1> c1;\n        CombineLatestObserver<T2> c2;\n        CombineLatestObserver<T3> c3;\n\n        public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new CombineLatestObserver<T1>(gate, this, 0);\n            c2 = new CombineLatestObserver<T2>(gate, this, 1);\n            c3 = new CombineLatestObserver<T3>(gate, this, 2);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n\n            return StableCompositeDisposable.Create(s1, s2, s3);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class CombineLatestObservable<T1, T2, T3, T4, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    CombineLatestFunc<T1, T2, T3, T4, TR> resultSelector;\n\n    public CombineLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n          CombineLatestFunc<T1, T2, T3, T4, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new CombineLatest(4, this, observer, cancel).Run();\n    }\n\n    class CombineLatest : NthCombineLatestObserverBase<TR>\n    {\n        readonly CombineLatestObservable<T1, T2, T3, T4, TR> parent;\n        readonly object gate = new object();\n        CombineLatestObserver<T1> c1;\n        CombineLatestObserver<T2> c2;\n        CombineLatestObserver<T3> c3;\n        CombineLatestObserver<T4> c4;\n\n        public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, T4, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new CombineLatestObserver<T1>(gate, this, 0);\n            c2 = new CombineLatestObserver<T2>(gate, this, 1);\n            c3 = new CombineLatestObserver<T3>(gate, this, 2);\n            c4 = new CombineLatestObserver<T4>(gate, this, 3);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n            var s4 = parent.source4.Subscribe(c4);\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class CombineLatestObservable<T1, T2, T3, T4, T5, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    IObservable<T5> source5;\n    CombineLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector;\n\n    public CombineLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n        IObservable<T5> source5,\n          CombineLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            source5.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.source5 = source5;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new CombineLatest(5, this, observer, cancel).Run();\n    }\n\n    class CombineLatest : NthCombineLatestObserverBase<TR>\n    {\n        readonly CombineLatestObservable<T1, T2, T3, T4, T5, TR> parent;\n        readonly object gate = new object();\n        CombineLatestObserver<T1> c1;\n        CombineLatestObserver<T2> c2;\n        CombineLatestObserver<T3> c3;\n        CombineLatestObserver<T4> c4;\n        CombineLatestObserver<T5> c5;\n\n        public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, T4, T5, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new CombineLatestObserver<T1>(gate, this, 0);\n            c2 = new CombineLatestObserver<T2>(gate, this, 1);\n            c3 = new CombineLatestObserver<T3>(gate, this, 2);\n            c4 = new CombineLatestObserver<T4>(gate, this, 3);\n            c5 = new CombineLatestObserver<T5>(gate, this, 4);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n            var s4 = parent.source4.Subscribe(c4);\n            var s5 = parent.source5.Subscribe(c5);\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, s5);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class CombineLatestObservable<T1, T2, T3, T4, T5, T6, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    IObservable<T5> source5;\n    IObservable<T6> source6;\n    CombineLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector;\n\n    public CombineLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n        IObservable<T5> source5,\n        IObservable<T6> source6,\n          CombineLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            source5.IsRequiredSubscribeOnCurrentThread() || \n            source6.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.source5 = source5;\n        this.source6 = source6;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new CombineLatest(6, this, observer, cancel).Run();\n    }\n\n    class CombineLatest : NthCombineLatestObserverBase<TR>\n    {\n        readonly CombineLatestObservable<T1, T2, T3, T4, T5, T6, TR> parent;\n        readonly object gate = new object();\n        CombineLatestObserver<T1> c1;\n        CombineLatestObserver<T2> c2;\n        CombineLatestObserver<T3> c3;\n        CombineLatestObserver<T4> c4;\n        CombineLatestObserver<T5> c5;\n        CombineLatestObserver<T6> c6;\n\n        public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, T4, T5, T6, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new CombineLatestObserver<T1>(gate, this, 0);\n            c2 = new CombineLatestObserver<T2>(gate, this, 1);\n            c3 = new CombineLatestObserver<T3>(gate, this, 2);\n            c4 = new CombineLatestObserver<T4>(gate, this, 3);\n            c5 = new CombineLatestObserver<T5>(gate, this, 4);\n            c6 = new CombineLatestObserver<T6>(gate, this, 5);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n            var s4 = parent.source4.Subscribe(c4);\n            var s5 = parent.source5.Subscribe(c5);\n            var s6 = parent.source6.Subscribe(c6);\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class CombineLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    IObservable<T5> source5;\n    IObservable<T6> source6;\n    IObservable<T7> source7;\n    CombineLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector;\n\n    public CombineLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n        IObservable<T5> source5,\n        IObservable<T6> source6,\n        IObservable<T7> source7,\n          CombineLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            source5.IsRequiredSubscribeOnCurrentThread() || \n            source6.IsRequiredSubscribeOnCurrentThread() || \n            source7.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.source5 = source5;\n        this.source6 = source6;\n        this.source7 = source7;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new CombineLatest(7, this, observer, cancel).Run();\n    }\n\n    class CombineLatest : NthCombineLatestObserverBase<TR>\n    {\n        readonly CombineLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent;\n        readonly object gate = new object();\n        CombineLatestObserver<T1> c1;\n        CombineLatestObserver<T2> c2;\n        CombineLatestObserver<T3> c3;\n        CombineLatestObserver<T4> c4;\n        CombineLatestObserver<T5> c5;\n        CombineLatestObserver<T6> c6;\n        CombineLatestObserver<T7> c7;\n\n        public CombineLatest(int length, CombineLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new CombineLatestObserver<T1>(gate, this, 0);\n            c2 = new CombineLatestObserver<T2>(gate, this, 1);\n            c3 = new CombineLatestObserver<T3>(gate, this, 2);\n            c4 = new CombineLatestObserver<T4>(gate, this, 3);\n            c5 = new CombineLatestObserver<T5>(gate, this, 4);\n            c6 = new CombineLatestObserver<T6>(gate, this, 5);\n            c7 = new CombineLatestObserver<T7>(gate, this, 6);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n            var s4 = parent.source4.Subscribe(c4);\n            var s5 = parent.source5.Subscribe(c5);\n            var s6 = parent.source6.Subscribe(c6);\n            var s7 = parent.source7.Subscribe(c7);\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6, s7);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Tests/UniRx.Console/Program.cs",
    "content": "﻿#pragma warning disable CS0162\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing UniRx.Async;\n\nnamespace UniRx\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            // my path:)\n            //var path = @\"C:\\Users\\neuecc\\Documents\\Git\\neuecc\\UniRx\\Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\";\n            //var outpath = @\"\";\n            //TriggerFileGenerator.GenerateAsyncTrigger(path, outpath);\n\n            //            Console.WriteLine(\"-- -\");\n            //          Console.WriteLine(code);\n            //        Console.WriteLine(\"---\");\n\n            Run().Forget();\n            Console.ReadLine();\n        }\n\n        static async UniTask Run()\n        {\n            var cts = new CancellationTokenSource();\n            var rp = new ReactiveProperty<int>();\n            var _ = Task.Delay(TimeSpan.FromSeconds(5)).ContinueWith(x => rp.Value = 9999);\n            var v = await rp.WaitUntilValueChangedAsync(cts.Token);\n            Console.WriteLine(v);\n        }\n    }\n}\n\n#pragma warning restore CS0162"
  },
  {
    "path": "Tests/UniRx.Console/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。\n// アセンブリに関連付けられている情報を変更するには、\n// これらの属性値を変更してください。\n[assembly: AssemblyTitle(\"UniRx.Console\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UniRx.Console\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから \n// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、\n// その型の ComVisible 属性を true に設定してください。\n[assembly: ComVisible(false)]\n\n// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です\n[assembly: Guid(\"b661e150-c548-42ee-8925-2f732c5ade53\")]\n\n// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を \n// 既定値にすることができます:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Tests/UniRx.Console/TriggerExtensionGenerator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing Microsoft.CodeAnalysis.CSharp;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.CodeAnalysis.CSharp.Syntax;\n\nnamespace UniRx\n{\n    public static class TriggerExtensionGenerator\n    {\n        /*\n                Generate liket following text...\n\n                /// <summary>Get for OnAnimatorIKAsync | OnAnimatorMoveAsync.</summary>\n                public static AsyncAnimatorTrigger GetAsyncAnimatorTrigger(this GameObject gameObject)\n                {\n                    return GetOrAddComponent<AsyncAnimatorTrigger>(gameObject);\n                }\n\n                /// <summary>Get for OnAnimatorIKAsync | OnAnimatorMoveAsync.</summary>\n                public static AsyncAnimatorTrigger GetAsyncAnimatorTrigger(this Component component)\n                {\n                    return component.gameObject.GetAsyncAnimatorTrigger();\n                }\n\n        */\n        class TypeInfo\n        {\n            public string TypeName { get; set; }\n            public string[] Methods { get; set; }\n\n            public override string ToString()\n            {\n                return TypeName + \", \" + string.Join(\" | \", Methods);\n            }\n        }\n\n        public static string GenerateAsyncTriggerExtension(string rootDir)\n        {\n            var typeInfos = new List<TypeInfo>();\n\n            // parse code\n\n            foreach (var item in Directory.EnumerateFiles(rootDir))\n            {\n                if (Path.GetFileNameWithoutExtension(item).EndsWith(\"Trigger\"))\n                {\n                    var file = File.ReadAllText(item);\n\n                    var tree = CSharpSyntaxTree.ParseText(file, new CSharpParseOptions(preprocessorSymbols: new[]\n                    {\n                        \"CSHARP_7_OR_LATER\"\n                    }));\n\n                    var type = tree.GetCompilationUnitRoot().DescendantNodes().OfType<ClassDeclarationSyntax>().First();\n\n                    var methods = type.DescendantNodes()\n                        .OfType<MethodDeclarationSyntax>()\n                        .Where(x => x.Modifiers.Any(y => y.Value.ToString() == \"public\"))\n                        .Select(x => x.Identifier.Text)\n                        .ToArray();\n\n                    typeInfos.Add(new TypeInfo { TypeName = type.Identifier.Text, Methods = methods });\n                }\n            }\n\n            // generate text\n\n            var sb = new StringBuilder();\n            foreach (var item in typeInfos)\n            {\n                if (item.TypeName == \"AsyncStateMachineTrigger\") continue;\n\n                var methodText = string.Join(\" | \", item.Methods);\n\n                var template = $@\"\n/// <summary>Get for {methodText}.</summary>\npublic static {item.TypeName} Get{item.TypeName}(this GameObject gameObject)\n{{\n    return GetOrAddComponent<{item.TypeName}>(gameObject);\n}}\n\n/// <summary>Get for {methodText}.</summary>\npublic static {item.TypeName} Get{item.TypeName}(this Component component)\n{{\n    return component.gameObject.Get{item.TypeName}();\n}}\";\n\n                if (item.TypeName == \"AsyncMouseTrigger\")\n                {\n                    sb.AppendLine();\n                    sb.AppendLine(\"#if !(UNITY_IPHONE || UNITY_ANDROID || UNITY_METRO)\");\n                }\n\n                sb.AppendLine(template);\n\n                if (item.TypeName == \"AsyncMouseTrigger\")\n                {\n                    sb.AppendLine();\n                    sb.AppendLine(\"#endif\");\n                }\n            }\n\n            return sb.ToString();\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Console/TriggerFileGenerator.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing Microsoft.CodeAnalysis.CSharp;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.CodeAnalysis.CSharp.Syntax;\n\nnamespace UniRx\n{\n    public static class TriggerFileGenerator\n    {\n        /*\n                Generate liket following text...\n\n#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System.Collections.Generic;\nusing System.Threading;\nusing UnityEngine;\n\nnamespace UniRx.Async.Triggers\n{\n    [DisallowMultipleComponent]\n    public class AsyncAnimatorTrigger : AsyncTriggerBase\n    {\n        AsyncTriggerPromise<int> onAnimatorIK;\n        AsyncTriggerPromiseDictionary<int> onAnimatorIKs;\n        AsyncTriggerPromise<AsyncUnit> onAnimatorMove;\n        AsyncTriggerPromiseDictionary<AsyncUnit> onAnimatorMoves;\n\n        protected override IEnumerable<ICancelablePromise> GetPromises()\n        {\n            return Concat(onAnimatorIK, onAnimatorIKs, onAnimatorMove, onAnimatorMoves);\n        }\n\n        /// <summary>Callback for setting up animation IK (inverse kinematics).</summary>\n        void OnAnimatorIK(int layerIndex)\n        {\n            TrySetResult(onAnimatorIK, onAnimatorIKs, layerIndex);\n        }\n\n        /// <summary>Callback for setting up animation IK (inverse kinematics).</summary>\n        public UniTask<int> OnAnimatorIKAsync(CancellationToken cancellationToken = default(CancellationToken))\n        {\n            return GetOrAddPromise(ref onAnimatorIK, ref onAnimatorIKs, cancellationToken);\n        }\n\n        /// <summary>Callback for processing animation movements for modifying root motion.</summary>\n        void OnAnimatorMove()\n        {\n            TrySetResult(onAnimatorMove, onAnimatorMoves, AsyncUnit.Default);\n        }\n\n        /// <summary>Callback for processing animation movements for modifying root motion.</summary>\n        public UniTask OnAnimatorMoveAsync(CancellationToken cancellationToken = default(CancellationToken))\n        {\n            return GetOrAddPromise(ref onAnimatorMove, ref onAnimatorMoves, cancellationToken);\n        }\n    }\n}\n\n#endif\n\n        */\n        class TypeInfo\n        {\n            public string TypeName { get; set; }\n            public MethodInfo[] Methods { get; set; }\n\n            public override string ToString()\n            {\n                return TypeName + \", \" + string.Join(\" | \", Methods.Select(x => x.ToString()));\n            }\n        }\n\n        class MethodInfo\n        {\n            public string MethodName { get; set; }\n            public ParameterListSyntax Args { get; set; }\n            public bool IsPublic { get; set; }\n\n            public override string ToString()\n            {\n                return (IsPublic ? \"public \" : \"\") + MethodName + Args;\n            }\n        }\n\n        static string ToCamelCase(string s)\n        {\n            return Char.ToLower(s[0]) + s.Substring(1, s.Length - 1);\n        }\n\n        public static void GenerateAsyncTrigger(string rootDir, string outputDir)\n        {\n            var typeInfos = new List<TypeInfo>();\n\n            // parse code\n\n            foreach (var item in Directory.EnumerateFiles(rootDir))\n            {\n                if (Path.GetFileNameWithoutExtension(item).EndsWith(\"Trigger\"))\n                {\n                    var file = File.ReadAllText(item);\n\n                    var tree = CSharpSyntaxTree.ParseText(file, new CSharpParseOptions(preprocessorSymbols: new[]\n                    {\n                        \"CSHARP_7_OR_LATER\"\n                    }));\n\n                    var type = tree.GetCompilationUnitRoot().DescendantNodes().OfType<ClassDeclarationSyntax>().First();\n\n                    var methods = type.DescendantNodes()\n                        .OfType<MethodDeclarationSyntax>()\n                        .Select(x => new MethodInfo\n                        {\n                            MethodName = x.Identifier.Text,\n                            Args = x.ParameterList,\n                            IsPublic = x.Modifiers.Any(y => y.Value.ToString() == \"public\")\n                        })\n                        .Where(x => x.MethodName != \"RaiseOnCompletedOnDestroy\")\n                        .ToArray();\n\n                    typeInfos.Add(new TypeInfo { TypeName = type.Identifier.Text, Methods = methods });\n                }\n            }\n\n            // generate text\n\n            var sb = new StringBuilder();\n            foreach (var item in typeInfos)\n            {\n                // if (item.TypeName == \"AsyncStateMachineTrigger\") continue;\n\n                var methodText = string.Join(\" | \", item.Methods.Select(x => x.ToString()));\n\n                List<(string returnType, string fieldName)> fieldList = new List<(string returnType, string fieldName)>();\n                foreach (var method in item.Methods.Where(x => !x.IsPublic))\n                {\n                    var argsList = method.Args.Parameters.Select(x => x.Type.ToString()).ToArray();\n                    var returnTypeName = (argsList.Length == 0) ? \"AsyncUnit\"\n                                       : (argsList.Length == 1) ? argsList[0]\n                                       : \"(\" + string.Join(\", \", argsList) + \")\";\n                    fieldList.Add((returnTypeName, ToCamelCase(method.MethodName)));\n                }\n\n                var promiseList = string.Join(\", \", fieldList.SelectMany(x => new[] { x.fieldName, x.fieldName + \"s\" }));\n                var fieldTemplate = new StringBuilder();\n                foreach (var field in fieldList)\n                {\n                    fieldTemplate.AppendLine($\"        AsyncTriggerPromise<{field.returnType}> {field.fieldName};\");\n                    fieldTemplate.AppendLine($\"        AsyncTriggerPromiseDictionary<{field.returnType}> {field.fieldName}s;\");\n                }\n\n                var methodTemplate = new StringBuilder();\n                foreach (var method in item.Methods)\n                {\n                    if (!method.IsPublic)\n                    {\n                        var argsList = method.Args.Parameters.Select(x => x.Identifier.ToString()).ToArray();\n                        var parameterName = (argsList.Length == 0) ? \"AsyncUnit.Default\"\n                                           : (argsList.Length == 1) ? argsList[0]\n                                           : \"(\" + string.Join(\", \", argsList) + \")\";\n\n                        var m = ToCamelCase(method.MethodName);\n\n                        methodTemplate.AppendLine($@\"\n        void {method.MethodName}{method.Args}\n        {{\n            TrySetResult({m}, {m}s, {parameterName});\n        }}\n\");\n                    }\n                    else\n                    {\n                        var m = ToCamelCase(method.MethodName.Replace(\"AsObservable\", \"\"));\n\n                        methodTemplate.AppendLine($@\"\n        public UniTask {method.MethodName.Replace(\"AsObservable\", \"Async\")}(CancellationToken cancellationToken = default(CancellationToken))\n        {{\n            return GetOrAddPromise(ref {m}, ref {m}s, cancellationToken);\n        }}\n\");\n                    }\n                }\n\n                var template = $@\"\n#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System.Collections.Generic;\nusing System.Threading;\nusing UnityEngine;\nusing UnityEngine.EventSystems;\n\nnamespace UniRx.Async.Triggers\n{{\n    [DisallowMultipleComponent]\n    public class {item.TypeName.Replace(\"Observable\", \"Async\")} : AsyncTriggerBase\n    {{\n{fieldTemplate}\n\n        protected override IEnumerable<ICancelablePromise> GetPromises()\n        {{\n            return Concat({promiseList});\n        }}\n\n{methodTemplate}\n    }}\n}}\n\n#endif\n\";\n\n                if (item.TypeName == \"ObservableMouseTrigger\")\n                {\n                    sb.AppendLine();\n                    sb.AppendLine(\"#if !(UNITY_IPHONE || UNITY_ANDROID || UNITY_METRO)\");\n                }\n\n                sb.AppendLine(template);\n\n                if (item.TypeName == \"ObservableMouseTrigger\")\n                {\n                    sb.AppendLine();\n                    sb.AppendLine(\"#endif\");\n                }\n\n                // gen\n\n                var fileName = item.TypeName.Replace(\"Observable\", \"Async\");\n                if (fileName == \"AsyncDestroyTrigger\"\n                 || fileName == \"AsyncStateMachineTrigger\")\n                {\n                    sb.Clear();\n                    continue;\n                }\n\n                var outputPath = Path.Combine(outputDir, fileName + \".cs\");\n                var code = sb.ToString();\n\n                File.WriteAllText(outputPath, code);\n                sb.Clear();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Console/UniRx.Console.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{EFD2ABC3-ED2B-4DC5-8253-F097F5A73D3F}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UniRx.Console</RootNamespace>\n    <AssemblyName>UniRx.Console</AssemblyName>\n    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <Prefer32Bit>false</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <Prefer32Bit>false</Prefer32Bit>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.CodeAnalysis, Version=2.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.CodeAnalysis.Common.2.8.2\\lib\\netstandard1.3\\Microsoft.CodeAnalysis.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.CodeAnalysis.CSharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.CodeAnalysis.CSharp.2.8.2\\lib\\netstandard1.3\\Microsoft.CodeAnalysis.CSharp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.AppContext.4.3.0\\lib\\net463\\System.AppContext.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Collections.Immutable, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Collections.Immutable.1.3.1\\lib\\portable-net45+win8+wp8+wpa81\\System.Collections.Immutable.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Composition\" />\n    <Reference Include=\"System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Console.4.3.0\\lib\\net46\\System.Console.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Diagnostics.FileVersionInfo, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Diagnostics.FileVersionInfo.4.3.0\\lib\\net46\\System.Diagnostics.FileVersionInfo.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.StackTrace, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Diagnostics.StackTrace.4.3.0\\lib\\net46\\System.Diagnostics.StackTrace.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.IO.4.3.0\\lib\\net462\\System.IO.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.IO.Compression.4.3.0\\lib\\net46\\System.IO.Compression.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.IO.FileSystem.4.3.0\\lib\\net46\\System.IO.FileSystem.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.IO.FileSystem.Primitives.4.3.0\\lib\\net46\\System.IO.FileSystem.Primitives.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Linq.4.3.0\\lib\\net463\\System.Linq.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Linq.Expressions.4.3.0\\lib\\net463\\System.Linq.Expressions.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Numerics\" />\n    <Reference Include=\"System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Reflection.4.3.0\\lib\\net462\\System.Reflection.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Reflection.Metadata, Version=1.4.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Reflection.Metadata.1.4.2\\lib\\portable-net45+win8\\System.Reflection.Metadata.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Runtime.4.3.0\\lib\\net462\\System.Runtime.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Runtime.Extensions.4.3.0\\lib\\net462\\System.Runtime.Extensions.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Runtime.InteropServices.4.3.0\\lib\\net463\\System.Runtime.InteropServices.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Security.Cryptography.Algorithms.4.3.0\\lib\\net463\\System.Security.Cryptography.Algorithms.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Security.Cryptography.Encoding.4.3.0\\lib\\net46\\System.Security.Cryptography.Encoding.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Security.Cryptography.Primitives.4.3.0\\lib\\net46\\System.Security.Cryptography.Primitives.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Security.Cryptography.X509Certificates.4.3.0\\lib\\net461\\System.Security.Cryptography.X509Certificates.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding.CodePages, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Text.Encoding.CodePages.4.3.0\\lib\\net46\\System.Text.Encoding.CodePages.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Thread, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Threading.Thread.4.3.0\\lib\\net46\\System.Threading.Thread.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.ValueTuple.4.3.0\\lib\\netstandard1.0\\System.ValueTuple.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Xml.ReaderWriter.4.3.0\\lib\\net46\\System.Xml.ReaderWriter.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlDocument, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Xml.XmlDocument.4.3.0\\lib\\net46\\System.Xml.XmlDocument.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Xml.XPath.4.3.0\\lib\\net46\\System.Xml.XPath.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath.XDocument, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Xml.XPath.XDocument.4.3.0\\lib\\net46\\System.Xml.XPath.XDocument.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Program.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"TriggerFileGenerator.cs\" />\n    <Compile Include=\"TriggerExtensionGenerator.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\Dlls\\UniRx.Library\\UniRx.Library.csproj\">\n      <Project>{21c57e17-d4b8-4da4-a6a2-07d8b2e5b3bd}</Project>\n      <Name>UniRx.Library</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"UniTask.WhenAll.Generated.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <LastGenOutput>UniTask.WhenAll.Generated.txt</LastGenOutput>\n    </Content>\n    <Content Include=\"UniTask.WhenAll.Generated.txt\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>UniTask.WhenAll.Generated.tt</DependentUpon>\n    </Content>\n    <Content Include=\"UniTask.WhenAny.Generated.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <LastGenOutput>UniTask.WhenAny.Generated.txt</LastGenOutput>\n    </Content>\n    <Content Include=\"UniTask.WhenAny.Generated.txt\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>UniTask.WhenAny.Generated.tt</DependentUpon>\n    </Content>\n    <Content Include=\"ZipLatestGenerator.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <LastGenOutput>ZipLatestGenerator.txt</LastGenOutput>\n    </Content>\n    <Content Include=\"ZipLatestGenerator.txt\">\n      <DependentUpon>ZipLatestGenerator.tt</DependentUpon>\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n    </Content>\n    <Content Include=\"CombineLatestGenerator.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <LastGenOutput>CombineLatestGenerator.txt</LastGenOutput>\n    </Content>\n    <Content Include=\"CombineLatestGenerator.txt\">\n      <DependentUpon>CombineLatestGenerator.tt</DependentUpon>\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n    </Content>\n    <Content Include=\"ZipGenerator.tt\">\n      <Generator>TextTemplatingFileGenerator</Generator>\n      <LastGenOutput>ZipGenerator.txt</LastGenOutput>\n    </Content>\n    <Content Include=\"ZipGenerator.txt\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>ZipGenerator.tt</DependentUpon>\n    </Content>\n  </ItemGroup>\n  <ItemGroup>\n    <Service Include=\"{508349B6-6B84-4DF5-91F0-309BEEBAD82D}\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Analyzer Include=\"..\\..\\packages\\Microsoft.CodeAnalysis.Analyzers.1.1.0\\analyzers\\dotnet\\cs\\Microsoft.CodeAnalysis.Analyzers.dll\" />\n    <Analyzer Include=\"..\\..\\packages\\Microsoft.CodeAnalysis.Analyzers.1.1.0\\analyzers\\dotnet\\cs\\Microsoft.CodeAnalysis.CSharp.Analyzers.dll\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Tests/UniRx.Console/UniTask.WhenAll.Generated.tt",
    "content": "﻿<#@ template debug=\"false\" hostspecific=\"false\" language=\"C#\" #>\n<#@ assembly name=\"System.Core\" #>\n<#@ import namespace=\"System.Linq\" #>\n<#@ import namespace=\"System.Text\" #>\n<#@ import namespace=\"System.Collections.Generic\" #>\n<#@ output extension=\".txt\" #>\n<#\n    int MaxCount = 7;\n    Func<int, string> BuildGenerics = x => \"<\" + string.Join(\", \", Enumerable.Range(1, x).Select(y => $\"T{y}\")) + \">\";\n    Func<int, string> BuildArgument = x => string.Join(\", \", Enumerable.Range(1, x).Select(y => $\"UniTask<T{y}> task{y}\"));\n    Func<int, string> BuildTuple = x => \"(\" + string.Join(\", \", Enumerable.Range(1, x).Select(y => $\"T{y} result{y}\")) + \")\";\n    Func<int, string> BuildMethodParam = x => string.Join(\", \", Enumerable.Range(1, x).Select(y => $\"task{y}\"));\n    Func<int, string> BuildTupleType = x => \"(\" + string.Join(\", \", Enumerable.Range(1, x).Select(y => $\"T{y}\")) + \")\";\n    Func<int, string> BuildTupleResult = x => \"(\" + string.Join(\", \", Enumerable.Range(1, x).Select(y => $\"parent.result{y}\")) + \")\";\n#>\n#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.ExceptionServices;\nusing System.Threading;\n\nnamespace UniRx.Async\n{\n    public partial struct UniTask\n    {\n<# for(var i = 2; i <= MaxCount; i++) { #>\n        public static async UniTask<<#= BuildTuple(i) #>> WhenAll<#= BuildGenerics(i) #>(<#= BuildArgument(i) #>)\n        {\n            return await new WhenAllPromise<#= BuildGenerics(i) #>(<#= BuildMethodParam(i) #>);\n        }\n\n<# } #>\n<# for(var i = 2; i <= MaxCount; i++) { #>\n        class WhenAllPromise<#= BuildGenerics(i) #>\n        {\n            const int MaxCount = <#= i #>;\n\n<# for(var j = 1; j <= i; j++) { #>\n            T<#= j #> result<#= j #>;\n<# } #>\n            ExceptionDispatchInfo exception;\n            int completeCount;\n            Action whenComplete;\n\n            public WhenAllPromise(<#= BuildArgument(i) #>)\n            {\n                this.completeCount = 0;\n                this.whenComplete = null;\n<# for(var j = 1; j <= i; j++) { #>\n                this.result<#= j #> = default(T<#= j #>);\n<# } #>\n                this.exception = null;\n\n<# for(var j = 1; j <= i; j++) { #>\n                RunTask<#= j #>(task<#= j #>);\n<# } #>\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n<# for(var j = 1; j <= i; j++) { #>\n            void RunTask<#= j #>(UniTask<T<#= j #>> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result<#= j #> = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask<#= j #>Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask<#= j #>Async(UniTask<T<#= j #>> task)\n            {\n                try\n                {\n                    result<#= j #> = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n<# } #>\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAllPromise<#= BuildGenerics(i) #> parent;\n\n                public Awaiter(WhenAllPromise<#= BuildGenerics(i) #> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.exception != null || parent.completeCount == MaxCount;\n                    }\n                }\n\n                public <#= BuildTupleType(i) #> GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    return <#= BuildTupleResult(i) #>;\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n<# } #>\n    }\n}\n#endif"
  },
  {
    "path": "Tests/UniRx.Console/UniTask.WhenAll.Generated.txt",
    "content": "﻿#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.ExceptionServices;\nusing System.Threading;\n\nnamespace UniRx.Async\n{\n    public partial struct UniTask\n    {\n        public static async UniTask<(T1 result1, T2 result2)> WhenAll<T1, T2>(UniTask<T1> task1, UniTask<T2> task2)\n        {\n            return await new WhenAllPromise<T1, T2>(task1, task2);\n        }\n\n        public static async UniTask<(T1 result1, T2 result2, T3 result3)> WhenAll<T1, T2, T3>(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3)\n        {\n            return await new WhenAllPromise<T1, T2, T3>(task1, task2, task3);\n        }\n\n        public static async UniTask<(T1 result1, T2 result2, T3 result3, T4 result4)> WhenAll<T1, T2, T3, T4>(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4)\n        {\n            return await new WhenAllPromise<T1, T2, T3, T4>(task1, task2, task3, task4);\n        }\n\n        public static async UniTask<(T1 result1, T2 result2, T3 result3, T4 result4, T5 result5)> WhenAll<T1, T2, T3, T4, T5>(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5)\n        {\n            return await new WhenAllPromise<T1, T2, T3, T4, T5>(task1, task2, task3, task4, task5);\n        }\n\n        public static async UniTask<(T1 result1, T2 result2, T3 result3, T4 result4, T5 result5, T6 result6)> WhenAll<T1, T2, T3, T4, T5, T6>(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5, UniTask<T6> task6)\n        {\n            return await new WhenAllPromise<T1, T2, T3, T4, T5, T6>(task1, task2, task3, task4, task5, task6);\n        }\n\n        public static async UniTask<(T1 result1, T2 result2, T3 result3, T4 result4, T5 result5, T6 result6, T7 result7)> WhenAll<T1, T2, T3, T4, T5, T6, T7>(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5, UniTask<T6> task6, UniTask<T7> task7)\n        {\n            return await new WhenAllPromise<T1, T2, T3, T4, T5, T6, T7>(task1, task2, task3, task4, task5, task6, task7);\n        }\n\n        class WhenAllPromise<T1, T2>\n        {\n            const int MaxCount = 2;\n\n            T1 result1;\n            T2 result2;\n            ExceptionDispatchInfo exception;\n            int completeCount;\n            Action whenComplete;\n\n            public WhenAllPromise(UniTask<T1> task1, UniTask<T2> task2)\n            {\n                this.completeCount = 0;\n                this.whenComplete = null;\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.exception = null;\n\n                RunTask1(task1);\n                RunTask2(task2);\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            void RunTask1(UniTask<T1> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result1 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask1Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask1Async(UniTask<T1> task)\n            {\n                try\n                {\n                    result1 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask2(UniTask<T2> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result2 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask2Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask2Async(UniTask<T2> task)\n            {\n                try\n                {\n                    result2 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAllPromise<T1, T2> parent;\n\n                public Awaiter(WhenAllPromise<T1, T2> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.exception != null || parent.completeCount == MaxCount;\n                    }\n                }\n\n                public (T1, T2) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    return (parent.result1, parent.result2);\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAllPromise<T1, T2, T3>\n        {\n            const int MaxCount = 3;\n\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            ExceptionDispatchInfo exception;\n            int completeCount;\n            Action whenComplete;\n\n            public WhenAllPromise(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3)\n            {\n                this.completeCount = 0;\n                this.whenComplete = null;\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n                this.exception = null;\n\n                RunTask1(task1);\n                RunTask2(task2);\n                RunTask3(task3);\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            void RunTask1(UniTask<T1> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result1 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask1Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask1Async(UniTask<T1> task)\n            {\n                try\n                {\n                    result1 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask2(UniTask<T2> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result2 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask2Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask2Async(UniTask<T2> task)\n            {\n                try\n                {\n                    result2 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask3(UniTask<T3> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result3 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask3Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask3Async(UniTask<T3> task)\n            {\n                try\n                {\n                    result3 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAllPromise<T1, T2, T3> parent;\n\n                public Awaiter(WhenAllPromise<T1, T2, T3> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.exception != null || parent.completeCount == MaxCount;\n                    }\n                }\n\n                public (T1, T2, T3) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    return (parent.result1, parent.result2, parent.result3);\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAllPromise<T1, T2, T3, T4>\n        {\n            const int MaxCount = 4;\n\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            T4 result4;\n            ExceptionDispatchInfo exception;\n            int completeCount;\n            Action whenComplete;\n\n            public WhenAllPromise(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4)\n            {\n                this.completeCount = 0;\n                this.whenComplete = null;\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n                this.result4 = default(T4);\n                this.exception = null;\n\n                RunTask1(task1);\n                RunTask2(task2);\n                RunTask3(task3);\n                RunTask4(task4);\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            void RunTask1(UniTask<T1> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result1 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask1Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask1Async(UniTask<T1> task)\n            {\n                try\n                {\n                    result1 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask2(UniTask<T2> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result2 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask2Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask2Async(UniTask<T2> task)\n            {\n                try\n                {\n                    result2 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask3(UniTask<T3> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result3 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask3Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask3Async(UniTask<T3> task)\n            {\n                try\n                {\n                    result3 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask4(UniTask<T4> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result4 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask4Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask4Async(UniTask<T4> task)\n            {\n                try\n                {\n                    result4 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAllPromise<T1, T2, T3, T4> parent;\n\n                public Awaiter(WhenAllPromise<T1, T2, T3, T4> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.exception != null || parent.completeCount == MaxCount;\n                    }\n                }\n\n                public (T1, T2, T3, T4) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    return (parent.result1, parent.result2, parent.result3, parent.result4);\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAllPromise<T1, T2, T3, T4, T5>\n        {\n            const int MaxCount = 5;\n\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            T4 result4;\n            T5 result5;\n            ExceptionDispatchInfo exception;\n            int completeCount;\n            Action whenComplete;\n\n            public WhenAllPromise(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5)\n            {\n                this.completeCount = 0;\n                this.whenComplete = null;\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n                this.result4 = default(T4);\n                this.result5 = default(T5);\n                this.exception = null;\n\n                RunTask1(task1);\n                RunTask2(task2);\n                RunTask3(task3);\n                RunTask4(task4);\n                RunTask5(task5);\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            void RunTask1(UniTask<T1> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result1 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask1Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask1Async(UniTask<T1> task)\n            {\n                try\n                {\n                    result1 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask2(UniTask<T2> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result2 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask2Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask2Async(UniTask<T2> task)\n            {\n                try\n                {\n                    result2 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask3(UniTask<T3> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result3 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask3Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask3Async(UniTask<T3> task)\n            {\n                try\n                {\n                    result3 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask4(UniTask<T4> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result4 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask4Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask4Async(UniTask<T4> task)\n            {\n                try\n                {\n                    result4 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask5(UniTask<T5> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result5 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask5Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask5Async(UniTask<T5> task)\n            {\n                try\n                {\n                    result5 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAllPromise<T1, T2, T3, T4, T5> parent;\n\n                public Awaiter(WhenAllPromise<T1, T2, T3, T4, T5> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.exception != null || parent.completeCount == MaxCount;\n                    }\n                }\n\n                public (T1, T2, T3, T4, T5) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    return (parent.result1, parent.result2, parent.result3, parent.result4, parent.result5);\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAllPromise<T1, T2, T3, T4, T5, T6>\n        {\n            const int MaxCount = 6;\n\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            T4 result4;\n            T5 result5;\n            T6 result6;\n            ExceptionDispatchInfo exception;\n            int completeCount;\n            Action whenComplete;\n\n            public WhenAllPromise(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5, UniTask<T6> task6)\n            {\n                this.completeCount = 0;\n                this.whenComplete = null;\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n                this.result4 = default(T4);\n                this.result5 = default(T5);\n                this.result6 = default(T6);\n                this.exception = null;\n\n                RunTask1(task1);\n                RunTask2(task2);\n                RunTask3(task3);\n                RunTask4(task4);\n                RunTask5(task5);\n                RunTask6(task6);\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            void RunTask1(UniTask<T1> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result1 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask1Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask1Async(UniTask<T1> task)\n            {\n                try\n                {\n                    result1 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask2(UniTask<T2> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result2 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask2Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask2Async(UniTask<T2> task)\n            {\n                try\n                {\n                    result2 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask3(UniTask<T3> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result3 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask3Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask3Async(UniTask<T3> task)\n            {\n                try\n                {\n                    result3 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask4(UniTask<T4> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result4 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask4Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask4Async(UniTask<T4> task)\n            {\n                try\n                {\n                    result4 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask5(UniTask<T5> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result5 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask5Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask5Async(UniTask<T5> task)\n            {\n                try\n                {\n                    result5 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask6(UniTask<T6> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result6 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask6Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask6Async(UniTask<T6> task)\n            {\n                try\n                {\n                    result6 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAllPromise<T1, T2, T3, T4, T5, T6> parent;\n\n                public Awaiter(WhenAllPromise<T1, T2, T3, T4, T5, T6> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.exception != null || parent.completeCount == MaxCount;\n                    }\n                }\n\n                public (T1, T2, T3, T4, T5, T6) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    return (parent.result1, parent.result2, parent.result3, parent.result4, parent.result5, parent.result6);\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAllPromise<T1, T2, T3, T4, T5, T6, T7>\n        {\n            const int MaxCount = 7;\n\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            T4 result4;\n            T5 result5;\n            T6 result6;\n            T7 result7;\n            ExceptionDispatchInfo exception;\n            int completeCount;\n            Action whenComplete;\n\n            public WhenAllPromise(UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5, UniTask<T6> task6, UniTask<T7> task7)\n            {\n                this.completeCount = 0;\n                this.whenComplete = null;\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n                this.result4 = default(T4);\n                this.result5 = default(T5);\n                this.result6 = default(T6);\n                this.result7 = default(T7);\n                this.exception = null;\n\n                RunTask1(task1);\n                RunTask2(task2);\n                RunTask3(task3);\n                RunTask4(task4);\n                RunTask5(task5);\n                RunTask6(task6);\n                RunTask7(task7);\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            void RunTask1(UniTask<T1> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result1 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask1Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask1Async(UniTask<T1> task)\n            {\n                try\n                {\n                    result1 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask2(UniTask<T2> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result2 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask2Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask2Async(UniTask<T2> task)\n            {\n                try\n                {\n                    result2 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask3(UniTask<T3> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result3 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask3Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask3Async(UniTask<T3> task)\n            {\n                try\n                {\n                    result3 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask4(UniTask<T4> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result4 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask4Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask4Async(UniTask<T4> task)\n            {\n                try\n                {\n                    result4 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask5(UniTask<T5> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result5 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask5Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask5Async(UniTask<T5> task)\n            {\n                try\n                {\n                    result5 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask6(UniTask<T6> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result6 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask6Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask6Async(UniTask<T6> task)\n            {\n                try\n                {\n                    result6 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n            void RunTask7(UniTask<T7> task)\n            {\n                if (task.IsCompleted)\n                {\n                    try\n                    {\n                        result7 = task.Result;\n                    }\n                    catch (Exception ex)\n                    {\n                        exception = ExceptionDispatchInfo.Capture(ex);\n                        TryCallContinuation();\n                        return;\n                    }\n\n                    var count = Interlocked.Increment(ref completeCount);\n                    if (count == MaxCount)\n                    {\n                        TryCallContinuation();\n                    }\n                }\n                else\n                {\n                    RunTask7Async(task).Forget();\n                }\n            }\n\n            async UniTaskVoid RunTask7Async(UniTask<T7> task)\n            {\n                try\n                {\n                    result7 = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == MaxCount)\n                {\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAllPromise<T1, T2, T3, T4, T5, T6, T7> parent;\n\n                public Awaiter(WhenAllPromise<T1, T2, T3, T4, T5, T6, T7> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.exception != null || parent.completeCount == MaxCount;\n                    }\n                }\n\n                public (T1, T2, T3, T4, T5, T6, T7) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    return (parent.result1, parent.result2, parent.result3, parent.result4, parent.result5, parent.result6, parent.result7);\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n    }\n}\n#endif"
  },
  {
    "path": "Tests/UniRx.Console/UniTask.WhenAny.Generated.tt",
    "content": "﻿<#@ template debug=\"false\" hostspecific=\"false\" language=\"C#\" #>\n<#@ assembly name=\"System.Core\" #>\n<#@ import namespace=\"System.Linq\" #>\n<#@ import namespace=\"System.Text\" #>\n<#@ import namespace=\"System.Collections.Generic\" #>\n<#@ output extension=\".txt\" #>\n<#\n    int MaxCount = 7;\n    Func<int, string> BuildGenerics = x => \"<\" + string.Join(\", \", Enumerable.Range(0, x + 1).Select(y => $\"T{y}\")) + \">\";\n    Func<int, string> BuildArgument = x => string.Join(\", \", Enumerable.Range(0, x + 1).Select(y => $\"UniTask<T{y}> task{y}\"));\n    Func<int, string> BuildTuple = x => \"(int winArgumentIndex, \" + string.Join(\", \", Enumerable.Range(0, x + 1).Select(y => $\"(bool hasResult, T{y} result{y})\")) + \")\";\n    Func<int, string> BuildMethodParam = x => string.Join(\", \", Enumerable.Range(0, x + 1).Select(y => $\"task{y}\"));\n    Func<int, string> BuildTupleType = x => \"(int, \" + string.Join(\", \", Enumerable.Range(0, x + 1).Select(y => $\"(bool, T{y})\")) + \")\";\n    Func<int, string> BuildTupleResult = x => \"(i, \" + string.Join(\", \", Enumerable.Range(0, x + 1).Select(y => $\"(i == {y}, parent.result{y})\")) + \")\";\n#>\n#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.ExceptionServices;\nusing System.Threading;\n\nnamespace UniRx.Async\n{\n    public partial struct UniTask\n    {\n<# for(var i = 1; i <= MaxCount; i++) { #>\n        public static async UniTask<<#= BuildTuple(i) #>> WhenAny<#= BuildGenerics(i) #>(<#= BuildArgument(i) #>)\n        {\n            return await new WhenAnyPromise<#= BuildGenerics(i) #>(<#= BuildMethodParam(i) #>);\n        }\n\n<# } #>\n<# for(var i = 1; i <= MaxCount; i++) { #>\n        class WhenAnyPromise<#= BuildGenerics(i) #>\n        {\n<# for(var j = 0; j <= i; j++) { #>\n            T<#= j #> result<#= j #>;\n<# } #>\n            ExceptionDispatchInfo exception;\n            Action whenComplete;\n            int completeCount;\n            int winArgumentIndex;\n\n            bool IsCompleted => exception != null || Volatile.Read(ref winArgumentIndex) != -1;\n\n            public WhenAnyPromise(<#= BuildArgument(i) #>)\n            {\n                this.whenComplete = null;\n                this.exception = null;\n                this.completeCount = 0;\n                this.winArgumentIndex = -1;\n<# for(var j = 0; j <= i; j++) { #>\n                this.result<#= j #> = default(T<#= j #>);\n<# } #>\n\n<# for(var j = 0; j <= i; j++) { #>\n                RunTask<#= j #>(task<#= j #>).Forget();\n<# } #>\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n<# for(var j = 0; j <= i; j++) { #>\n            async UniTaskVoid RunTask<#= j #>(UniTask<T<#= j #>> task)\n            {\n                T<#= j #> value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result<#= j #> = value;\n                    Volatile.Write(ref winArgumentIndex, <#= j #>);\n                    TryCallContinuation();\n                }\n            }\n\n<# } #>\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAnyPromise<#= BuildGenerics(i) #> parent;\n\n                public Awaiter(WhenAnyPromise<#= BuildGenerics(i) #> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.IsCompleted;\n                    }\n                }\n\n                public <#= BuildTupleType(i) #> GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    var i = parent.winArgumentIndex;\n                    return <#= BuildTupleResult(i) #>;\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n<# } #>\n    }\n}\n#endif"
  },
  {
    "path": "Tests/UniRx.Console/UniTask.WhenAny.Generated.txt",
    "content": "﻿#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))\n#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member\n\nusing System;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.ExceptionServices;\nusing System.Threading;\n\nnamespace UniRx.Async\n{\n    public partial struct UniTask\n    {\n        public static async UniTask<(int winArgumentIndex, (bool hasResult, T0 result0), (bool hasResult, T1 result1))> WhenAny<T0, T1>(UniTask<T0> task0, UniTask<T1> task1)\n        {\n            return await new WhenAnyPromise<T0, T1>(task0, task1);\n        }\n\n        public static async UniTask<(int winArgumentIndex, (bool hasResult, T0 result0), (bool hasResult, T1 result1), (bool hasResult, T2 result2))> WhenAny<T0, T1, T2>(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2)\n        {\n            return await new WhenAnyPromise<T0, T1, T2>(task0, task1, task2);\n        }\n\n        public static async UniTask<(int winArgumentIndex, (bool hasResult, T0 result0), (bool hasResult, T1 result1), (bool hasResult, T2 result2), (bool hasResult, T3 result3))> WhenAny<T0, T1, T2, T3>(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3)\n        {\n            return await new WhenAnyPromise<T0, T1, T2, T3>(task0, task1, task2, task3);\n        }\n\n        public static async UniTask<(int winArgumentIndex, (bool hasResult, T0 result0), (bool hasResult, T1 result1), (bool hasResult, T2 result2), (bool hasResult, T3 result3), (bool hasResult, T4 result4))> WhenAny<T0, T1, T2, T3, T4>(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4)\n        {\n            return await new WhenAnyPromise<T0, T1, T2, T3, T4>(task0, task1, task2, task3, task4);\n        }\n\n        public static async UniTask<(int winArgumentIndex, (bool hasResult, T0 result0), (bool hasResult, T1 result1), (bool hasResult, T2 result2), (bool hasResult, T3 result3), (bool hasResult, T4 result4), (bool hasResult, T5 result5))> WhenAny<T0, T1, T2, T3, T4, T5>(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5)\n        {\n            return await new WhenAnyPromise<T0, T1, T2, T3, T4, T5>(task0, task1, task2, task3, task4, task5);\n        }\n\n        public static async UniTask<(int winArgumentIndex, (bool hasResult, T0 result0), (bool hasResult, T1 result1), (bool hasResult, T2 result2), (bool hasResult, T3 result3), (bool hasResult, T4 result4), (bool hasResult, T5 result5), (bool hasResult, T6 result6))> WhenAny<T0, T1, T2, T3, T4, T5, T6>(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5, UniTask<T6> task6)\n        {\n            return await new WhenAnyPromise<T0, T1, T2, T3, T4, T5, T6>(task0, task1, task2, task3, task4, task5, task6);\n        }\n\n        public static async UniTask<(int winArgumentIndex, (bool hasResult, T0 result0), (bool hasResult, T1 result1), (bool hasResult, T2 result2), (bool hasResult, T3 result3), (bool hasResult, T4 result4), (bool hasResult, T5 result5), (bool hasResult, T6 result6), (bool hasResult, T7 result7))> WhenAny<T0, T1, T2, T3, T4, T5, T6, T7>(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5, UniTask<T6> task6, UniTask<T7> task7)\n        {\n            return await new WhenAnyPromise<T0, T1, T2, T3, T4, T5, T6, T7>(task0, task1, task2, task3, task4, task5, task6, task7);\n        }\n\n        class WhenAnyPromise<T0, T1>\n        {\n            T0 result0;\n            T1 result1;\n            ExceptionDispatchInfo exception;\n            Action whenComplete;\n            int completeCount;\n            int winArgumentIndex;\n\n            bool IsCompleted => exception != null || Volatile.Read(ref winArgumentIndex) != -1;\n\n            public WhenAnyPromise(UniTask<T0> task0, UniTask<T1> task1)\n            {\n                this.whenComplete = null;\n                this.exception = null;\n                this.completeCount = 0;\n                this.winArgumentIndex = -1;\n                this.result0 = default(T0);\n                this.result1 = default(T1);\n\n                RunTask0(task0).Forget();\n                RunTask1(task1).Forget();\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            async UniTaskVoid RunTask0(UniTask<T0> task)\n            {\n                T0 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result0 = value;\n                    Volatile.Write(ref winArgumentIndex, 0);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask1(UniTask<T1> task)\n            {\n                T1 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result1 = value;\n                    Volatile.Write(ref winArgumentIndex, 1);\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAnyPromise<T0, T1> parent;\n\n                public Awaiter(WhenAnyPromise<T0, T1> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.IsCompleted;\n                    }\n                }\n\n                public (int, (bool, T0), (bool, T1)) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    var i = parent.winArgumentIndex;\n                    return (i, (i == 0, parent.result0), (i == 1, parent.result1));\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAnyPromise<T0, T1, T2>\n        {\n            T0 result0;\n            T1 result1;\n            T2 result2;\n            ExceptionDispatchInfo exception;\n            Action whenComplete;\n            int completeCount;\n            int winArgumentIndex;\n\n            bool IsCompleted => exception != null || Volatile.Read(ref winArgumentIndex) != -1;\n\n            public WhenAnyPromise(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2)\n            {\n                this.whenComplete = null;\n                this.exception = null;\n                this.completeCount = 0;\n                this.winArgumentIndex = -1;\n                this.result0 = default(T0);\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n\n                RunTask0(task0).Forget();\n                RunTask1(task1).Forget();\n                RunTask2(task2).Forget();\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            async UniTaskVoid RunTask0(UniTask<T0> task)\n            {\n                T0 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result0 = value;\n                    Volatile.Write(ref winArgumentIndex, 0);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask1(UniTask<T1> task)\n            {\n                T1 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result1 = value;\n                    Volatile.Write(ref winArgumentIndex, 1);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask2(UniTask<T2> task)\n            {\n                T2 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result2 = value;\n                    Volatile.Write(ref winArgumentIndex, 2);\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAnyPromise<T0, T1, T2> parent;\n\n                public Awaiter(WhenAnyPromise<T0, T1, T2> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.IsCompleted;\n                    }\n                }\n\n                public (int, (bool, T0), (bool, T1), (bool, T2)) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    var i = parent.winArgumentIndex;\n                    return (i, (i == 0, parent.result0), (i == 1, parent.result1), (i == 2, parent.result2));\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAnyPromise<T0, T1, T2, T3>\n        {\n            T0 result0;\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            ExceptionDispatchInfo exception;\n            Action whenComplete;\n            int completeCount;\n            int winArgumentIndex;\n\n            bool IsCompleted => exception != null || Volatile.Read(ref winArgumentIndex) != -1;\n\n            public WhenAnyPromise(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3)\n            {\n                this.whenComplete = null;\n                this.exception = null;\n                this.completeCount = 0;\n                this.winArgumentIndex = -1;\n                this.result0 = default(T0);\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n\n                RunTask0(task0).Forget();\n                RunTask1(task1).Forget();\n                RunTask2(task2).Forget();\n                RunTask3(task3).Forget();\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            async UniTaskVoid RunTask0(UniTask<T0> task)\n            {\n                T0 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result0 = value;\n                    Volatile.Write(ref winArgumentIndex, 0);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask1(UniTask<T1> task)\n            {\n                T1 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result1 = value;\n                    Volatile.Write(ref winArgumentIndex, 1);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask2(UniTask<T2> task)\n            {\n                T2 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result2 = value;\n                    Volatile.Write(ref winArgumentIndex, 2);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask3(UniTask<T3> task)\n            {\n                T3 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result3 = value;\n                    Volatile.Write(ref winArgumentIndex, 3);\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAnyPromise<T0, T1, T2, T3> parent;\n\n                public Awaiter(WhenAnyPromise<T0, T1, T2, T3> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.IsCompleted;\n                    }\n                }\n\n                public (int, (bool, T0), (bool, T1), (bool, T2), (bool, T3)) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    var i = parent.winArgumentIndex;\n                    return (i, (i == 0, parent.result0), (i == 1, parent.result1), (i == 2, parent.result2), (i == 3, parent.result3));\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAnyPromise<T0, T1, T2, T3, T4>\n        {\n            T0 result0;\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            T4 result4;\n            ExceptionDispatchInfo exception;\n            Action whenComplete;\n            int completeCount;\n            int winArgumentIndex;\n\n            bool IsCompleted => exception != null || Volatile.Read(ref winArgumentIndex) != -1;\n\n            public WhenAnyPromise(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4)\n            {\n                this.whenComplete = null;\n                this.exception = null;\n                this.completeCount = 0;\n                this.winArgumentIndex = -1;\n                this.result0 = default(T0);\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n                this.result4 = default(T4);\n\n                RunTask0(task0).Forget();\n                RunTask1(task1).Forget();\n                RunTask2(task2).Forget();\n                RunTask3(task3).Forget();\n                RunTask4(task4).Forget();\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            async UniTaskVoid RunTask0(UniTask<T0> task)\n            {\n                T0 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result0 = value;\n                    Volatile.Write(ref winArgumentIndex, 0);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask1(UniTask<T1> task)\n            {\n                T1 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result1 = value;\n                    Volatile.Write(ref winArgumentIndex, 1);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask2(UniTask<T2> task)\n            {\n                T2 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result2 = value;\n                    Volatile.Write(ref winArgumentIndex, 2);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask3(UniTask<T3> task)\n            {\n                T3 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result3 = value;\n                    Volatile.Write(ref winArgumentIndex, 3);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask4(UniTask<T4> task)\n            {\n                T4 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result4 = value;\n                    Volatile.Write(ref winArgumentIndex, 4);\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAnyPromise<T0, T1, T2, T3, T4> parent;\n\n                public Awaiter(WhenAnyPromise<T0, T1, T2, T3, T4> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.IsCompleted;\n                    }\n                }\n\n                public (int, (bool, T0), (bool, T1), (bool, T2), (bool, T3), (bool, T4)) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    var i = parent.winArgumentIndex;\n                    return (i, (i == 0, parent.result0), (i == 1, parent.result1), (i == 2, parent.result2), (i == 3, parent.result3), (i == 4, parent.result4));\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAnyPromise<T0, T1, T2, T3, T4, T5>\n        {\n            T0 result0;\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            T4 result4;\n            T5 result5;\n            ExceptionDispatchInfo exception;\n            Action whenComplete;\n            int completeCount;\n            int winArgumentIndex;\n\n            bool IsCompleted => exception != null || Volatile.Read(ref winArgumentIndex) != -1;\n\n            public WhenAnyPromise(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5)\n            {\n                this.whenComplete = null;\n                this.exception = null;\n                this.completeCount = 0;\n                this.winArgumentIndex = -1;\n                this.result0 = default(T0);\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n                this.result4 = default(T4);\n                this.result5 = default(T5);\n\n                RunTask0(task0).Forget();\n                RunTask1(task1).Forget();\n                RunTask2(task2).Forget();\n                RunTask3(task3).Forget();\n                RunTask4(task4).Forget();\n                RunTask5(task5).Forget();\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            async UniTaskVoid RunTask0(UniTask<T0> task)\n            {\n                T0 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result0 = value;\n                    Volatile.Write(ref winArgumentIndex, 0);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask1(UniTask<T1> task)\n            {\n                T1 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result1 = value;\n                    Volatile.Write(ref winArgumentIndex, 1);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask2(UniTask<T2> task)\n            {\n                T2 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result2 = value;\n                    Volatile.Write(ref winArgumentIndex, 2);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask3(UniTask<T3> task)\n            {\n                T3 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result3 = value;\n                    Volatile.Write(ref winArgumentIndex, 3);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask4(UniTask<T4> task)\n            {\n                T4 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result4 = value;\n                    Volatile.Write(ref winArgumentIndex, 4);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask5(UniTask<T5> task)\n            {\n                T5 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result5 = value;\n                    Volatile.Write(ref winArgumentIndex, 5);\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAnyPromise<T0, T1, T2, T3, T4, T5> parent;\n\n                public Awaiter(WhenAnyPromise<T0, T1, T2, T3, T4, T5> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.IsCompleted;\n                    }\n                }\n\n                public (int, (bool, T0), (bool, T1), (bool, T2), (bool, T3), (bool, T4), (bool, T5)) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    var i = parent.winArgumentIndex;\n                    return (i, (i == 0, parent.result0), (i == 1, parent.result1), (i == 2, parent.result2), (i == 3, parent.result3), (i == 4, parent.result4), (i == 5, parent.result5));\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAnyPromise<T0, T1, T2, T3, T4, T5, T6>\n        {\n            T0 result0;\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            T4 result4;\n            T5 result5;\n            T6 result6;\n            ExceptionDispatchInfo exception;\n            Action whenComplete;\n            int completeCount;\n            int winArgumentIndex;\n\n            bool IsCompleted => exception != null || Volatile.Read(ref winArgumentIndex) != -1;\n\n            public WhenAnyPromise(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5, UniTask<T6> task6)\n            {\n                this.whenComplete = null;\n                this.exception = null;\n                this.completeCount = 0;\n                this.winArgumentIndex = -1;\n                this.result0 = default(T0);\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n                this.result4 = default(T4);\n                this.result5 = default(T5);\n                this.result6 = default(T6);\n\n                RunTask0(task0).Forget();\n                RunTask1(task1).Forget();\n                RunTask2(task2).Forget();\n                RunTask3(task3).Forget();\n                RunTask4(task4).Forget();\n                RunTask5(task5).Forget();\n                RunTask6(task6).Forget();\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            async UniTaskVoid RunTask0(UniTask<T0> task)\n            {\n                T0 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result0 = value;\n                    Volatile.Write(ref winArgumentIndex, 0);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask1(UniTask<T1> task)\n            {\n                T1 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result1 = value;\n                    Volatile.Write(ref winArgumentIndex, 1);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask2(UniTask<T2> task)\n            {\n                T2 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result2 = value;\n                    Volatile.Write(ref winArgumentIndex, 2);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask3(UniTask<T3> task)\n            {\n                T3 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result3 = value;\n                    Volatile.Write(ref winArgumentIndex, 3);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask4(UniTask<T4> task)\n            {\n                T4 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result4 = value;\n                    Volatile.Write(ref winArgumentIndex, 4);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask5(UniTask<T5> task)\n            {\n                T5 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result5 = value;\n                    Volatile.Write(ref winArgumentIndex, 5);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask6(UniTask<T6> task)\n            {\n                T6 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result6 = value;\n                    Volatile.Write(ref winArgumentIndex, 6);\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAnyPromise<T0, T1, T2, T3, T4, T5, T6> parent;\n\n                public Awaiter(WhenAnyPromise<T0, T1, T2, T3, T4, T5, T6> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.IsCompleted;\n                    }\n                }\n\n                public (int, (bool, T0), (bool, T1), (bool, T2), (bool, T3), (bool, T4), (bool, T5), (bool, T6)) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    var i = parent.winArgumentIndex;\n                    return (i, (i == 0, parent.result0), (i == 1, parent.result1), (i == 2, parent.result2), (i == 3, parent.result3), (i == 4, parent.result4), (i == 5, parent.result5), (i == 6, parent.result6));\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n        class WhenAnyPromise<T0, T1, T2, T3, T4, T5, T6, T7>\n        {\n            T0 result0;\n            T1 result1;\n            T2 result2;\n            T3 result3;\n            T4 result4;\n            T5 result5;\n            T6 result6;\n            T7 result7;\n            ExceptionDispatchInfo exception;\n            Action whenComplete;\n            int completeCount;\n            int winArgumentIndex;\n\n            bool IsCompleted => exception != null || Volatile.Read(ref winArgumentIndex) != -1;\n\n            public WhenAnyPromise(UniTask<T0> task0, UniTask<T1> task1, UniTask<T2> task2, UniTask<T3> task3, UniTask<T4> task4, UniTask<T5> task5, UniTask<T6> task6, UniTask<T7> task7)\n            {\n                this.whenComplete = null;\n                this.exception = null;\n                this.completeCount = 0;\n                this.winArgumentIndex = -1;\n                this.result0 = default(T0);\n                this.result1 = default(T1);\n                this.result2 = default(T2);\n                this.result3 = default(T3);\n                this.result4 = default(T4);\n                this.result5 = default(T5);\n                this.result6 = default(T6);\n                this.result7 = default(T7);\n\n                RunTask0(task0).Forget();\n                RunTask1(task1).Forget();\n                RunTask2(task2).Forget();\n                RunTask3(task3).Forget();\n                RunTask4(task4).Forget();\n                RunTask5(task5).Forget();\n                RunTask6(task6).Forget();\n                RunTask7(task7).Forget();\n            }\n\n            void TryCallContinuation()\n            {\n                var action = Interlocked.Exchange(ref whenComplete, null);\n                if (action != null)\n                {\n                    action.Invoke();\n                }\n            }\n\n            async UniTaskVoid RunTask0(UniTask<T0> task)\n            {\n                T0 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result0 = value;\n                    Volatile.Write(ref winArgumentIndex, 0);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask1(UniTask<T1> task)\n            {\n                T1 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result1 = value;\n                    Volatile.Write(ref winArgumentIndex, 1);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask2(UniTask<T2> task)\n            {\n                T2 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result2 = value;\n                    Volatile.Write(ref winArgumentIndex, 2);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask3(UniTask<T3> task)\n            {\n                T3 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result3 = value;\n                    Volatile.Write(ref winArgumentIndex, 3);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask4(UniTask<T4> task)\n            {\n                T4 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result4 = value;\n                    Volatile.Write(ref winArgumentIndex, 4);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask5(UniTask<T5> task)\n            {\n                T5 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result5 = value;\n                    Volatile.Write(ref winArgumentIndex, 5);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask6(UniTask<T6> task)\n            {\n                T6 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result6 = value;\n                    Volatile.Write(ref winArgumentIndex, 6);\n                    TryCallContinuation();\n                }\n            }\n\n            async UniTaskVoid RunTask7(UniTask<T7> task)\n            {\n                T7 value;\n                try\n                {\n                    value = await task;\n                }\n                catch (Exception ex)\n                {\n                    exception = ExceptionDispatchInfo.Capture(ex);\n                    TryCallContinuation();\n                    return;\n                }\n\n                var count = Interlocked.Increment(ref completeCount);\n                if (count == 1)\n                {\n                    result7 = value;\n                    Volatile.Write(ref winArgumentIndex, 7);\n                    TryCallContinuation();\n                }\n            }\n\n\n            public Awaiter GetAwaiter()\n            {\n                return new Awaiter(this);\n            }\n\n            public struct Awaiter : ICriticalNotifyCompletion\n            {\n                WhenAnyPromise<T0, T1, T2, T3, T4, T5, T6, T7> parent;\n\n                public Awaiter(WhenAnyPromise<T0, T1, T2, T3, T4, T5, T6, T7> parent)\n                {\n                    this.parent = parent;\n                }\n\n                public bool IsCompleted\n                {\n                    get\n                    {\n                        return parent.IsCompleted;\n                    }\n                }\n\n                public (int, (bool, T0), (bool, T1), (bool, T2), (bool, T3), (bool, T4), (bool, T5), (bool, T6), (bool, T7)) GetResult()\n                {\n                    if (parent.exception != null)\n                    {\n                        parent.exception.Throw();\n                    }\n\n                    var i = parent.winArgumentIndex;\n                    return (i, (i == 0, parent.result0), (i == 1, parent.result1), (i == 2, parent.result2), (i == 3, parent.result3), (i == 4, parent.result4), (i == 5, parent.result5), (i == 6, parent.result6), (i == 7, parent.result7));\n                }\n\n                public void OnCompleted(Action continuation)\n                {\n                    UnsafeOnCompleted(continuation);\n                }\n\n                public void UnsafeOnCompleted(Action continuation)\n                {\n                    parent.whenComplete = continuation;\n                    if (IsCompleted)\n                    {\n                        var action = Interlocked.Exchange(ref parent.whenComplete, null);\n                        if (action != null)\n                        {\n                            action();\n                        }\n                    }\n                }\n            }\n        }\n\n    }\n}\n#endif"
  },
  {
    "path": "Tests/UniRx.Console/ZipGenerator.tt",
    "content": "﻿<#@ template debug=\"true\" hostSpecific=\"true\" #>\n<#@ output extension=\".txt\" #>\n<#@ Assembly Name=\"System.Core\" #>\n<#@ Assembly Name=\"System.Windows.Forms\" #>\n<#@ import namespace=\"System\" #>\n<#@ import namespace=\"System.IO\" #>\n<#@ import namespace=\"System.Diagnostics\" #>\n<#@ import namespace=\"System.Linq\" #>\n<#@ import namespace=\"System.Collections\" #>\n<#@ import namespace=\"System.Collections.Generic\" #> \n<#\n   \n   \n   var endCount = 7;\n#>\n\n<# for(var i = 3; i <= endCount; i++) { #>\npublic delegate TR ZipFunc<<# for(var j = 1; j <= i; j++) { #>T<#= j #>, <# } #>TR>(<# for(var j = 1; j <= i; j++) { #>T<#= j #> arg<#= j #>, <# } #>);\n<# } #>\n\n\n\n<# for(var i = 3; i <= endCount; i++) { #>\npublic static IObservable<TR> Zip<#= GetTRGeneric(i) #>(this <#= GetSources(i) #>, ZipFunc<#= GetTRGeneric(i) #> resultSelector)\n{\n    return new ZipObservable<#= GetTRGeneric(i) #>(<#= GetSources2(i) #>, resultSelector);\n}\n\n<# } #>\n\n\n\n\n\n\n\n<# for(var i = 3; i <= endCount; i++) { #>\n\ninternal class ZipObservable<#= GetTRGeneric(i) #> : OperatorObservableBase<TR>\n{\n<# for(var j = 1; j <= i; j++) { #>\n    IObservable<T<#= j #>> source<#= j #>;\n<# } #>\n    ZipFunc<#= GetTRGeneric(i) #> resultSelector;\n\n    public ZipObservable(\n<# for(var j = 1; j <= i; j++) { #>\n        IObservable<T<#= j #>> source<#= j #>,\n<# } #>\n          ZipFunc<#= GetTRGeneric(i) #> resultSelector)\n        : base(\n<# for(var j = 1; j <= i; j++) { #>\n            source<#= j #>.IsRequiredSubscribeOnCurrentThread() || \n<# } #>\n            false)\n    {\n<# for(var j = 1; j <= i; j++) { #>\n        this.source<#= j #> = source<#= j #>;\n<# } #>\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new Zip(this, observer, cancel).Run();\n    }\n\n    class Zip : NthZipObserverBase<TR>\n    {\n        readonly ZipObservable<#= GetTRGeneric(i) #> parent;\n        readonly object gate = new object();\n<# for(var j = 1; j <= i; j++) { #>\n        readonly Queue<T<#= j #>> q<#= j #> = new Queue<T<#= j #>>();\n<# } #>\n\n        public Zip(ZipObservable<#= GetTRGeneric(i) #> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            base.SetQueue(new System.Collections.ICollection[] { <#= GetQ(\"q\", i) #> });\n<# for(var j = 1; j <= i; j++) { #>\n            var s<#= j #> = parent.source<#= j #>.Subscribe(new ZipObserver<T<#= j #>>(gate, this, <#= j - 1 #>, q<#= j #>));\n<# } #>\n\n            return StableCompositeDisposable.Create(<#= GetQ(\"s\", i) #>, Disposable.Create(() =>\n            {\n                lock (gate)\n                {\n                    <#= GetClear(i) #>\n                }\n            }));\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(<#= GetDequeue(i) #>);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n<# } #>\n\n<#+ \n\n    string GetTRGeneric(int count)\n    {\n        return  \"<\" + string.Join(\", \", Enumerable.Range(1, count).Select(x => \"T\" + x).ToArray()) + \", TR\" + \">\";\n    }\n    \n    string GetQ(string prefix, int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => prefix + x).ToArray());\n    }\n    \n    string GetDequeue(int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => \"q\" + x + \".Dequeue()\").ToArray());\n    }\n    \n    string GetClear(int count)\n    {\n        return  string.Join(\" \", Enumerable.Range(1, count).Select(x => \"q\" + x + \".Clear();\").ToArray());\n    }\n    \n    string GetSources(int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => string.Format(\"IObservable<T{0}> source{0}\", x)).ToArray());\n    }\n    \n    string GetSources2(int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => string.Format(\"source{0}\", x)).ToArray());\n    }\n\n\n\n #>"
  },
  {
    "path": "Tests/UniRx.Console/ZipGenerator.txt",
    "content": "﻿ \n\npublic delegate TR ZipFunc<T1, T2, T3, TR>(T1 arg1, T2 arg2, T3 arg3, );\npublic delegate TR ZipFunc<T1, T2, T3, T4, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, );\npublic delegate TR ZipFunc<T1, T2, T3, T4, T5, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, );\npublic delegate TR ZipFunc<T1, T2, T3, T4, T5, T6, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, );\npublic delegate TR ZipFunc<T1, T2, T3, T4, T5, T6, T7, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, );\n\n\n\npublic static IObservable<TR> Zip<T1, T2, T3, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, ZipFunc<T1, T2, T3, TR> resultSelector)\n{\n    return new ZipObservable<T1, T2, T3, TR>(source1, source2, source3, resultSelector);\n}\n\npublic static IObservable<TR> Zip<T1, T2, T3, T4, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, ZipFunc<T1, T2, T3, T4, TR> resultSelector)\n{\n    return new ZipObservable<T1, T2, T3, T4, TR>(source1, source2, source3, source4, resultSelector);\n}\n\npublic static IObservable<TR> Zip<T1, T2, T3, T4, T5, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, ZipFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n{\n    return new ZipObservable<T1, T2, T3, T4, T5, TR>(source1, source2, source3, source4, source5, resultSelector);\n}\n\npublic static IObservable<TR> Zip<T1, T2, T3, T4, T5, T6, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, ZipFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n{\n    return new ZipObservable<T1, T2, T3, T4, T5, T6, TR>(source1, source2, source3, source4, source5, source6, resultSelector);\n}\n\npublic static IObservable<TR> Zip<T1, T2, T3, T4, T5, T6, T7, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, ZipFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n{\n    return new ZipObservable<T1, T2, T3, T4, T5, T6, T7, TR>(source1, source2, source3, source4, source5, source6, source7, resultSelector);\n}\n\n\n\n\n\n\n\n\n\ninternal class ZipObservable<T1, T2, T3, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    ZipFunc<T1, T2, T3, TR> resultSelector;\n\n    public ZipObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n          ZipFunc<T1, T2, T3, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new Zip(this, observer, cancel).Run();\n    }\n\n    class Zip : NthZipObserverBase<TR>\n    {\n        readonly ZipObservable<T1, T2, T3, TR> parent;\n        readonly object gate = new object();\n        readonly Queue<T1> q1 = new Queue<T1>();\n        readonly Queue<T2> q2 = new Queue<T2>();\n        readonly Queue<T3> q3 = new Queue<T3>();\n\n        public Zip(ZipObservable<T1, T2, T3, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3 });\n            var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n            var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n            var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n\n            return StableCompositeDisposable.Create(s1, s2, s3, Disposable.Create(() =>\n            {\n                lock (gate)\n                {\n                    q1.Clear(); q2.Clear(); q3.Clear();\n                }\n            }));\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue());\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class ZipObservable<T1, T2, T3, T4, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    ZipFunc<T1, T2, T3, T4, TR> resultSelector;\n\n    public ZipObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n          ZipFunc<T1, T2, T3, T4, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new Zip(this, observer, cancel).Run();\n    }\n\n    class Zip : NthZipObserverBase<TR>\n    {\n        readonly ZipObservable<T1, T2, T3, T4, TR> parent;\n        readonly object gate = new object();\n        readonly Queue<T1> q1 = new Queue<T1>();\n        readonly Queue<T2> q2 = new Queue<T2>();\n        readonly Queue<T3> q3 = new Queue<T3>();\n        readonly Queue<T4> q4 = new Queue<T4>();\n\n        public Zip(ZipObservable<T1, T2, T3, T4, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3, q4 });\n            var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n            var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n            var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n            var s4 = parent.source4.Subscribe(new ZipObserver<T4>(gate, this, 3, q4));\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, Disposable.Create(() =>\n            {\n                lock (gate)\n                {\n                    q1.Clear(); q2.Clear(); q3.Clear(); q4.Clear();\n                }\n            }));\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue(), q4.Dequeue());\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class ZipObservable<T1, T2, T3, T4, T5, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    IObservable<T5> source5;\n    ZipFunc<T1, T2, T3, T4, T5, TR> resultSelector;\n\n    public ZipObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n        IObservable<T5> source5,\n          ZipFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            source5.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.source5 = source5;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new Zip(this, observer, cancel).Run();\n    }\n\n    class Zip : NthZipObserverBase<TR>\n    {\n        readonly ZipObservable<T1, T2, T3, T4, T5, TR> parent;\n        readonly object gate = new object();\n        readonly Queue<T1> q1 = new Queue<T1>();\n        readonly Queue<T2> q2 = new Queue<T2>();\n        readonly Queue<T3> q3 = new Queue<T3>();\n        readonly Queue<T4> q4 = new Queue<T4>();\n        readonly Queue<T5> q5 = new Queue<T5>();\n\n        public Zip(ZipObservable<T1, T2, T3, T4, T5, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3, q4, q5 });\n            var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n            var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n            var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n            var s4 = parent.source4.Subscribe(new ZipObserver<T4>(gate, this, 3, q4));\n            var s5 = parent.source5.Subscribe(new ZipObserver<T5>(gate, this, 4, q5));\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, Disposable.Create(() =>\n            {\n                lock (gate)\n                {\n                    q1.Clear(); q2.Clear(); q3.Clear(); q4.Clear(); q5.Clear();\n                }\n            }));\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue(), q4.Dequeue(), q5.Dequeue());\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class ZipObservable<T1, T2, T3, T4, T5, T6, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    IObservable<T5> source5;\n    IObservable<T6> source6;\n    ZipFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector;\n\n    public ZipObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n        IObservable<T5> source5,\n        IObservable<T6> source6,\n          ZipFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            source5.IsRequiredSubscribeOnCurrentThread() || \n            source6.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.source5 = source5;\n        this.source6 = source6;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new Zip(this, observer, cancel).Run();\n    }\n\n    class Zip : NthZipObserverBase<TR>\n    {\n        readonly ZipObservable<T1, T2, T3, T4, T5, T6, TR> parent;\n        readonly object gate = new object();\n        readonly Queue<T1> q1 = new Queue<T1>();\n        readonly Queue<T2> q2 = new Queue<T2>();\n        readonly Queue<T3> q3 = new Queue<T3>();\n        readonly Queue<T4> q4 = new Queue<T4>();\n        readonly Queue<T5> q5 = new Queue<T5>();\n        readonly Queue<T6> q6 = new Queue<T6>();\n\n        public Zip(ZipObservable<T1, T2, T3, T4, T5, T6, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3, q4, q5, q6 });\n            var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n            var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n            var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n            var s4 = parent.source4.Subscribe(new ZipObserver<T4>(gate, this, 3, q4));\n            var s5 = parent.source5.Subscribe(new ZipObserver<T5>(gate, this, 4, q5));\n            var s6 = parent.source6.Subscribe(new ZipObserver<T6>(gate, this, 5, q6));\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6, Disposable.Create(() =>\n            {\n                lock (gate)\n                {\n                    q1.Clear(); q2.Clear(); q3.Clear(); q4.Clear(); q5.Clear(); q6.Clear();\n                }\n            }));\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue(), q4.Dequeue(), q5.Dequeue(), q6.Dequeue());\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class ZipObservable<T1, T2, T3, T4, T5, T6, T7, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    IObservable<T5> source5;\n    IObservable<T6> source6;\n    IObservable<T7> source7;\n    ZipFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector;\n\n    public ZipObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n        IObservable<T5> source5,\n        IObservable<T6> source6,\n        IObservable<T7> source7,\n          ZipFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            source5.IsRequiredSubscribeOnCurrentThread() || \n            source6.IsRequiredSubscribeOnCurrentThread() || \n            source7.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.source5 = source5;\n        this.source6 = source6;\n        this.source7 = source7;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new Zip(this, observer, cancel).Run();\n    }\n\n    class Zip : NthZipObserverBase<TR>\n    {\n        readonly ZipObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent;\n        readonly object gate = new object();\n        readonly Queue<T1> q1 = new Queue<T1>();\n        readonly Queue<T2> q2 = new Queue<T2>();\n        readonly Queue<T3> q3 = new Queue<T3>();\n        readonly Queue<T4> q4 = new Queue<T4>();\n        readonly Queue<T5> q5 = new Queue<T5>();\n        readonly Queue<T6> q6 = new Queue<T6>();\n        readonly Queue<T7> q7 = new Queue<T7>();\n\n        public Zip(ZipObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            base.SetQueue(new System.Collections.ICollection[] { q1, q2, q3, q4, q5, q6, q7 });\n            var s1 = parent.source1.Subscribe(new ZipObserver<T1>(gate, this, 0, q1));\n            var s2 = parent.source2.Subscribe(new ZipObserver<T2>(gate, this, 1, q2));\n            var s3 = parent.source3.Subscribe(new ZipObserver<T3>(gate, this, 2, q3));\n            var s4 = parent.source4.Subscribe(new ZipObserver<T4>(gate, this, 3, q4));\n            var s5 = parent.source5.Subscribe(new ZipObserver<T5>(gate, this, 4, q5));\n            var s6 = parent.source6.Subscribe(new ZipObserver<T6>(gate, this, 5, q6));\n            var s7 = parent.source7.Subscribe(new ZipObserver<T7>(gate, this, 6, q7));\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6, s7, Disposable.Create(() =>\n            {\n                lock (gate)\n                {\n                    q1.Clear(); q2.Clear(); q3.Clear(); q4.Clear(); q5.Clear(); q6.Clear(); q7.Clear();\n                }\n            }));\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(q1.Dequeue(), q2.Dequeue(), q3.Dequeue(), q4.Dequeue(), q5.Dequeue(), q6.Dequeue(), q7.Dequeue());\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Tests/UniRx.Console/ZipLatestGenerator.tt",
    "content": "﻿<#@ template debug=\"true\" hostSpecific=\"true\" #>\n<#@ output extension=\".txt\" #>\n<#@ Assembly Name=\"System.Core\" #>\n<#@ Assembly Name=\"System.Windows.Forms\" #>\n<#@ import namespace=\"System\" #>\n<#@ import namespace=\"System.IO\" #>\n<#@ import namespace=\"System.Diagnostics\" #>\n<#@ import namespace=\"System.Linq\" #>\n<#@ import namespace=\"System.Collections\" #>\n<#@ import namespace=\"System.Collections.Generic\" #> \n<#\n   \n   \n   var endCount = 7;\n#>\n\n<# for(var i = 3; i <= endCount; i++) { #>\npublic delegate TR ZipLatestFunc<<# for(var j = 1; j <= i; j++) { #>T<#= j #>, <# } #>TR>(<# for(var j = 1; j <= i; j++) { #>T<#= j #> arg<#= j #>, <# } #>);\n<# } #>\n\n\n\n<# for(var i = 3; i <= endCount; i++) { #>\npublic static IObservable<TR> ZipLatest<#= GetTRGeneric(i) #>(this <#= GetSources(i) #>, ZipLatestFunc<#= GetTRGeneric(i) #> resultSelector)\n{\n    return new ZipLatestObservable<#= GetTRGeneric(i) #>(<#= GetSources2(i) #>, resultSelector);\n}\n\n<# } #>\n\n\n\n\n\n\n\n<# for(var i = 3; i <= endCount; i++) { #>\n\ninternal class ZipLatestObservable<#= GetTRGeneric(i) #> : OperatorObservableBase<TR>\n{\n<# for(var j = 1; j <= i; j++) { #>\n    IObservable<T<#= j #>> source<#= j #>;\n<# } #>\n    ZipLatestFunc<#= GetTRGeneric(i) #> resultSelector;\n\n    public ZipLatestObservable(\n<# for(var j = 1; j <= i; j++) { #>\n        IObservable<T<#= j #>> source<#= j #>,\n<# } #>\n          ZipLatestFunc<#= GetTRGeneric(i) #> resultSelector)\n        : base(\n<# for(var j = 1; j <= i; j++) { #>\n            source<#= j #>.IsRequiredSubscribeOnCurrentThread() || \n<# } #>\n            false)\n    {\n<# for(var j = 1; j <= i; j++) { #>\n        this.source<#= j #> = source<#= j #>;\n<# } #>\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new ZipLatest(<#= i #>, this, observer, cancel).Run();\n    }\n\n    class ZipLatest : NthZipLatestObserverBase<TR>\n    {\n        readonly ZipLatestObservable<#= GetTRGeneric(i) #> parent;\n        readonly object gate = new object();\n<# for(var j = 1; j <= i; j++) { #>\n        ZipLatestObserver<T<#= j #>> c<#= j #>;\n<# } #>\n\n        public ZipLatest(int length, ZipLatestObservable<#= GetTRGeneric(i) #> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n<# for(var j = 1; j <= i; j++) { #>\n            c<#= j #> = new ZipLatestObserver<T<#= j #>>(gate, this, <#= j - 1 #>);\n<# } #>\n            \n<# for(var j = 1; j <= i; j++) { #>\n            var s<#= j #> = parent.source<#= j #>.Subscribe(c<#= j #>);\n<# } #>\n\n            return StableCompositeDisposable.Create(<#= GetQ(\"s\", i) #>);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(<#= GetValue(i) #>);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n<# } #>\n\n<#+ \n\n    string GetTRGeneric(int count)\n    {\n        return  \"<\" + string.Join(\", \", Enumerable.Range(1, count).Select(x => \"T\" + x).ToArray()) + \", TR\" + \">\";\n    }\n    \n    string GetQ(string prefix, int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => prefix + x).ToArray());\n    }\n    \n    string GetValue(int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => \"c\" + x + \".Value\").ToArray());\n    }\n    \n    string GetClear(int count)\n    {\n        return  string.Join(\" \", Enumerable.Range(1, count).Select(x => \"q\" + x + \".Clear();\").ToArray());\n    }\n    \n    string GetSources(int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => string.Format(\"IObservable<T{0}> source{0}\", x)).ToArray());\n    }\n    \n    string GetSources2(int count)\n    {\n        return  string.Join(\", \", Enumerable.Range(1, count).Select(x => string.Format(\"source{0}\", x)).ToArray());\n    }\n\n\n\n #>"
  },
  {
    "path": "Tests/UniRx.Console/ZipLatestGenerator.txt",
    "content": "﻿ \n\npublic delegate TR ZipLatestFunc<T1, T2, T3, TR>(T1 arg1, T2 arg2, T3 arg3, );\npublic delegate TR ZipLatestFunc<T1, T2, T3, T4, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, );\npublic delegate TR ZipLatestFunc<T1, T2, T3, T4, T5, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, );\npublic delegate TR ZipLatestFunc<T1, T2, T3, T4, T5, T6, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, );\npublic delegate TR ZipLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, );\n\n\n\npublic static IObservable<TR> ZipLatest<T1, T2, T3, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, ZipLatestFunc<T1, T2, T3, TR> resultSelector)\n{\n    return new ZipLatestObservable<T1, T2, T3, TR>(source1, source2, source3, resultSelector);\n}\n\npublic static IObservable<TR> ZipLatest<T1, T2, T3, T4, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, ZipLatestFunc<T1, T2, T3, T4, TR> resultSelector)\n{\n    return new ZipLatestObservable<T1, T2, T3, T4, TR>(source1, source2, source3, source4, resultSelector);\n}\n\npublic static IObservable<TR> ZipLatest<T1, T2, T3, T4, T5, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, ZipLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n{\n    return new ZipLatestObservable<T1, T2, T3, T4, T5, TR>(source1, source2, source3, source4, source5, resultSelector);\n}\n\npublic static IObservable<TR> ZipLatest<T1, T2, T3, T4, T5, T6, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, ZipLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n{\n    return new ZipLatestObservable<T1, T2, T3, T4, T5, T6, TR>(source1, source2, source3, source4, source5, source6, resultSelector);\n}\n\npublic static IObservable<TR> ZipLatest<T1, T2, T3, T4, T5, T6, T7, TR>(this IObservable<T1> source1, IObservable<T2> source2, IObservable<T3> source3, IObservable<T4> source4, IObservable<T5> source5, IObservable<T6> source6, IObservable<T7> source7, ZipLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n{\n    return new ZipLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR>(source1, source2, source3, source4, source5, source6, source7, resultSelector);\n}\n\n\n\n\n\n\n\n\n\ninternal class ZipLatestObservable<T1, T2, T3, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    ZipLatestFunc<T1, T2, T3, TR> resultSelector;\n\n    public ZipLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n          ZipLatestFunc<T1, T2, T3, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new ZipLatest(3, this, observer, cancel).Run();\n    }\n\n    class ZipLatest : NthZipLatestObserverBase<TR>\n    {\n        readonly ZipLatestObservable<T1, T2, T3, TR> parent;\n        readonly object gate = new object();\n        ZipLatestObserver<T1> c1;\n        ZipLatestObserver<T2> c2;\n        ZipLatestObserver<T3> c3;\n\n        public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new ZipLatestObserver<T1>(gate, this, 0);\n            c2 = new ZipLatestObserver<T2>(gate, this, 1);\n            c3 = new ZipLatestObserver<T3>(gate, this, 2);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n\n            return StableCompositeDisposable.Create(s1, s2, s3);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class ZipLatestObservable<T1, T2, T3, T4, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    ZipLatestFunc<T1, T2, T3, T4, TR> resultSelector;\n\n    public ZipLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n          ZipLatestFunc<T1, T2, T3, T4, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new ZipLatest(4, this, observer, cancel).Run();\n    }\n\n    class ZipLatest : NthZipLatestObserverBase<TR>\n    {\n        readonly ZipLatestObservable<T1, T2, T3, T4, TR> parent;\n        readonly object gate = new object();\n        ZipLatestObserver<T1> c1;\n        ZipLatestObserver<T2> c2;\n        ZipLatestObserver<T3> c3;\n        ZipLatestObserver<T4> c4;\n\n        public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, T4, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new ZipLatestObserver<T1>(gate, this, 0);\n            c2 = new ZipLatestObserver<T2>(gate, this, 1);\n            c3 = new ZipLatestObserver<T3>(gate, this, 2);\n            c4 = new ZipLatestObserver<T4>(gate, this, 3);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n            var s4 = parent.source4.Subscribe(c4);\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class ZipLatestObservable<T1, T2, T3, T4, T5, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    IObservable<T5> source5;\n    ZipLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector;\n\n    public ZipLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n        IObservable<T5> source5,\n          ZipLatestFunc<T1, T2, T3, T4, T5, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            source5.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.source5 = source5;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new ZipLatest(5, this, observer, cancel).Run();\n    }\n\n    class ZipLatest : NthZipLatestObserverBase<TR>\n    {\n        readonly ZipLatestObservable<T1, T2, T3, T4, T5, TR> parent;\n        readonly object gate = new object();\n        ZipLatestObserver<T1> c1;\n        ZipLatestObserver<T2> c2;\n        ZipLatestObserver<T3> c3;\n        ZipLatestObserver<T4> c4;\n        ZipLatestObserver<T5> c5;\n\n        public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, T4, T5, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new ZipLatestObserver<T1>(gate, this, 0);\n            c2 = new ZipLatestObserver<T2>(gate, this, 1);\n            c3 = new ZipLatestObserver<T3>(gate, this, 2);\n            c4 = new ZipLatestObserver<T4>(gate, this, 3);\n            c5 = new ZipLatestObserver<T5>(gate, this, 4);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n            var s4 = parent.source4.Subscribe(c4);\n            var s5 = parent.source5.Subscribe(c5);\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, s5);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class ZipLatestObservable<T1, T2, T3, T4, T5, T6, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    IObservable<T5> source5;\n    IObservable<T6> source6;\n    ZipLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector;\n\n    public ZipLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n        IObservable<T5> source5,\n        IObservable<T6> source6,\n          ZipLatestFunc<T1, T2, T3, T4, T5, T6, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            source5.IsRequiredSubscribeOnCurrentThread() || \n            source6.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.source5 = source5;\n        this.source6 = source6;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new ZipLatest(6, this, observer, cancel).Run();\n    }\n\n    class ZipLatest : NthZipLatestObserverBase<TR>\n    {\n        readonly ZipLatestObservable<T1, T2, T3, T4, T5, T6, TR> parent;\n        readonly object gate = new object();\n        ZipLatestObserver<T1> c1;\n        ZipLatestObserver<T2> c2;\n        ZipLatestObserver<T3> c3;\n        ZipLatestObserver<T4> c4;\n        ZipLatestObserver<T5> c5;\n        ZipLatestObserver<T6> c6;\n\n        public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, T4, T5, T6, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new ZipLatestObserver<T1>(gate, this, 0);\n            c2 = new ZipLatestObserver<T2>(gate, this, 1);\n            c3 = new ZipLatestObserver<T3>(gate, this, 2);\n            c4 = new ZipLatestObserver<T4>(gate, this, 3);\n            c5 = new ZipLatestObserver<T5>(gate, this, 4);\n            c6 = new ZipLatestObserver<T6>(gate, this, 5);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n            var s4 = parent.source4.Subscribe(c4);\n            var s5 = parent.source5.Subscribe(c5);\n            var s6 = parent.source6.Subscribe(c6);\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\ninternal class ZipLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> : OperatorObservableBase<TR>\n{\n    IObservable<T1> source1;\n    IObservable<T2> source2;\n    IObservable<T3> source3;\n    IObservable<T4> source4;\n    IObservable<T5> source5;\n    IObservable<T6> source6;\n    IObservable<T7> source7;\n    ZipLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector;\n\n    public ZipLatestObservable(\n        IObservable<T1> source1,\n        IObservable<T2> source2,\n        IObservable<T3> source3,\n        IObservable<T4> source4,\n        IObservable<T5> source5,\n        IObservable<T6> source6,\n        IObservable<T7> source7,\n          ZipLatestFunc<T1, T2, T3, T4, T5, T6, T7, TR> resultSelector)\n        : base(\n            source1.IsRequiredSubscribeOnCurrentThread() || \n            source2.IsRequiredSubscribeOnCurrentThread() || \n            source3.IsRequiredSubscribeOnCurrentThread() || \n            source4.IsRequiredSubscribeOnCurrentThread() || \n            source5.IsRequiredSubscribeOnCurrentThread() || \n            source6.IsRequiredSubscribeOnCurrentThread() || \n            source7.IsRequiredSubscribeOnCurrentThread() || \n            false)\n    {\n        this.source1 = source1;\n        this.source2 = source2;\n        this.source3 = source3;\n        this.source4 = source4;\n        this.source5 = source5;\n        this.source6 = source6;\n        this.source7 = source7;\n        this.resultSelector = resultSelector;\n    }\n\n    protected override IDisposable SubscribeCore(IObserver<TR> observer, IDisposable cancel)\n    {\n        return new ZipLatest(7, this, observer, cancel).Run();\n    }\n\n    class ZipLatest : NthZipLatestObserverBase<TR>\n    {\n        readonly ZipLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent;\n        readonly object gate = new object();\n        ZipLatestObserver<T1> c1;\n        ZipLatestObserver<T2> c2;\n        ZipLatestObserver<T3> c3;\n        ZipLatestObserver<T4> c4;\n        ZipLatestObserver<T5> c5;\n        ZipLatestObserver<T6> c6;\n        ZipLatestObserver<T7> c7;\n\n        public ZipLatest(int length, ZipLatestObservable<T1, T2, T3, T4, T5, T6, T7, TR> parent, IObserver<TR> observer, IDisposable cancel)\n            : base(length, observer, cancel)\n        {\n            this.parent = parent;\n        }\n\n        public IDisposable Run()\n        {\n            c1 = new ZipLatestObserver<T1>(gate, this, 0);\n            c2 = new ZipLatestObserver<T2>(gate, this, 1);\n            c3 = new ZipLatestObserver<T3>(gate, this, 2);\n            c4 = new ZipLatestObserver<T4>(gate, this, 3);\n            c5 = new ZipLatestObserver<T5>(gate, this, 4);\n            c6 = new ZipLatestObserver<T6>(gate, this, 5);\n            c7 = new ZipLatestObserver<T7>(gate, this, 6);\n            \n            var s1 = parent.source1.Subscribe(c1);\n            var s2 = parent.source2.Subscribe(c2);\n            var s3 = parent.source3.Subscribe(c3);\n            var s4 = parent.source4.Subscribe(c4);\n            var s5 = parent.source5.Subscribe(c5);\n            var s6 = parent.source6.Subscribe(c6);\n            var s7 = parent.source7.Subscribe(c7);\n\n            return StableCompositeDisposable.Create(s1, s2, s3, s4, s5, s6, s7);\n        }\n\n        public override TR GetResult()\n        {\n            return parent.resultSelector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value);\n        }\n\n        public override void OnNext(TR value)\n        {\n            base.observer.OnNext(value);\n        }\n\n        public override void OnError(Exception error)\n        {\n            try { observer.OnError(error); }\n            finally { Dispose(); }\n        }\n\n        public override void OnCompleted()\n        {\n            try { observer.OnCompleted(); }\n            finally { Dispose(); }\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Tests/UniRx.Console/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.CodeAnalysis.Analyzers\" version=\"1.1.0\" targetFramework=\"net471\" />\n  <package id=\"Microsoft.CodeAnalysis.Common\" version=\"2.8.2\" targetFramework=\"net471\" />\n  <package id=\"Microsoft.CodeAnalysis.CSharp\" version=\"2.8.2\" targetFramework=\"net471\" />\n  <package id=\"System.AppContext\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Collections\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Collections.Concurrent\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Collections.Immutable\" version=\"1.3.1\" targetFramework=\"net471\" />\n  <package id=\"System.Console\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Diagnostics.Debug\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Diagnostics.FileVersionInfo\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Diagnostics.StackTrace\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Diagnostics.Tools\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Dynamic.Runtime\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Globalization\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.IO\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.IO.Compression\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.IO.FileSystem\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.IO.FileSystem.Primitives\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Linq\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Linq.Expressions\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Reflection\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Reflection.Metadata\" version=\"1.4.2\" targetFramework=\"net471\" />\n  <package id=\"System.Resources.ResourceManager\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Runtime\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Runtime.Extensions\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Runtime.InteropServices\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Runtime.Numerics\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Security.Cryptography.Algorithms\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Security.Cryptography.Encoding\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Security.Cryptography.Primitives\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Security.Cryptography.X509Certificates\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Text.Encoding\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Text.Encoding.CodePages\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Text.Encoding.Extensions\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Threading\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Threading.Tasks\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Threading.Tasks.Parallel\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Threading.Thread\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.ValueTuple\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Xml.ReaderWriter\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Xml.XDocument\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Xml.XmlDocument\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Xml.XPath\" version=\"4.3.0\" targetFramework=\"net471\" />\n  <package id=\"System.Xml.XPath.XDocument\" version=\"4.3.0\" targetFramework=\"net471\" />\n</packages>"
  },
  {
    "path": "Tests/UniRx.Tests/AggregateTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests.Operators\n{\n    [Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]\n    public class AggregateTest\n    {\n        [TestMethod]\n        public void Scan()\n        {\n            var range = Observable.Range(1, 5);\n\n            range.Scan((x, y) => x + y).ToArrayWait().IsCollection(1, 3, 6, 10, 15);\n            range.Scan(100, (x, y) => x + y).ToArrayWait().IsCollection(101, 103, 106, 110, 115);\n\n            Observable.Empty<int>().Scan((x, y) => x + y).ToArrayWait().IsCollection();\n            Observable.Empty<int>().Scan(100, (x, y) => x + y).ToArrayWait().IsCollection();\n        }\n\n        [TestMethod]\n        public void Aggregate()\n        {\n            AssertEx.Throws<InvalidOperationException>(() => Observable.Empty<int>().Aggregate((x, y) => x + y).Wait());\n            Observable.Range(1, 5).Aggregate((x, y) => x + y).Wait().Is(15);\n\n            Observable.Empty<int>().Aggregate(100, (x, y) => x + y).Wait().Is(100);\n            Observable.Range(1, 5).Aggregate(100, (x, y) => x + y).Wait().Is(115);\n\n            Observable.Empty<int>().Aggregate(100, (x, y) => x + y, x => x + x).Wait().Is(200);\n            Observable.Range(1, 5).Aggregate(100, (x, y) => x + y, x => x + x).Wait().Is(230);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/ArrayPoolTest.cs",
    "content": "﻿using Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System;\nusing UniRx.Async.Internal;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class ArrayPoolTest\n    {\n        [TestMethod]\n        public void Rent()\n        {\n            var pool = UniRx.Async.Internal.ArrayPool<int>.Shared;\n\n            {\n                var xs = pool.Rent(9);\n                xs.Length.Is(16);\n                pool.Return(xs);\n                object.ReferenceEquals(pool.Rent(9), xs).IsTrue();\n            }\n            {\n                //1048576\n                var xs = pool.Rent(1048577);\n                xs.Length.Is(2097152);\n                pool.Return(xs);\n\n                object.ReferenceEquals(pool.Rent(1048577), xs).IsFalse(); // no pooled\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/ContinueWithTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests.Operators\n{\n    [Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]\n    public class ContinueWithTest\n    {\n        [TestMethod]\n        public void ContinueWith()\n        {\n            var subject = new Subject<int>();\n\n            var record = subject.ContinueWith(x => Observable.Return(x)).Record();\n\n            subject.OnNext(10);\n            record.Values.Count.Is(0);\n\n            subject.OnNext(100);\n            record.Values.Count.Is(0);\n\n            subject.OnCompleted();\n            record.Values[0].Is(100);\n            record.Notifications.Last().Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ContinueWith2()\n        {\n            var subject = new Subject<int>();\n\n            var record = subject.ContinueWith(x => Observable.Return(x).Delay(TimeSpan.FromMilliseconds(100))).Record();\n\n            subject.OnNext(10);\n            record.Values.Count.Is(0);\n\n            subject.OnNext(100);\n            record.Values.Count.Is(0);\n\n            subject.OnCompleted();\n            Thread.Sleep(TimeSpan.FromMilliseconds(200));\n            record.Values[0].Is(100);\n            record.Notifications.Last().Kind.Is(NotificationKind.OnCompleted);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/ConversionTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests.Operators\n{\n    [TestClass]\n    public class ConversionTest\n    {\n        [TestMethod]\n        public void AsObservable()\n        {\n            Observable.Range(1, 10).AsObservable().ToArrayWait().IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n\n        [TestMethod]\n        public void AsUnitObservable()\n        {\n            Observable.Range(1, 3).AsUnitObservable().ToArrayWait().IsCollection(Unit.Default, Unit.Default, Unit.Default);\n        }\n\n        [TestMethod]\n        public void ToObservable()\n        {\n            Enumerable.Range(1, 3).ToObservable(Scheduler.CurrentThread).ToArrayWait().IsCollection(1, 2, 3);\n            Enumerable.Range(1, 3).ToObservable(Scheduler.ThreadPool).ToArrayWait().IsCollection(1, 2, 3);\n            Enumerable.Range(1, 3).ToObservable(Scheduler.Immediate).ToArrayWait().IsCollection(1, 2, 3);\n        }\n\n        [TestMethod]\n        public void Cast()\n        {\n            Observable.Range(1, 3).Cast<int, object>().ToArrayWait().IsCollection(1, 2, 3);\n        }\n\n        [TestMethod]\n        public void OfType()\n        {\n            var subject = new Subject<object>();\n\n            var list = new List<int>();\n            subject.OfType(default(int)).Subscribe(x => list.Add(x));\n\n            subject.OnNext(1);\n            subject.OnNext(2);\n            subject.OnNext(\"hogehoge\");\n            subject.OnNext(3);\n\n            list.IsCollection(1, 2, 3);\n        }\n\n        [TestMethod]\n        public void AsSingleUnitObservable()\n        {\n            var subject = new Subject<int>();\n\n            var done = false;\n            subject.AsSingleUnitObservable().Subscribe(_ => done = true);\n\n            subject.OnNext(1);\n            done.IsFalse();\n            subject.OnNext(100);\n            done.IsFalse();\n            subject.OnCompleted();\n            done.IsTrue();\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/DisposableTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class DisposableTest\n    {\n        [TestMethod]\n        public void SingleAssignment()\n        {\n            var d = new SingleAssignmentDisposable();\n            d.IsDisposed.IsFalse();\n            var id1 = new IdDisp(1);\n            var id2 = new IdDisp(2);\n            var id3 = new IdDisp(3);\n\n            // dispose first\n            d.Dispose();\n            d.IsDisposed.IsTrue();\n\n            d.Disposable = id1; id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // normal flow\n            d = new SingleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n\n            d.Disposable = id1; id1.IsDisposed.IsFalse();\n            d.Dispose();\n            id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // exception flow\n            d = new SingleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n            d.Disposable = id1;\n            AssertEx.Catch<InvalidOperationException>(() => d.Disposable = id2);\n\n            // null\n            d = new SingleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            d.Disposable = null;\n            d.Dispose();\n            d.Disposable = null;\n        }\n\n        [TestMethod]\n        public void MultipleAssignment()\n        {\n            var d = new MultipleAssignmentDisposable();\n            d.IsDisposed.IsFalse();\n            var id1 = new IdDisp(1);\n            var id2 = new IdDisp(2);\n            var id3 = new IdDisp(3);\n\n            // dispose first\n            d.Dispose();\n            d.IsDisposed.IsTrue();\n\n            d.Disposable = id1; id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // normal flow\n            d = new MultipleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n\n            d.Disposable = id1; id1.IsDisposed.IsFalse();\n            d.Dispose();\n            id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // exception flow\n            d = new MultipleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n            d.Disposable = id1;\n            d.Disposable = id2;\n            d.Disposable = id3;\n            d.Dispose();\n            id1.IsDisposed.IsFalse();\n            id2.IsDisposed.IsFalse();\n            id3.IsDisposed.IsTrue();\n\n            // null\n            d = new MultipleAssignmentDisposable();\n            id1 = new IdDisp(1);\n            d.Disposable = null;\n            d.Dispose();\n            d.Disposable = null;\n        }\n\n        [TestMethod]\n        public void Serial()\n        {\n            var d = new SerialDisposable();\n            d.IsDisposed.IsFalse();\n            var id1 = new IdDisp(1);\n            var id2 = new IdDisp(2);\n            var id3 = new IdDisp(3);\n\n            // dispose first\n            d.Dispose();\n            d.IsDisposed.IsTrue();\n\n            d.Disposable = id1; id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // normal flow\n            d = new SerialDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n\n            d.Disposable = id1; id1.IsDisposed.IsFalse();\n            d.Dispose();\n            id1.IsDisposed.IsTrue();\n            d.Disposable = id2; id2.IsDisposed.IsTrue();\n            d.Disposable = id3; id3.IsDisposed.IsTrue();\n\n            // exception flow\n            d = new SerialDisposable();\n            id1 = new IdDisp(1);\n            id2 = new IdDisp(2);\n            id3 = new IdDisp(3);\n            d.Disposable = id1;\n            id1.IsDisposed.IsFalse();\n            d.Disposable = id2;\n            id1.IsDisposed.IsTrue();\n            id2.IsDisposed.IsFalse();\n            d.Disposable = id3;\n            id2.IsDisposed.IsTrue();\n            id3.IsDisposed.IsFalse();\n\n            d.Dispose();\n            \n            id3.IsDisposed.IsTrue();\n\n            // null\n            d = new SerialDisposable();\n            id1 = new IdDisp(1);\n            d.Disposable = null;\n            d.Dispose();\n            d.Disposable = null;\n        }\n\n        [TestMethod]\n        public void Boolean()\n        {\n            var bd = new BooleanDisposable();\n            bd.IsDisposed.IsFalse();\n            bd.Dispose();\n            bd.IsDisposed.IsTrue();\n        }\n\n\n        class IdDisp : IDisposable\n        {\n            public bool IsDisposed { get; set; }\n            public int Id { get; set; }\n\n            public IdDisp(int id)\n            {\n                this.Id = id;\n            }\n\n\n            public void Dispose()\n            {\n                IsDisposed = true;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/DoTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests.Operators\n{\n    [TestClass]\n    public class DoTest\n    {\n        class ListObserver : IObserver<int>\n        {\n            public List<int> list = new List<int>();\n\n            public void OnCompleted()\n            {\n                list.Add(1000);\n            }\n\n            public void OnError(Exception error)\n            {\n                list.Add(100);\n            }\n\n            public void OnNext(int value)\n            {\n                list.Add(value);\n            }\n        }\n\n        [TestMethod]\n        public void Do()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>().Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000)).DefaultIfEmpty().Wait();\n            list.IsCollection(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000)).Wait();\n            list.IsCollection(1, 2, 3, 4, 5, 1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000)).Subscribe(_ => { }, _ => { }, () => { });\n            list.IsCollection(1, 2, 3, 4, 5, 100);\n        }\n\n        [TestMethod]\n        public void DoObserver()\n        {\n            var observer = new ListObserver();\n            Observable.Empty<int>().Do(observer).DefaultIfEmpty().Wait();\n            observer.list.IsCollection(1000);\n\n            observer = new ListObserver();\n            Observable.Range(1, 5).Do(observer).Wait();\n            observer.list.IsCollection(1, 2, 3, 4, 5, 1000);\n\n            observer = new ListObserver();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).Do(observer).Subscribe(_ => { }, _ => { }, () => { });\n            observer.list.IsCollection(1, 2, 3, 4, 5, 100);\n        }\n\n        [TestMethod]\n        public void DoOnError()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>().DoOnError(_ => list.Add(100)).DefaultIfEmpty().Wait();\n            list.IsCollection();\n\n            list.Clear();\n            Observable.Range(1, 5).DoOnError(_ => list.Add(100)).Wait();\n            list.IsCollection();\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).DoOnError(_ => list.Add(100)).Subscribe(_ => { }, _ => { }, () => { });\n            list.IsCollection(100);\n        }\n\n        [TestMethod]\n        public void DoOnCompleted()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>().DoOnCompleted(() => list.Add(1000)).DefaultIfEmpty().Wait();\n            list.IsCollection(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).DoOnCompleted(() => list.Add(1000)).Wait();\n            list.IsCollection(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).DoOnCompleted(() => list.Add(1000)).Subscribe(_ => { }, _ => { }, () => { });\n            list.IsCollection();\n        }\n\n        [TestMethod]\n        public void DoOnTerminate()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>().DoOnTerminate(() => list.Add(1000)).DefaultIfEmpty().Wait();\n            list.IsCollection(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).DoOnTerminate(() => list.Add(1000)).Wait();\n            list.IsCollection(1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception())).DoOnTerminate(() => list.Add(1000)).Subscribe(_ => { }, _ => { }, () => { });\n            list.IsCollection(1000);\n        }\n\n        [TestMethod]\n        public void DoOnSubscribe()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>()\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnSubscribe(() => list.Add(10000)).DefaultIfEmpty().Wait();\n            list.IsCollection(10000, 1000);\n\n            list.Clear();\n            Observable.Range(1, 5)\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnSubscribe(() => list.Add(10000)).Wait();\n            list.IsCollection(10000, 1, 2, 3, 4, 5, 1000);\n\n            list.Clear();\n            Observable.Range(1, 5).Concat(Observable.Throw<int>(new Exception()))\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnSubscribe(() => list.Add(10000)).Subscribe(_ => { }, _ => { }, () => { });\n            list.IsCollection(10000, 1, 2, 3, 4, 5, 100);\n        }\n\n        [TestMethod]\n        public void DoOnCancel()\n        {\n            var list = new List<int>();\n            Observable.Empty<int>()\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnCancel(() => list.Add(5000))\n                .DoOnCancel(() => list.Add(10000))\n                .DefaultIfEmpty()\n                .Subscribe(_ => { }, _ => { }, () => { });\n            list.IsCollection(1000);\n\n            list.Clear();\n            Observable.Throw<int>(new Exception())\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnCancel(() => list.Add(5000))\n                .DoOnCancel(() => list.Add(10000))\n                .DefaultIfEmpty()\n                .Subscribe(_ => { }, _ => { }, () => { });\n            list.IsCollection(100);\n\n            list.Clear();\n            var subscription = Observable.Timer(TimeSpan.FromMilliseconds(1000)).Select(x => (int)x)\n                .Do(x => list.Add(x), ex => list.Add(100), () => list.Add(1000))\n                .DoOnCancel(() => list.Add(5000))\n                .DoOnCancel(() => list.Add(10000))\n                .Subscribe();\n            subscription.Dispose();\n            list.IsCollection(5000, 10000);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/DurabilityTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Operators\n{\n    [TestClass]\n    public class DurabilityTest\n    {\n        public delegate void LikeUnityAction();\n        public delegate void LikeUnityAction<T0>(T0 arg0);\n\n        public class MyEventArgs : EventArgs\n        {\n            public int MyProperty { get; set; }\n\n            public MyEventArgs(int x)\n            {\n                this.MyProperty = x;\n            }\n        }\n\n        public class EventTester\n        {\n            public EventHandler<MyEventArgs> genericEventHandler;\n            public LikeUnityAction unityAction;\n            public LikeUnityAction<int> intUnityAction;\n            public Action<int> intAction;\n            public Action unitAction;\n\n            public void Fire(int x)\n            {\n                if (genericEventHandler != null)\n                {\n                    genericEventHandler.Invoke(this, new MyEventArgs(x));\n                }\n                else if (unityAction != null)\n                {\n                    unityAction();\n                }\n                else if (intUnityAction != null)\n                {\n                    intUnityAction(x);\n                }\n                else if (intAction != null)\n                {\n                    intAction.Invoke(x);\n                }\n                else if (unitAction != null)\n                {\n                    unitAction.Invoke();\n                }\n            }\n        }\n\n        [TestMethod]\n        public void FromEventPattern()\n        {\n            var tester = new EventTester();\n\n            {\n                var list = new List<int>();\n                var d = Observable.FromEventPattern<EventHandler<MyEventArgs>, MyEventArgs>((h) => h.Invoke, h => tester.genericEventHandler += h, h => tester.genericEventHandler -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(xx.EventArgs.MyProperty);\n                        Observable.Return(xx.EventArgs.MyProperty)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(x));\n                    });\n\n                try { tester.Fire(5); } catch { }\n                try { tester.Fire(1); } catch { }\n                try { tester.Fire(10); } catch { }\n\n                list.IsCollection(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n        }\n\n        [TestMethod]\n        public void FromEventUnityLike()\n        {\n            var tester = new EventTester();\n\n            {\n                var list = new List<int>();\n                var d = Observable.FromEvent<LikeUnityAction<int>, int>(h => new LikeUnityAction<int>(h), h => tester.intUnityAction += h, h => tester.intUnityAction -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(xx);\n                        Observable.Return(xx)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(x));\n                    });\n\n                try { tester.Fire(5); } catch { }\n                try { tester.Fire(1); } catch { }\n                try { tester.Fire(10); } catch { }\n\n                list.IsCollection(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n\n            {\n                var i = 0;\n                var list = new List<int>();\n                var d = Observable.FromEvent<LikeUnityAction>(h => new LikeUnityAction(h), h => tester.unityAction += h, h => tester.unityAction -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(i);\n                        Observable.Return(i)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(i));\n                    });\n\n                try { i = 5; tester.Fire(5); } catch { }\n                try { i = 1; tester.Fire(1); } catch { }\n                try { i = 10; tester.Fire(10); } catch { }\n\n                list.IsCollection(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n        }\n\n        [TestMethod]\n        public void FromEventUnity()\n        {\n            var tester = new EventTester();\n\n            {\n                var list = new List<int>();\n                var d = Observable.FromEvent<int>(h => tester.intAction += h, h => tester.intAction -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(xx);\n                        Observable.Return(xx)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(x));\n                    });\n\n                try { tester.Fire(5); } catch { }\n                try { tester.Fire(1); } catch { }\n                try { tester.Fire(10); } catch { }\n\n                list.IsCollection(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n\n            {\n                var i = 0;\n                var list = new List<int>();\n                var d = Observable.FromEvent(h => tester.unitAction += h, h => tester.unitAction -= h)\n                    .Subscribe(xx =>\n                    {\n                        list.Add(i);\n                        Observable.Return(i)\n                            .Do(x => { if (x == 1) throw new Exception(); })\n                            .Subscribe(x => list.Add(i));\n                    });\n\n                try { i = 5; tester.Fire(5); } catch { }\n                try { i = 1; tester.Fire(1); } catch { }\n                try { i = 10; tester.Fire(10); } catch { }\n\n                list.IsCollection(5, 5, 1, 10, 10);\n                d.Dispose();\n                tester.Fire(1000);\n                list.Count.Is(5);\n            }\n        }\n\n        [TestMethod]\n        public void Durability()\n        {\n            {\n                var s1 = new Subject<int>();\n\n                var list = new List<int>();\n                var d = s1.Subscribe(xx =>\n                {\n                    list.Add(xx);\n                    Observable.Return(xx)\n                        .Do(x => { if (x == 1) throw new Exception(); })\n                        .Subscribe(x => list.Add(x));\n                });\n\n                try { s1.OnNext(5); } catch { }\n                try { s1.OnNext(1); } catch { }\n                try { s1.OnNext(10); } catch { }\n\n                list.IsCollection(5, 5, 1, 10, 10);\n                d.Dispose();\n                s1.OnNext(1000);\n                list.Count.Is(5);\n            }\n            {\n                var s1 = new Subject<int>();\n\n                var list = new List<int>();\n                var d = s1.Select(x => x).Take(1000).Subscribe(xx =>\n                {\n                    list.Add(xx);\n                    Observable.Return(xx)\n                        .Do(x => { if (x == 1) throw new Exception(); })\n                        .Subscribe(x => list.Add(x));\n                });\n\n                try { s1.OnNext(5); } catch { }\n                try { s1.OnNext(1); } catch { }\n                try { s1.OnNext(10); } catch { }\n\n                list.IsCollection(5, 5, 1, 10, 10);\n                d.Dispose();\n                s1.OnNext(1000);\n                list.Count.Is(5);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/MicroCoroutineTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections;\nusing System.Linq;\nusing System.Collections.Generic;\nusing System.Reflection;\n\nnamespace UniRx.Tests\n{\n    class DecrementEnumerator : IEnumerator\n    {\n        readonly int original;\n        int count;\n\n        public DecrementEnumerator(int count)\n        {\n            this.original = count;\n            this.count = count;\n        }\n\n        public object Current\n        {\n            get\n            {\n                return null;\n            }\n        }\n        public int OriginalCount => original;\n\n        public int Count => count;\n\n        public bool MoveNext()\n        {\n            return count-- > 0;\n        }\n\n        public void Reset()\n        {\n            throw new NotSupportedException();\n        }\n\n        public override string ToString()\n        {\n            return $\"{count}/{original}\";\n        }\n    }\n\n    [TestClass]\n    public class MicroCoroutineTest\n    {\n        static UniRx.InternalUtil.MicroCoroutine Create()\n        {\n            return new InternalUtil.MicroCoroutine(ex => Console.WriteLine(ex));\n        }\n\n        static int FindLast(UniRx.InternalUtil.MicroCoroutine mc)\n        {\n            var coroutines = mc.GetType().GetField(\"coroutines\", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);\n            var enumerators = (IEnumerator[])coroutines.GetValue(mc);\n\n            int tail = -1;\n            for (int i = 0; i < enumerators.Length; i++)\n            {\n                if (enumerators[i] == null)\n                {\n                    if (tail == -1)\n                    {\n                        tail = i;\n                    }\n                }\n                else\n                {\n                    if (tail != -1)\n                    {\n                        throw new Exception(\"what's happen?\");\n                    }\n                }\n            }\n\n            if (tail == -1) tail = enumerators.Length;\n            return tail;\n        }\n\n        static int GetTailDynamic(UniRx.InternalUtil.MicroCoroutine mc)\n        {\n            var tail = mc.GetType().GetField(\"tail\", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);\n            return (int)tail.GetValue(mc);\n        }\n\n        [TestMethod]\n        public void EnumerationCycle()\n        {\n            var coroutines = new[]\n            {\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(2),\n                new DecrementEnumerator(3),\n                new DecrementEnumerator(4),\n                new DecrementEnumerator(5),\n            };\n\n            var mc = Create();\n            foreach (var item in coroutines)\n            {\n                mc.AddCoroutine(item);\n            }\n\n            mc.Run();\n            GetTailDynamic(mc).Is(5);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(0, 1, 2, 3, 4);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(4);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(-1, 0, 1, 2, 3);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(3);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(-1, -1, 0, 1, 2);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(2);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(-1, -1, -1, 0, 1);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(1);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(-1, -1, -1, -1, 0);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(0);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(-1, -1, -1, -1, -1);\n        }\n\n        [TestMethod]\n        public void EnumerationCycleBlank()\n        {\n            var coroutines = new[]\n            {\n                new DecrementEnumerator(0),\n                new DecrementEnumerator(0),\n                new DecrementEnumerator(0),\n                new DecrementEnumerator(0),\n                new DecrementEnumerator(0),\n            };\n\n            var mc = Create();\n            foreach (var item in coroutines)\n            {\n                mc.AddCoroutine(item);\n            }\n\n            GetTailDynamic(mc).Is(5);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(0);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(-1, -1, -1, -1, -1);\n        }\n\n        [TestMethod]\n        public void EnumerationCycleFull()\n        {\n            var coroutines = new[]\n            {\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n                new DecrementEnumerator(1),\n            };\n\n            var mc = Create();\n            foreach (var item in coroutines)\n            {\n                mc.AddCoroutine(item);\n            }\n\n            GetTailDynamic(mc).Is(16);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(16);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n\n            mc.Run();\n            GetTailDynamic(mc).Is(0);\n            coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);\n        }\n\n        [TestMethod]\n        public void EnumerationCycleRandom()\n        {\n            // pattern for shuffle\n            var rand = new System.Random();\n            // large number\n            {\n                for (int i = 0; i < 1000; i++)\n                {\n                    var expectedTail = rand.Next(1, 100);\n\n                    var coroutines = Enumerable.Range(1, expectedTail)\n                        .Select(x => new DecrementEnumerator(rand.Next(0, 100)))\n                        .ToArray();\n\n                    var mc = Create();\n                    foreach (var item in coroutines)\n                    {\n                        mc.AddCoroutine(item);\n                    }\n\n                    var maxRunCount = coroutines.Max(x => x.OriginalCount);\n                    var expected = coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).ToArray();\n\n\n\n                    for (int j = 0; j < maxRunCount + 1; j++)\n                    {\n                        mc.Run();\n\n                        // validate\n                        expected = expected.Select(x => (x == -1) ? -1 : (x - 1)).ToArray();\n                        coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(expected);\n\n                        var tail = FindLast(mc);\n                        GetTailDynamic(mc).Is(tail);\n                    }\n                    GetTailDynamic(mc).Is(0);\n                }\n            }\n            {\n                // small case\n                for (int i = 0; i < 1000; i++)\n                {\n                    var expectedTail = rand.Next(1, 100);\n\n                    var coroutines = Enumerable.Range(1, expectedTail)\n                        .Select(x => new DecrementEnumerator(rand.Next(0, 5)))\n                        .ToArray();\n\n                    var mc = Create();\n                    foreach (var item in coroutines)\n                    {\n                        mc.AddCoroutine(item);\n                    }\n\n                    var maxRunCount = coroutines.Max(x => x.OriginalCount);\n                    var expected = coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).ToArray();\n\n                    for (int j = 0; j < maxRunCount + 1; j++)\n                    {\n                        mc.Run();\n\n                        // validate\n                        expected = expected.Select(x => (x == -1) ? -1 : (x - 1)).ToArray();\n                        coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(expected);\n\n                        var tail = FindLast(mc);\n                        GetTailDynamic(mc).Is(tail);\n                    }\n                    GetTailDynamic(mc).Is(0);\n                }\n            }\n            {\n                // small case2\n                for (int i = 0; i < 1000; i++)\n                {\n                    var expectedTail = rand.Next(1, 10);\n\n                    var coroutines = Enumerable.Range(1, expectedTail)\n                        .Select(x => new DecrementEnumerator(rand.Next(0, 5)))\n                        .ToArray();\n\n                    var mc = Create();\n                    foreach (var item in coroutines)\n                    {\n                        mc.AddCoroutine(item);\n                    }\n\n                    var maxRunCount = coroutines.Max(x => x.OriginalCount);\n                    var expected = coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).ToArray();\n\n                    for (int j = 0; j < maxRunCount + 1; j++)\n                    {\n                        mc.Run();\n\n                        // validate\n                        expected = expected.Select(x => (x == -1) ? -1 : (x - 1)).ToArray();\n                        coroutines.OrderBy(x => x.OriginalCount).Select(x => x.Count).IsCollection(expected);\n\n                        var tail = FindLast(mc);\n                        GetTailDynamic(mc).Is(tail);\n                    }\n                    GetTailDynamic(mc).Is(0);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/Observable.ConcatTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class ObservableConcatTest\n    {\n        [TestMethod]\n        public void Concat()\n        {\n            var a = Observable.Range(1, 5, Scheduler.ThreadPool);\n            var b = Observable.Range(10, 3, Scheduler.ThreadPool);\n            var c = Observable.Return(300, Scheduler.ThreadPool);\n\n            Observable.Concat(a, b, c).ToArray().Wait().IsCollection(1, 2, 3, 4, 5, 10, 11, 12, 300);\n        }\n\n        [TestMethod]\n        public void Zip()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.Zip(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(1); // OnNext\n\n            a.OnNext(1001);\n            l.Count.Is(1);\n\n            b.OnNext(5);\n            l.Count.Is(2); // Completed!\n\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void Zip2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.Zip(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(1); // OnNext\n\n            b.OnCompleted(); // Completed!\n\n            l.Count.Is(2); // Completed!\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ZipMulti()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.Zip(a, b).Select(xs => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(1); // OnNext\n\n            a.OnNext(1001);\n            l.Count.Is(1);\n\n            b.OnNext(5);\n            l.Count.Is(2); // Completed!\n\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ZipMulti2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.Zip(a, b).Select(xs => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(1); // OnNext\n\n            b.OnCompleted(); // Completed!\n\n            l.Count.Is(2); // Completed!\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ZipNth()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n            var c = new Subject<int>();\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0, z = 0 })).ToList();\n            Observable.Zip(a, b, c, (x, y, z) => new { x, y, z }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            c.OnNext(3000);\n\n            l.Count.Is(1); // OnNext\n\n            a.OnCompleted();\n\n            b.OnNext(1001);\n            l.Count.Is(1);\n\n            b.OnCompleted();\n            l.Count.Is(1);\n\n            c.OnCompleted();\n            l.Count.Is(2); // Completed!\n\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void WhenAll()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.WhenAll(a, b).Select(xs => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            a.OnNext(1500);\n            b.OnNext(2000);\n\n            a.OnCompleted();\n\n            l.Count.Is(0);\n\n            a.OnNext(1001);\n            l.Count.Is(0);\n\n            b.OnNext(5);\n            b.OnCompleted();\n\n            l.Count.Is(2); // Completed!\n\n            l[0].Value.x.Is(1500);\n            l[0].Value.y.Is(5);\n            l[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void CombineLatest()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.CombineLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l[1].Value.Is(new { x = 1000, y = 3000 });\n\n            a.OnNext(5000);\n            l[2].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnCompleted();\n            l.Count.Is(3);\n\n            a.OnNext(1001);\n            l.Count.Is(3);\n\n            b.OnNext(5);\n            l[3].Value.Is(new { x = 5000, y = 5 });\n            b.OnNext(500);\n            l[4].Value.Is(new { x = 5000, y = 500 });\n\n            b.OnCompleted();\n            l[5].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void CombineLatest2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.CombineLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnNext(2000);\n            a.OnCompleted();\n\n            l.Count.Is(0);\n\n            b.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void CombineLatest3()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.CombineLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(2000);\n            b.OnCompleted();\n\n            l.Count.Is(0);\n\n            a.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void CombineLatest4()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.CombineLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnCompleted();\n            l.Count.Is(0);\n\n            a.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void CombineLatestMulti()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.CombineLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l[1].Value.Is(new { x = 1000, y = 3000 });\n\n            a.OnNext(5000);\n            l[2].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnCompleted();\n            l.Count.Is(3);\n\n            a.OnNext(1001);\n            l.Count.Is(3);\n\n            b.OnNext(5);\n            l[3].Value.Is(new { x = 5000, y = 5 });\n            b.OnNext(500);\n            l[4].Value.Is(new { x = 5000, y = 500 });\n\n            b.OnCompleted();\n            l[5].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void CombineLatestMulti2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.CombineLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnNext(2000);\n            a.OnCompleted();\n\n            l.Count.Is(0);\n\n            b.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void CombineLatestMulti3()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.CombineLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(2000);\n            b.OnCompleted();\n\n            l.Count.Is(0);\n\n            a.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void CombineLatestMulti4()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.CombineLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnCompleted();\n            l.Count.Is(0);\n\n            a.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ZipLatest()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.ZipLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l.Count.Is(1);\n\n            a.OnNext(5000);\n            l[1].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnCompleted();\n            l.Count.Is(2);\n\n            a.OnNext(1001);\n            l.Count.Is(2);\n\n            b.OnNext(5);\n            l.Count.Is(3);\n            l[2].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ZipLatest2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.ZipLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l.Count.Is(1);\n\n            a.OnNext(5000);\n            l[1].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnNext(9999); // one more\n\n            a.OnCompleted();\n            l.Count.Is(2);\n\n            a.OnNext(1001);\n            l.Count.Is(2);\n\n            b.OnNext(5);\n            l.Count.Is(4);\n            l[2].Value.Is(new { x = 9999, y = 5 });\n            l[3].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ZipLatest2Ex()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            a.OnNext(10);\n            b.OnNext(20);\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            a.ZipLatest(b, (x, y) => new { x, y }).Materialize().Subscribe(x => l.Add(x));\n\n            b.OnNext(2000);\n            a.OnCompleted();\n\n            l.Count.Is(0);\n\n            b.OnNext(30);\n            l.Count.Is(1);\n            l[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ZipLatestMulti()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.ZipLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l.Count.Is(1);\n\n            a.OnNext(5000);\n            l[1].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnCompleted();\n            l.Count.Is(2);\n\n            b.OnNext(5);\n            l[2].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ZipLatestMulti2()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var l = Enumerable.Empty<Unit>().Select(_ => Notification.CreateOnNext(new { x = 0, y = 0 })).ToList();\n            Observable.ZipLatest(a, b).Select((xs) => new { x = xs[0], y = xs[1] }).Materialize().Subscribe(x => l.Add(x));\n\n            a.OnNext(1000);\n            b.OnNext(2000);\n            l[0].Value.Is(new { x = 1000, y = 2000 });\n\n            b.OnNext(3000);\n            l.Count.Is(1);\n\n            a.OnNext(5000);\n            l[1].Value.Is(new { x = 5000, y = 3000 });\n\n            a.OnNext(900);\n            a.OnCompleted();\n            l.Count.Is(2);\n\n            b.OnNext(5);\n            l[2].Value.Is(new { x = 900, y = 5 });\n            l[3].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ZipLatestNth()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n            var c = new Subject<int>();\n            var d = new Subject<int>();\n\n            var record = a.ZipLatest(b, c, d, (x, y, z, w) => new { x, y, z, w }).Record();\n\n            a.OnNext(1);\n            b.OnNext(2);\n            c.OnNext(3);\n            record.Values.Count.Is(0);\n\n            d.OnNext(4);\n            record.Values[0].Is(new { x = 1, y = 2, z = 3, w = 4 });\n\n            a.OnNext(10);\n            record.Values.Count.Is(1);\n\n            b.OnNext(20);\n            c.OnNext(30);\n            d.OnNext(40);\n\n            record.Values[1].Is(new { x = 10, y = 20, z = 30, w = 40 });\n\n            // complete\n            a.OnCompleted();\n            record.Notifications.Count.Is(2);\n\n            b.OnNext(200);\n            record.Notifications.Count.Is(3);\n            record.Notifications.Last().Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void WithLatestFrom()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var record = a.WithLatestFrom(b, (x, y) => new { x, y }).Record();\n\n            b.OnNext(0); // 50\n            b.OnNext(1); // 100\n            a.OnNext(0); // 140\n            b.OnNext(2); // 150\n            b.OnNext(3); // 200\n            b.OnNext(4); // 250\n            a.OnNext(1); // 280\n            b.OnNext(5); // 300\n            b.OnNext(6); // 350\n            b.OnNext(7); // 400\n            a.OnNext(2); // 420\n            b.OnNext(8); // 450\n            b.OnNext(9); // 500\n            b.OnNext(10); // 550\n            a.OnNext(3); // 600\n\n            record.Values.IsCollection(\n                new { x = 0, y = 1 },\n                new { x = 1, y = 4 },\n                new { x = 2, y = 7 },\n                new { x = 3, y = 10 });\n\n            a.OnCompleted();\n            record.Notifications.Last().Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void StartWith()\n        {\n            var seq = Observable.Range(1, 5);\n\n            seq.StartWith(100).ToArray().Wait().IsCollection(100, 1, 2, 3, 4, 5);\n            seq.StartWith(() => 100).ToArray().Wait().IsCollection(100, 1, 2, 3, 4, 5);\n            seq.StartWith(100, 1000, 10000).ToArray().Wait().IsCollection(100, 1000, 10000, 1, 2, 3, 4, 5);\n            seq.StartWith(Enumerable.Range(100, 3)).ToArray().Wait().IsCollection(100, 101, 102, 1, 2, 3, 4, 5);\n\n            seq.StartWith(Scheduler.ThreadPool, 100).ToArray().Wait().IsCollection(100, 1, 2, 3, 4, 5);\n            seq.StartWith(Scheduler.ThreadPool, 100, 1000, 10000).ToArray().Wait().IsCollection(100, 1000, 10000, 1, 2, 3, 4, 5);\n            seq.StartWith(Scheduler.ThreadPool, Enumerable.Range(100, 3)).ToArray().Wait().IsCollection(100, 101, 102, 1, 2, 3, 4, 5);\n        }\n\n        [TestMethod]\n        public void Merge()\n        {\n            var s1 = new Subject<int>();\n            var s2 = new Subject<int>();\n            var s3 = new Subject<int>();\n\n            var list = new List<int>();\n            var complete = false;\n            Observable.Merge(s1, s2, s3).Subscribe(list.Add, () => complete = true);\n\n            s1.OnNext(10);\n            s1.OnNext(20);\n            s3.OnNext(100);\n            s2.OnNext(50);\n\n            list.IsCollection(10, 20, 100, 50);\n\n            list.Clear();\n\n            s2.OnCompleted();\n\n            s3.OnNext(500);\n            complete.IsFalse();\n            s1.OnCompleted();\n            s3.OnCompleted();\n            complete.IsTrue();\n        }\n\n\n        [TestMethod]\n        public void MergeConcurrent()\n        {\n            var s1 = new Subject<int>();\n            var s2 = new Subject<int>();\n            var s3 = new Subject<int>();\n\n            var list = new List<int>();\n            var complete = false;\n            Observable.Merge(new[] { s1, s2, s3 }, maxConcurrent: 2).Subscribe(list.Add, () => complete = true);\n\n            s1.OnNext(10);\n            s1.OnNext(20);\n            s3.OnNext(100); // in queue\n            s2.OnNext(50);\n\n            list.IsCollection(10, 20, 50);\n\n            list.Clear();\n\n            s2.OnCompleted();\n\n            s3.OnNext(500); // dequeued\n            list.IsCollection(500);\n            complete.IsFalse();\n\n            s1.OnCompleted();\n            s3.OnCompleted();\n            complete.IsTrue();\n        }\n\n        [TestMethod]\n        public void Switch()\n        {\n            var source = new Subject<IObservable<int>>();\n\n            var list = new List<int>();\n            source.Switch().Subscribe(list.Add);\n\n            var s1 = new Subject<int>();\n            source.OnNext(s1);\n\n            s1.OnNext(100);\n            s1.OnNext(2000);\n\n            var s2 = new Subject<int>();\n            s1.HasObservers.IsTrue();\n            source.OnNext(s2);\n            s1.OnNext(3000); // do nothing\n            s1.HasObservers.IsFalse();\n\n            s2.OnNext(5000);\n\n            source.OnCompleted();\n\n            s2.OnNext(900000);\n\n            list.IsCollection(100, 2000, 5000, 900000);\n            s2.OnCompleted();\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/Observable.ConcurrencyTest.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class ObservableConcurrencyTest\n    {\n\n        [TestMethod]\n        public void ObserveOnTest()\n        {\n            var xs = Observable.Range(1, 10)\n                .ObserveOn(Scheduler.ThreadPool)\n                .ToArrayWait();\n\n            xs.OrderBy(x => x).IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n\n            var s = new Subject<int>();\n\n            var list = new List<Notification<int>>();\n            s.ObserveOn(Scheduler.Immediate).Materialize().Subscribe(list.Add);\n\n            s.OnError(new Exception());\n\n            list[0].Kind.Is(NotificationKind.OnError);\n\n            s = new Subject<int>();\n            s.ObserveOn(Scheduler.Immediate).Materialize().Subscribe(list.Add);\n\n            s.OnCompleted();\n            list[1].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void AmbTest()\n        {\n            var xs = Observable.Return(10).Delay(TimeSpan.FromSeconds(1)).Concat(Observable.Range(1, 3));\n\n            var xss = Observable.Return(10).Concat(Observable.Range(1, 3));\n            xss.ToArray().Wait();\n            xss.ToArray().Wait();\n            xss.ToArray().Wait();\n\n\n            var ys = Observable.Return(30).Delay(TimeSpan.FromSeconds(2)).Concat(Observable.Range(5, 3));\n\n            // win left\n            var result = xs.Amb(ys).ToArray().Wait();\n\n            result[0].Is(10);\n            result[1].Is(1);\n            result[2].Is(2);\n            result[3].Is(3);\n\n            // win right\n            result = ys.Amb(xs).ToArray().Wait();\n\n            result[0].Is(10);\n            result[1].Is(1);\n            result[2].Is(2);\n            result[3].Is(3);\n        }\n\n        [TestMethod]\n        public void AmbMultiTest()\n        {\n            var xs = Observable.Return(10).Delay(TimeSpan.FromSeconds(5)).Concat(Observable.Range(1, 3));\n            var ys = Observable.Return(30).Delay(TimeSpan.FromSeconds(1)).Concat(Observable.Range(5, 3));\n            var zs = Observable.Return(50).Delay(TimeSpan.FromSeconds(3)).Concat(Observable.Range(9, 3));\n\n            // win center\n            var result = Observable.Amb(xs, ys, zs).ToArray().Wait();\n\n            result[0].Is(30);\n            result[1].Is(5);\n            result[2].Is(6);\n            result[3].Is(7);\n\n            // win first\n            result = Observable.Amb(new[] { ys, xs, zs }.AsEnumerable()).ToArray().Wait();\n\n            result[0].Is(30);\n            result[1].Is(5);\n            result[2].Is(6);\n            result[3].Is(7);\n\n            // win last\n            result = Observable.Amb(new[] { zs, xs, ys }.AsEnumerable()).ToArray().Wait();\n\n            result[0].Is(30);\n            result[1].Is(5);\n            result[2].Is(6);\n            result[3].Is(7);\n        }\n    }\n}"
  },
  {
    "path": "Tests/UniRx.Tests/Observable.ErrorHandlingTest.cs",
    "content": "﻿using Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class ErrorHandlingTest\n    {\n        [TestMethod]\n        public void Finally()\n        {\n            var called = false;\n            try\n            {\n                Observable.Range(1, 10, Scheduler.Immediate)\n                    .Do(x => { throw new Exception(); })\n                    .Finally(() => called = true)\n                    .Subscribe();\n            }\n            catch\n            {\n            }\n            finally\n            {\n                called.IsTrue();\n            }\n        }\n\n        [TestMethod]\n        public void Catch()\n        {\n            var xs = Observable.Return(2, Scheduler.ThreadPool).Concat(Observable.Throw<int>(new InvalidOperationException()))\n                .Catch((InvalidOperationException ex) =>\n                {\n                    return Observable.Range(1, 3);\n                })\n                .ToArrayWait();\n\n            xs.IsCollection(2, 1, 2, 3);\n        }\n\n        [TestMethod]\n        public void CatchEnumerable()\n        {\n            {\n                var xs = new[]\n                {\n                    Observable.Return(2).Concat(Observable.Throw<int>(new Exception())),\n                    Observable.Return(99).Concat(Observable.Throw<int>(new Exception())),\n                    Observable.Range(10,2)\n                }\n                .Catch()\n                .Materialize()\n                .ToArrayWait();\n\n                xs[0].Value.Is(2);\n                xs[1].Value.Is(99);\n                xs[2].Value.Is(10);\n                xs[3].Value.Is(11);\n                xs[4].Kind.Is(NotificationKind.OnCompleted);\n            }\n            {\n                var xs = new[]\n                {\n                    Observable.Return(2).Concat(Observable.Throw<int>(new Exception())),\n                    Observable.Return(99).Concat(Observable.Throw<int>(new Exception()))\n                }\n                .Catch()\n                .Materialize()\n                .ToArrayWait();\n\n                xs[0].Value.Is(2);\n                xs[1].Value.Is(99);\n                xs[2].Kind.Is(NotificationKind.OnError);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/Observable.Events.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class ObservableEventsTest\n    {\n        class EventTestesr\n        {\n            public event EventHandler Event1;\n            public event EventHandler<MyEventArgs> Event2;\n            public event MyEventHandler Event3;\n            public event Action Event4;\n            public event Action<int> Event5;\n            public event Action<int, string> Event6;\n\n            public void Fire(int num)\n            {\n                switch (num)\n                {\n                    case 1:\n                        if (Event1 == null) return;\n                        Event1(this, new EventArgs());\n                        break;\n                    case 2:\n                        if (Event2 == null) return;\n                        Event2(this, new MyEventArgs());\n                        break;\n                    case 3:\n                        if (Event3 == null) return;\n                        Event3(this, new MyEventArgs());\n                        break;\n                    case 4:\n                        if (Event4 == null) return;\n                        Event4();\n                        break;\n                    case 5:\n                        if (Event5 == null) return;\n                        Event5(100);\n                        break;\n                    case 6:\n                        if (Event6 == null) return;\n                        Event6(100, \"hogehoge\");\n                        break;\n                    default:\n                        break;\n                }\n            }\n        }\n\n        delegate void MyEventHandler(object sender, MyEventArgs eventArgs);\n\n        class MyEventArgs : EventArgs\n        {\n\n        }\n\n\n        [TestMethod]\n        public void FromEventPattern()\n        {\n            var test = new EventTestesr();\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEventPattern<EventHandler, EventArgs>(\n                    h => h.Invoke,\n                    h => test.Event1 += h, h => test.Event1 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(1);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(1);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEventPattern<EventHandler<MyEventArgs>, MyEventArgs>(\n                    h => h.Invoke,\n                    h => test.Event2 += h, h => test.Event2 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(2);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(2);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEventPattern<MyEventHandler, MyEventArgs>(\n                    h => h.Invoke,\n                    h => test.Event3 += h, h => test.Event3 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(3);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(3);\n                isRaised.IsFalse();\n            }\n        }\n\n        [TestMethod]\n        public void FromEvent()\n        {\n            var test = new EventTestesr();\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<EventHandler, EventArgs>(\n                    h => (sender, e) => h.Invoke(e),\n                    h => test.Event1 += h, h => test.Event1 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(1);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(1);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<EventHandler<MyEventArgs>, MyEventArgs>(\n                    h => (sender, e) => h.Invoke(e),\n                    h => test.Event2 += h, h => test.Event2 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(2);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(2);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<MyEventHandler, MyEventArgs>(\n                    h => (sender, e) => h.Invoke(e),\n                    h => test.Event3 += h, h => test.Event3 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(3);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(3);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<Action, Unit>(\n                    h => () => h(Unit.Default),\n                    h => test.Event4 += h, h => test.Event4 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(4);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(4);\n                isRaised.IsFalse();\n            }\n\n            // shortcut\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent(\n                    h => test.Event4 += h, h => test.Event4 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(4);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(4);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<Action<int>, int>(\n                    h => h,\n                    h => test.Event5 += h, h => test.Event5 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(5);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(5);\n                isRaised.IsFalse();\n            }\n\n            // shortcut\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<int>(\n                    h => test.Event5 += h, h => test.Event5 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(5);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(5);\n                isRaised.IsFalse();\n            }\n\n            {\n                var isRaised = false;\n                var d = Observable.FromEvent<Action<int, string>, Tuple<int, string>>(\n                    h => (x, y) => h(Tuple.Create(x, y)),\n                    h => test.Event6 += h, h => test.Event6 -= h)\n                    .Subscribe(x => isRaised = true);\n                test.Fire(6);\n                isRaised.IsTrue();\n                isRaised = false;\n                d.Dispose();\n                test.Fire(6);\n                isRaised.IsFalse();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Tests/UniRx.Tests/Observable.GeneratorTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class ObservableGeneratorTest\n    {\n        [TestMethod]\n        public void Empty()\n        {\n            var material = Observable.Empty<Unit>().Materialize().ToArray().Wait();\n            material.IsCollection(Notification.CreateOnCompleted<Unit>());\n        }\n\n        [TestMethod]\n        public void Never()\n        {\n            AssertEx.Catch<TimeoutException>(() =>\n                Observable.Never<Unit>().Materialize().ToArray().Wait(TimeSpan.FromMilliseconds(10)));\n        }\n\n        [TestMethod]\n        public void Return()\n        {\n            Observable.Return(100).Materialize().ToArray().Wait().IsCollection(Notification.CreateOnNext(100), Notification.CreateOnCompleted<int>());\n        }\n\n        [TestMethod]\n        public void Range()\n        {\n            Observable.Range(1, 5).ToArray().Wait().IsCollection(1, 2, 3, 4, 5);\n        }\n\n        [TestMethod]\n        public void Repeat()\n        {\n            var xs = Observable.Range(1, 3, Scheduler.CurrentThread)\n                .Concat(Observable.Return(100))\n                .Repeat()\n                .Take(10)\n                .ToArray()\n                .Wait();\n            xs.IsCollection(1, 2, 3, 100, 1, 2, 3, 100, 1, 2);\n            Observable.Repeat(100).Take(5).ToArray().Wait().IsCollection(100, 100, 100, 100, 100);\n        }\n\n        [TestMethod]\n        public void Repeat2()\n        {\n            Observable.Repeat(\"a\", 5, Scheduler.Immediate).ToArrayWait().IsCollection(\"a\", \"a\", \"a\", \"a\", \"a\");\n        }\n\n        [TestMethod]\n        public void RepeatStatic()\n        {\n            var xss = Observable.Repeat(5, 3).ToArray().Wait();\n            xss.IsCollection(5, 5, 5);\n        }\n\n        [TestMethod]\n        public void ToObservable()\n        {\n            {\n                var msgs = new List<string>();\n                new[] { 1, 10, 100, 1000, 10000, 20000 }.ToObservable(Scheduler.CurrentThread)\n                    .Do(i => msgs.Add(\"DO:\" + i))\n                    .Scan((x, y) =>\n                    {\n                        if (y == 100) throw new Exception(\"exception\");\n                        msgs.Add(\"x:\" + x + \" y:\" + y);\n                        return x + y;\n                    })\n                    .Subscribe(x => msgs.Add(x.ToString()), e => msgs.Add(e.Message), () => msgs.Add(\"comp\"));\n\n                msgs.IsCollection(\"DO:1\", \"1\", \"DO:10\", \"x:1 y:10\", \"11\", \"DO:100\", \"exception\");\n            }\n\n            {\n                var msgs = new List<string>();\n                new[] { 1, 10, 100, 1000, 10000, 20000 }.ToObservable(Scheduler.Immediate)\n                    .Do(i => msgs.Add(\"DO:\" + i))\n                    .Scan((x, y) =>\n                    {\n                        if (y == 100) throw new Exception(\"exception\");\n                        msgs.Add(\"x:\" + x + \" y:\" + y);\n                        return x + y;\n                    })\n                    .Subscribe(x => msgs.Add(x.ToString()), e => msgs.Add(e.Message), () => msgs.Add(\"comp\"));\n\n                msgs.IsCollection(\"DO:1\", \"1\", \"DO:10\", \"x:1 y:10\", \"11\", \"DO:100\", \"exception\",\n                    \"DO:1000\", \"x:11 y:1000\",\n                    \"DO:10000\", \"x:1011 y:10000\",\n                    \"DO:20000\", \"x:11011 y:20000\"\n                    );\n            }\n        }\n\n        [TestMethod]\n        public void Throw()\n        {\n            var ex = new Exception();\n            Observable.Throw<string>(ex).Materialize().ToArray().Wait().IsCollection(Notification.CreateOnError<string>(ex));\n        }\n\n        [TestMethod]\n        public void OptimizeReturnTest()\n        {\n            for (int i = -1; i <= 9; i++)\n            {\n                var r = Observable.Return(i);\n                var xs = r.Record();\n                xs.Values[0].Is(i);\n                r.GetType().FullName.Contains(\"ImmutableReturnInt32Observable\").IsTrue();\n            }\n            foreach (var i in new[] { -2, 10, 100 })\n            {\n                var r = Observable.Return(i);\n                r.Record().Values[0].Is(i);\n                r.GetType().FullName.Contains(\"ImmediateReturnObservable\").IsTrue();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/Observable.PagingTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\nusing UniRx;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class ObservablePagingTest\n    {\n        [TestMethod]\n        public void Buffer()\n        {\n            var xs = Observable.Range(1, 10)\n                .Buffer(3)\n                .ToArray()\n                .Wait();\n            xs[0].IsCollection(1, 2, 3);\n            xs[1].IsCollection(4, 5, 6);\n            xs[2].IsCollection(7, 8, 9);\n            xs[3].IsCollection(10);\n        }\n\n        [TestMethod]\n        public void BufferTime()\n        {\n            var hoge = Observable.Return(1000).Delay(TimeSpan.FromSeconds(4));\n\n            var xs = Observable.Range(1, 10)\n                .Concat(hoge)\n                .Buffer(TimeSpan.FromSeconds(3))\n                .ToArray()\n                .Wait();\n\n            xs[0].IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n            xs[1].IsCollection(1000);\n        }\n\n        [TestMethod]\n        public void BufferTimeEmptyBuffer()\n        {\n            var xs = Observable.Return(10).Delay(TimeSpan.FromMilliseconds(3500))\n                .Buffer(TimeSpan.FromSeconds(1))\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(4);\n            xs[0].Count.Is(0); // 1sec\n            xs[1].Count.Is(0); // 2sec\n            xs[2].Count.Is(0); // 3sec\n            xs[3].Count.Is(1); // 4sec\n        }\n\n        [TestMethod]\n        public void BufferTimeComplete()\n        {\n            // when complete, return empty array.\n            var xs = Observable.Return(1).Delay(TimeSpan.FromSeconds(2))\n                .Concat(Observable.Return(1).Delay(TimeSpan.FromSeconds(2)).Skip(1))\n                .Buffer(TimeSpan.FromSeconds(3))\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(2);\n            xs[0].Count.Is(1);\n            xs[1].Count.Is(0);\n        }\n\n        [TestMethod]\n        public void BufferTimeEmptyComplete()\n        {\n            var xs = Observable.Empty<int>()\n                .Buffer(TimeSpan.FromSeconds(1000))\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(1);\n        }\n\n        [TestMethod]\n        public void BufferEmpty()\n        {\n            var xs = Observable.Empty<int>()\n                .Buffer(10)\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(0);\n        }\n\n\n        [TestMethod]\n        public void BufferComplete2()\n        {\n            var xs = Observable.Range(1, 2)\n                .Buffer(2)\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(1);\n            xs[0].IsCollection(1, 2);\n        }\n\n        [TestMethod]\n        public void Buffer3()\n        {\n            var xs = Observable.Empty<int>()\n                .Buffer(1, 2)\n                .ToArray()\n                .Wait();\n\n            xs.Length.Is(0);\n        }\n\n        [TestMethod]\n        public void BufferSkip()\n        {\n            // count > skip\n            {\n                var xs = Observable.Range(1, 10).Buffer(3, 1)\n                    .ToArray()\n                    .Wait();\n\n                xs[0].IsCollection(1, 2, 3);\n                xs[1].IsCollection(2, 3, 4);\n                xs[2].IsCollection(3, 4, 5);\n                xs[3].IsCollection(4, 5, 6);\n                xs[4].IsCollection(5, 6, 7);\n                xs[5].IsCollection(6, 7, 8);\n                xs[6].IsCollection(7, 8, 9);\n                xs[7].IsCollection(8, 9, 10);\n                xs[8].IsCollection(9, 10);\n                xs[9].IsCollection(10);\n            }\n\n            // count == skip\n            {\n                var xs = Observable.Range(1, 10).Buffer(3, 3)\n                    .ToArray()\n                    .Wait();\n\n                xs[0].IsCollection(1, 2, 3);\n                xs[1].IsCollection(4, 5, 6);\n                xs[2].IsCollection(7, 8, 9);\n                xs[3].IsCollection(10);\n            }\n\n            // count < skip\n            {\n                var xs = Observable.Range(1, 20).Buffer(3, 5)\n                    .ToArray()\n                    .Wait();\n\n                xs[0].IsCollection(1, 2, 3);\n                xs[1].IsCollection(6, 7, 8);\n                xs[2].IsCollection(11, 12, 13);\n                xs[3].IsCollection(16, 17, 18);\n            }\n        }\n\n        [TestMethod]\n        public void BufferTimeAndCount()\n        {\n            // time...count...complete\n            {\n                var xs = Observable.Return(1000)\n                    .Concat(Observable.Return(99).Delay(TimeSpan.FromMilliseconds(1500)))\n                    .Concat(Observable.Range(1, 7))\n                    .Buffer(TimeSpan.FromSeconds(1), 5)\n                    .ToArray()\n                    .Wait();\n\n                xs.Length.Is(3);\n                xs[0].IsCollection(1000); // 1sec\n                xs[1].IsCollection(99, 1, 2, 3, 4); // 1.5sec -> buffer\n                xs[2].IsCollection(5, 6, 7); // next 1sec\n            }\n            // time...count...time\n            {\n                var xs = Observable.Return(1000)\n                    .Concat(Observable.Return(99).Delay(TimeSpan.FromMilliseconds(1500)))\n                    .Concat(Observable.Range(1, 7))\n                    .Concat(Observable.Never<int>())\n                    .Buffer(TimeSpan.FromSeconds(1), 5)\n                    .Take(3)\n                    .ToArray()\n                    .Wait();\n\n                xs.Length.Is(3);\n                xs[0].IsCollection(1000); // 1sec\n                xs[1].IsCollection(99, 1, 2, 3, 4); // 1.5sec -> buffer\n                xs[2].IsCollection(5, 6, 7); // next 1sec\n            }\n            // time(before is canceled)\n            {\n                var start = DateTime.Now;\n                var result = Observable.Return(10).Delay(TimeSpan.FromSeconds(2))\n                    .Concat(Observable.Range(1, 2))\n                    .Concat(Observable.Return(1000).Delay(TimeSpan.FromSeconds(2)))\n                    .Concat(Observable.Never<int>())\n                    .Buffer(TimeSpan.FromSeconds(3), 3)\n                    .Take(2)\n                    .Select(xs =>\n                    {\n                        var currentSpan = DateTime.Now - start;\n                        return new { currentSpan, xs };\n                    })\n                    .ToArray()\n                    .Wait();\n\n                // after 2 seconds, buffer is flush by count\n                result[0].xs.IsCollection(10, 1, 2);\n                result[0].currentSpan.Is(x => TimeSpan.FromMilliseconds(1800) <= x && x <= TimeSpan.FromMilliseconds(2200));\n\n                // after 3 seconds, buffer is flush by time\n                result[1].xs.IsCollection(1000);\n                result[1].currentSpan.Is(x => TimeSpan.FromMilliseconds(4800) <= x && x <= TimeSpan.FromMilliseconds(5200));\n            }\n        }\n\n        [TestMethod]\n        public void BufferTimeAndCountTimeSide()\n        {\n            var subject = new Subject<int>();\n            var record = subject.Buffer(TimeSpan.FromMilliseconds(100), 100).Take(5).Record();\n\n            Thread.Sleep(TimeSpan.FromSeconds(2));\n\n            record.Values.Count.Is(5);\n        }\n\n        [TestMethod]\n        public void BufferWindowBoundaries()\n        {\n            var subject = new Subject<int>();\n            var boundaries = new Subject<int>();\n\n            var record = subject.Buffer(boundaries).Record();\n\n            subject.OnNext(1);\n            subject.OnNext(2);\n            record.Values.Count.Is(0);\n\n            boundaries.OnNext(0);\n            record.Values.Count.Is(1);\n            record.Values[0].IsCollection(1, 2);\n\n            boundaries.OnNext(0);\n            record.Values.Count.Is(2);\n            record.Values[1].Count.Is(0);\n        }\n\n        [TestMethod]\n        public void First()\n        {\n            var s = new Subject<int>();\n\n            var l = new List<Notification<int>>();\n            {\n                s.First().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First().Materialize().Subscribe(l.Add);\n\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnError(new Exception());\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnNext(10);\n                s.OnError(new Exception());\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.First(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnCompleted();\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [TestMethod]\n        public void FirstOrDefault()\n        {\n            var s = new Subject<int>();\n\n            var l = new List<Notification<int>>();\n            {\n                s.FirstOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnNext(10);\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.FirstOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [TestMethod]\n        public void Last()\n        {\n            var s = new Subject<int>();\n            var l = new List<Notification<int>>();\n            {\n                s.Last().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnCompleted();\n\n                l[0].Value.Is(30);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Last().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Last().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.Last(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(5);\n                s.OnNext(20);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(20);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Last(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(5);\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Last(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(5);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [TestMethod]\n        public void LastOrDefault()\n        {\n            var s = new Subject<int>();\n\n            var l = new List<Notification<int>>();\n            {\n                s.LastOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnCompleted();\n\n                l[0].Value.Is(30);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.LastOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.LastOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.LastOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.LastOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(5);\n                s.OnNext(20);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(20);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.LastOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(5);\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [TestMethod]\n        public void Single()\n        {\n            var s = new Subject<int>();\n            var l = new List<Notification<int>>();\n            {\n                s.Single().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single().Materialize().Subscribe(l.Add);\n\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnNext(10);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(10);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.Single(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n        }\n\n        [TestMethod]\n        public void SingleOrDefault()\n        {\n            var s = new Subject<int>();\n\n            var l = new List<Notification<int>>();\n            {\n                s.SingleOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault().Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnNext(10);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l = new List<Notification<int>>();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(10);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(10);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(20);\n                s.OnNext(30);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnNext(10);\n                s.OnError(new Exception());\n\n                l[0].Kind.Is(NotificationKind.OnError);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n\n            s = new Subject<int>();\n            l.Clear();\n            {\n                s.SingleOrDefault(x => x % 2 == 0).Materialize().Subscribe(l.Add);\n                s.OnNext(9);\n                s.OnCompleted();\n\n                l[0].Value.Is(0);\n                l[1].Kind.Is(NotificationKind.OnCompleted);\n            }\n        }\n\n        [TestMethod]\n        public void TakeWhile()\n        {\n            Observable.Range(1, 10)\n                .TakeWhile(x => x <= 5)\n                .ToArray()\n                .Wait()\n                .IsCollection(1, 2, 3, 4, 5);\n        }\n\n        [TestMethod]\n        public void TakeUntil()\n        {\n            {\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n\n                var l = new List<Notification<int>>();\n\n                a.TakeUntil(b).Materialize().Subscribe(l.Add);\n\n                a.OnNext(1);\n                a.OnNext(10);\n                b.OnNext(1000);\n                l.Count.Is(3);\n                l[0].Value.Is(1);\n                l[1].Value.Is(10);\n                l[2].Kind.Is(NotificationKind.OnCompleted);\n            }\n            {\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n\n                var l = new List<Notification<int>>();\n\n                a.TakeUntil(b).Materialize().Subscribe(l.Add);\n\n                a.OnNext(1);\n                a.OnNext(10);\n                b.OnCompleted();\n                l.Count.Is(2);\n\n                b.OnNext(1000);\n                l.Count.Is(2);\n\n                a.OnNext(100);\n                l.Count.Is(3);\n                l[0].Value.Is(1);\n                l[1].Value.Is(10);\n                l[2].Value.Is(100);\n            }\n        }\n\n\n\n        [TestMethod]\n        public void Skip()\n        {\n            Observable.Range(1, 10)\n                .Skip(3)\n                .ToArray()\n                .Wait()\n                .IsCollection(4, 5, 6, 7, 8, 9, 10);\n\n            {\n                var range = Observable.Range(1, 10);\n\n                AssertEx.Throws<ArgumentOutOfRangeException>(() => range.Skip(-1));\n\n                range.Skip(10).ToArray().Wait().Length.Is(0);\n\n                range.Skip(3).ToArrayWait().IsCollection(4, 5, 6, 7, 8, 9, 10);\n                range.Skip(3).Skip(2).ToArrayWait().IsCollection(6, 7, 8, 9, 10);\n            }\n        }\n\n        [TestMethod]\n        public void SkipTime()\n        {\n            {\n                var now = DateTime.Now;\n                var timer = Observable.Timer(TimeSpan.FromSeconds(0), TimeSpan.FromMilliseconds(10))\n                    .Timestamp();\n\n                var v = timer.Skip(TimeSpan.FromMilliseconds(300))\n                    .First()\n                    .Wait();\n\n                (v.Timestamp - now).Is(x => (TimeSpan.FromMilliseconds(250) <= x && x <= TimeSpan.FromMilliseconds(350)));\n            }\n\n            {\n                var now = DateTime.Now;\n                var timer = Observable.Timer(TimeSpan.FromSeconds(0), TimeSpan.FromMilliseconds(10))\n                    .Timestamp();\n\n                var v = timer\n                    .Skip(TimeSpan.FromMilliseconds(100))\n                    .Skip(TimeSpan.FromMilliseconds(300))\n                    .First()\n                    .Wait();\n\n                (v.Timestamp - now).Is(x => (TimeSpan.FromMilliseconds(250) <= x && x <= TimeSpan.FromMilliseconds(350)));\n            }\n        }\n\n        [TestMethod]\n        public void SkipWhile()\n        {\n            Observable.Range(1, 10)\n                .SkipWhile(x => x <= 5)\n                .ToArray()\n                .Wait()\n                .IsCollection(6, 7, 8, 9, 10);\n        }\n\n        [TestMethod]\n        public void SkipWhileIndex()\n        {\n            Observable.Range(1, 10)\n                .SkipWhile((x, i) => i <= 5)\n                .ToArray()\n                .Wait()\n                .IsCollection(7, 8, 9, 10);\n        }\n\n\n        [TestMethod]\n        public void SkipUntil()\n        {\n            {\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n\n                var l = new List<Notification<int>>();\n\n                a.SkipUntil(b).Materialize().Subscribe(l.Add);\n\n                a.OnNext(1);\n                a.OnNext(10);\n                b.OnNext(1000);\n\n                l.Count.Is(0);\n\n                b.OnNext(99999);\n                b.HasObservers.IsFalse();\n\n                a.OnNext(1);\n                a.OnNext(10);\n\n                l[0].Value.Is(1);\n                l[1].Value.Is(10);\n            }\n            {\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n\n                var l = new List<Notification<int>>();\n\n                a.SkipUntil(b).Materialize().Subscribe(l.Add);\n\n                a.OnNext(1);\n                a.OnNext(10);\n                b.OnCompleted();\n                l.Count.Is(0);\n\n                a.OnNext(100);\n                l.Count.Is(0);\n            }\n        }\n\n        [TestMethod]\n        public void Pairwise()\n        {\n            var xs = Observable.Range(1, 5).Pairwise((x, y) => x + \":\" + y).ToArrayWait();\n            xs.IsCollection(\"1:2\", \"2:3\", \"3:4\", \"4:5\");\n        }\n\n        [TestMethod]\n        public void Pairwise2()\n        {\n            var xs = Observable.Range(1, 5).Pairwise().ToArrayWait();\n            xs[0].Previous.Is(1); xs[0].Current.Is(2);\n            xs[1].Previous.Is(2); xs[1].Current.Is(3);\n            xs[2].Previous.Is(3); xs[2].Current.Is(4);\n            xs[3].Previous.Is(4); xs[3].Current.Is(5);\n        }\n\n        [TestMethod]\n        public void TakeLast()\n        {\n            var record = Observable.Range(1, 2).TakeLast(3).Record();\n            record.Values.IsCollection(1, 2);\n\n            record = Observable.Range(1, 3).TakeLast(3).Record();\n            record.Values.IsCollection(1, 2, 3);\n\n            record = Observable.Range(1, 4).TakeLast(3).Record();\n            record.Values.IsCollection(2, 3, 4);\n\n            record = Observable.Range(1, 10).TakeLast(3).Record();\n            record.Values.IsCollection(8, 9, 10);\n\n            record = Observable.Empty<int>().TakeLast(3).Record();\n            record.Notifications[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void TakeLastDuration()\n        {\n            var subject = new Subject<long>();\n\n            var record = subject.Record();\n            subject.OnCompleted();\n            record.Notifications[0].Kind.Is(NotificationKind.OnCompleted);\n\n            // 0, 200, 400, 600, 800\n            var data = Observable.Timer(TimeSpan.Zero, TimeSpan.FromMilliseconds(200))\n                .Take(5)\n                .TakeLast(TimeSpan.FromMilliseconds(250))\n                .ToArrayWait();\n\n            data.IsCollection(3, 4);\n        }\n\n        [TestMethod]\n        public void GroupBy()\n        {\n            var subject = new Subject<int>();\n\n            RecordObserver<int> a = null;\n            RecordObserver<int> b = null;\n            RecordObserver<int> c = null;\n            subject.GroupBy(x => x % 3)\n                .Subscribe(x =>\n                {\n                    if (x.Key == 0)\n                    {\n                        a = x.Record();\n                    }\n                    else if (x.Key == 1)\n                    {\n                        b = x.Record();\n                    }\n                    else if (x.Key == 2)\n                    {\n                        c = x.Record();\n                    }\n                });\n\n            subject.OnNext(99);\n            subject.OnNext(100);\n            subject.OnNext(101);\n\n            subject.OnNext(0);\n            subject.OnNext(1);\n            subject.OnNext(2);\n\n            a.Values.IsCollection(99, 0);\n            b.Values.IsCollection(100, 1);\n            c.Values.IsCollection(101, 2);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/Observable.TimeTest.cs",
    "content": "﻿using System;\r\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\r\nusing System.Collections.Generic;\r\n\r\nnamespace UniRx.Tests\r\n{\r\n    [TestClass]\r\n    public class ObservableTimeTest\r\n    {\r\n        [TestMethod]\r\n        public void TimerTest()\r\n        {\r\n            // periodic(Observable.Interval)\r\n            {\r\n                var now = Scheduler.ThreadPool.Now;\r\n                var xs = Observable.Timer(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1))\r\n                    .Take(3)\r\n                    .Timestamp()\r\n                    .ToArray()\r\n                    .Wait();\r\n\r\n                xs[0].Value.Is(0L);\r\n                (now.AddMilliseconds(800) <= xs[0].Timestamp && xs[0].Timestamp <= now.AddMilliseconds(1200)).IsTrue();\r\n\r\n                xs[1].Value.Is(1L);\r\n                (now.AddMilliseconds(1800) <= xs[1].Timestamp && xs[1].Timestamp <= now.AddMilliseconds(2200)).IsTrue();\r\n\r\n                xs[2].Value.Is(2L);\r\n                (now.AddMilliseconds(2800) <= xs[2].Timestamp && xs[2].Timestamp <= now.AddMilliseconds(3200)).IsTrue();\r\n            }\r\n\r\n            // dueTime + periodic\r\n            {\r\n                var now = Scheduler.ThreadPool.Now;\r\n                var xs = Observable.Timer(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(1))\r\n                    .Take(3)\r\n                    .Timestamp()\r\n                    .Select(x => Math.Round((x.Timestamp - now).TotalSeconds, 0))\r\n                    .ToArray()\r\n                    .Wait();\r\n\r\n                xs[0].Is(2);\r\n                xs[1].Is(3);\r\n                xs[2].Is(4);\r\n            }\r\n\r\n            // dueTime(DateTimeOffset)\r\n            {\r\n                var now = Scheduler.ThreadPool.Now;\r\n                var xs = Observable.Timer(now.AddSeconds(2), TimeSpan.FromSeconds(1))\r\n                    .Take(3)\r\n                    .Timestamp()\r\n                    .Select(x => Math.Round((x.Timestamp - now).TotalSeconds, 0))\r\n                    .ToArray()\r\n                    .Wait();\r\n\r\n                xs[0].Is(2);\r\n                xs[1].Is(3);\r\n                xs[2].Is(4);\r\n            }\r\n\r\n            // onetime\r\n            {\r\n                var now = Scheduler.ThreadPool.Now;\r\n                var xs = Observable.Timer(TimeSpan.FromSeconds(2))\r\n                    .Timestamp()\r\n                    .Select(x => Math.Round((x.Timestamp - now).TotalSeconds, 0))\r\n                    .ToArray()\r\n                    .Wait();\r\n\r\n                xs[0].Is(2);\r\n            }\r\n\r\n            // non periodic scheduler\r\n            {\r\n                var now = Scheduler.CurrentThread.Now;\r\n                var xs = Observable.Timer(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(1), Scheduler.CurrentThread)\r\n                    .Take(3)\r\n                    .Timestamp()\r\n                    .Select(x => Math.Round((x.Timestamp - now).TotalSeconds, 0))\r\n                    .ToArray()\r\n                    .Wait();\r\n\r\n                xs[0].Is(2);\r\n                xs[1].Is(3);\r\n                xs[2].Is(4);\r\n            }\r\n        }\r\n\r\n        [TestMethod]\r\n        public void DelayTest()\r\n        {\r\n            var now = Scheduler.ThreadPool.Now;\r\n\r\n            var xs = Observable.Range(1, 3)\r\n                .Delay(TimeSpan.FromSeconds(1))\r\n                .Timestamp()\r\n                .ToArray()\r\n                .Wait();\r\n\r\n            xs[0].Value.Is(1);\r\n            (now.AddMilliseconds(800) <= xs[0].Timestamp && xs[0].Timestamp <= now.AddMilliseconds(1200)).IsTrue();\r\n\r\n            xs[1].Value.Is(2);\r\n            (now.AddMilliseconds(800) <= xs[1].Timestamp && xs[1].Timestamp <= now.AddMilliseconds(1200)).IsTrue();\r\n\r\n            xs[2].Value.Is(3);\r\n            (now.AddMilliseconds(800) <= xs[2].Timestamp && xs[2].Timestamp <= now.AddMilliseconds(1200)).IsTrue();\r\n        }\r\n\r\n        [TestMethod]\r\n        public void SampleTest()\r\n        {\r\n            // 2400, 4800, 7200, 9600\r\n            var xs = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1))\r\n                .Take(10)\r\n                .Sample(TimeSpan.FromMilliseconds(2400), Scheduler.CurrentThread)\r\n                .Timestamp()\r\n                .ToArray()\r\n                .Wait();\r\n\r\n            xs[0].Value.Is(2);\r\n            xs[1].Value.Is(4);\r\n            xs[2].Value.Is(7);\r\n            xs[3].Value.Is(9);\r\n        }\r\n\r\n        [TestMethod]\r\n        public void TimeoutTest()\r\n        {\r\n            var xs = Observable.Concat(\r\n                    Observable.Return(1).Delay(TimeSpan.FromSeconds(1)),\r\n                    Observable.Return(5).Delay(TimeSpan.FromSeconds(2)),\r\n                    Observable.Return(9).Delay(TimeSpan.FromSeconds(3))\r\n                )\r\n                .Timestamp()\r\n                .Timeout(TimeSpan.FromMilliseconds(1500))\r\n                .Materialize()\r\n                .ToArray()\r\n                .Wait();\r\n\r\n            xs.Length.Is(2);\r\n            xs[0].Value.Value.Is(1);\r\n            xs[1].Exception.IsInstanceOf<TimeoutException>();\r\n        }\r\n\r\n        [TestMethod]\r\n        public void TimeoutTestOffset()\r\n        {\r\n            var now = Scheduler.ThreadPool.Now;\r\n            var xs = Observable.Concat(\r\n                    Observable.Return(1).Delay(TimeSpan.FromSeconds(1)),\r\n                    Observable.Return(5).Delay(TimeSpan.FromSeconds(2)),\r\n                    Observable.Return(9).Delay(TimeSpan.FromSeconds(3))\r\n                )\r\n                .Timestamp()\r\n                .Timeout(now.AddMilliseconds(3500))\r\n                .Materialize()\r\n                .ToArray()\r\n                .Wait();\r\n\r\n            xs.Length.Is(3);\r\n            xs[0].Value.Value.Is(1);\r\n            xs[1].Value.Value.Is(5);\r\n            xs[2].Exception.IsInstanceOf<TimeoutException>();\r\n        }\r\n\r\n        [TestMethod]\r\n        public void ThrottleTest()\r\n        {\r\n            var xs = Observable.Concat(\r\n                    Observable.Return(1).Delay(TimeSpan.FromSeconds(1)),\r\n                    Observable.Return(2).Delay(TimeSpan.FromSeconds(2)),\r\n                    Observable.Return(3).Delay(TimeSpan.FromSeconds(2)),\r\n                    Observable.Return(4).Delay(TimeSpan.FromSeconds(2)),\r\n                    Observable.Return(5).Delay(TimeSpan.FromSeconds(2)),\r\n                    Observable.Return(6).Delay(TimeSpan.FromSeconds(3)), // over 2500\r\n                    Observable.Return(7).Delay(TimeSpan.FromSeconds(1)),\r\n                    Observable.Return(8).Delay(TimeSpan.FromSeconds(1)) // with onCompleted\r\n                )\r\n                .Timestamp()\r\n                .Throttle(TimeSpan.FromMilliseconds(2500))\r\n                .Materialize()\r\n                .ToArray()\r\n                .Wait();\r\n\r\n            xs.Length.Is(3);\r\n            xs[0].Value.Value.Is(5);\r\n            xs[1].Value.Value.Is(8);\r\n            xs[2].Kind.Is(NotificationKind.OnCompleted);\r\n        }\r\n\r\n        [TestMethod]\r\n        public void ThrottleFirstTest()\r\n        {\r\n            var xs = Observable.Concat(\r\n                    Observable.Return(1),\r\n                    Observable.Return(2).Delay(TimeSpan.FromSeconds(1)),\r\n                    Observable.Return(3).Delay(TimeSpan.FromSeconds(1)),\r\n                    Observable.Return(4).Delay(TimeSpan.FromSeconds(0.4)),\r\n                    Observable.Return(5).Delay(TimeSpan.FromSeconds(0.2)), // over 2500\r\n                    Observable.Return(6).Delay(TimeSpan.FromSeconds(1)),\r\n                    Observable.Return(7).Delay(TimeSpan.FromSeconds(1)),\r\n                    Observable.Return(8).Delay(TimeSpan.FromSeconds(1)), // over 2500\r\n                    Observable.Return(9) // withCompleted\r\n                )\r\n                .Timestamp()\r\n                .ThrottleFirst(TimeSpan.FromMilliseconds(2500))\r\n                .Materialize()\r\n                .ToArray()\r\n                .Wait();\r\n\r\n            xs.Length.Is(4);\r\n            xs[0].Value.Value.Is(1);\r\n            xs[1].Value.Value.Is(5);\r\n            xs[2].Value.Value.Is(8);\r\n            xs[3].Kind.Is(NotificationKind.OnCompleted);\r\n        }\r\n\r\n        [TestMethod]\r\n        public void Timestamp()\r\n        {\r\n            var xs = Observable.Concat(\r\n                Observable.Return(1),\r\n                Observable.Return(2).Delay(TimeSpan.FromSeconds(1)),\r\n                Observable.Return(3).Delay(TimeSpan.FromSeconds(1)),\r\n                Observable.Return(4).Delay(TimeSpan.FromSeconds(0.4)),\r\n                Observable.Return(5).Delay(TimeSpan.FromSeconds(0.2)) // over 2500\r\n            ).Timestamp()\r\n            .ToArray()\r\n            .Wait();\r\n\r\n            var now = DateTime.Now;\r\n\r\n            xs[0].Value.Is(1); (now - xs[0].Timestamp).TotalSeconds.Is(x => 2.5 <= x && x <= 3.0);\r\n            xs[1].Value.Is(2); (now - xs[1].Timestamp).TotalSeconds.Is(x => 1.4 <= x && x <= 1.8);\r\n            xs[2].Value.Is(3); (now - xs[2].Timestamp).TotalSeconds.Is(x => 0.5 <= x && x <= 0.8);\r\n            xs[3].Value.Is(4); (now - xs[3].Timestamp).TotalSeconds.Is(x => 0.18 <= x && x <= 0.3);\r\n            xs[4].Value.Is(5); (now - xs[4].Timestamp).TotalSeconds.Is(x => 0 <= x && x <= 0.1);\r\n        }\r\n\r\n        [TestMethod]\r\n        public void TimeInterval()\r\n        {\r\n            var xs = Observable.Concat(\r\n                Observable.Return(1),\r\n                Observable.Return(2).Delay(TimeSpan.FromSeconds(1)),\r\n                Observable.Return(3).Delay(TimeSpan.FromSeconds(1)),\r\n                Observable.Return(4).Delay(TimeSpan.FromSeconds(0.4)),\r\n                Observable.Return(5).Delay(TimeSpan.FromSeconds(0.2)) // over 2500\r\n            ).TimeInterval()\r\n            .ToArray()\r\n            .Wait();\r\n\r\n            xs[0].Value.Is(1); xs[0].Interval.TotalSeconds.Is(x => 0.0 <= x && x <= 0.1);\r\n            xs[1].Value.Is(2); xs[1].Interval.TotalSeconds.Is(x => 0.9 <= x && x <= 1.1);\r\n            xs[2].Value.Is(3); xs[2].Interval.TotalSeconds.Is(x => 0.9 <= x && x <= 1.1);\r\n            xs[3].Value.Is(4); xs[3].Interval.TotalSeconds.Is(x => 0.3 <= x && x <= 0.5);\r\n            xs[4].Value.Is(5); xs[4].Interval.TotalSeconds.Is(x => 0.15 <= x && x <= 0.25);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Tests/UniRx.Tests/ObservableTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class ObservableTest\n    {\n        [TestMethod]\n        public void ToArray()\n        {\n            var subject = new Subject<int>();\n\n            int[] array = null;\n            subject.ToArray().Subscribe(xs => array = xs);\n\n            subject.OnNext(1);\n            subject.OnNext(10);\n            subject.OnNext(100);\n            subject.OnCompleted();\n\n            array.IsCollection(1, 10, 100);\n        }\n\n        [TestMethod]\n        public void ToArray_Dispose()\n        {\n            var subject = new Subject<int>();\n\n            int[] array = null;\n            var disp = subject.ToArray().Subscribe(xs => array = xs);\n\n            subject.OnNext(1);\n            subject.OnNext(10);\n            subject.OnNext(100);\n\n            disp.Dispose();\n\n            subject.OnCompleted();\n\n            array.IsNull();\n        }\n\n        [TestMethod]\n        public void Wait()\n        {\n#if !UNITY_METRO\n\n            var subject = new Subject<int>();\n\n            ThreadPool.QueueUserWorkItem(_ =>\n            {\n                Thread.Sleep(TimeSpan.FromSeconds(1));\n                subject.OnNext(100);\n                subject.OnCompleted();\n            });\n\n            subject.Wait().Is(100);\n\n#endif\n        }\n\n        [TestMethod]\n        public void DistinctUntilChanged()\n        {\n            {\n                var subject = new Subject<int>();\n\n                int[] array = null;\n                subject.DistinctUntilChanged().ToArray().Subscribe(xs => array = xs);\n\n                foreach (var item in new[] { 1, 10, 10, 1, 100, 100, 100, 5 }) { subject.OnNext(item); };\n                subject.OnCompleted();\n\n                array.IsCollection(1, 10, 1, 100, 5);\n            }\n            {\n\n                string[] array = null;\n                new[] { \"hoge\", \"huga\", null, null, \"huga\", \"huga\", \"hoge\" }\n                    .ToObservable()\n                    .DistinctUntilChanged()\n                    .ToArray()\n                    .Subscribe(xs => array = xs);\n\n                array.IsCollection(\"hoge\", \"huga\", null, \"huga\", \"hoge\");\n            }\n            {\n                var subject = new Subject<int>();\n\n                int[] array = null;\n                subject.DistinctUntilChanged(x => x, EqualityComparer<int>.Default).ToArray().Subscribe(xs => array = xs);\n\n                foreach (var item in new[] { 1, 10, 10, 1, 100, 100, 100, 5 }) { subject.OnNext(item); };\n                subject.OnCompleted();\n\n                array.IsCollection(1, 10, 1, 100, 5);\n            }\n        }\n\n        [TestMethod]\n        public void Distinct()\n        {\n            {\n                var subject = new Subject<int>();\n\n                int[] array = null;\n                subject.Distinct().ToArray().Subscribe(xs => array = xs);\n\n                foreach (var item in new[] { 1, 10, 10, 1, 100, 100, 100, 5, 70, 7 }) { subject.OnNext(item); };\n                subject.OnCompleted();\n\n                array.IsCollection(1, 10, 100, 5, 70, 7);\n            }\n            {\n                var subject = new Subject<int>();\n\n                int[] array = null;\n                subject.Distinct(x => x, EqualityComparer<int>.Default).ToArray().Subscribe(xs => array = xs);\n                       \n                foreach (var item in new[] { 1, 10, 10, 1, 100, 100, 100, 5, 70, 7 }) { subject.OnNext(item); };\n                subject.OnCompleted();\n\n                array.IsCollection(1, 10, 100, 5, 70, 7);\n            }\n        }\n\n        [TestMethod]\n        public void SelectMany()\n        {\n            var a = new Subject<int>();\n            var b = new Subject<int>();\n\n            var list = new List<int>();\n            a.SelectMany(_ => b).Subscribe(x => list.Add(x));\n\n            a.OnNext(10);\n            a.OnCompleted();\n            b.OnNext(100);\n\n            list.Count.Is(1);\n            list[0].Is(100);\n        }\n\n        [TestMethod]\n        public void Select()\n        {\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Select(x => x * x).Subscribe(x => list.Add(x));\n\n                a.OnNext(100);\n                a.OnNext(200);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.Count.Is(3);\n                list.IsCollection(10000, 40000, 90000);\n            }\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Select((x, i) => x * i).Subscribe(x => list.Add(x));\n\n                a.OnNext(100);\n                a.OnNext(200);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.Count.Is(3);\n                list.IsCollection(0, 200, 600);\n            }\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Select(x => x * x).Select(x => x * x).Subscribe(x => list.Add(x));\n\n                a.OnNext(2);\n                a.OnNext(4);\n                a.OnNext(8);\n                a.OnCompleted();\n\n                list.Count.Is(3);\n                list.IsCollection(16, 256, 4096);\n            }\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Select((x, i) => x * i).Select(x => x * 10).Subscribe(x => list.Add(x));\n\n                a.OnNext(100);\n                a.OnNext(200);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.Count.Is(3);\n                list.IsCollection(0, 2000, 6000);\n            }\n        }\n\n        [TestMethod]\n        public void Where()\n        {\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Where(x => x % 3 == 0).Subscribe(x => list.Add(x));\n\n                a.OnNext(3);\n                a.OnNext(5);\n                a.OnNext(7);\n                a.OnNext(9);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.IsCollection(3, 9, 300);\n            }\n\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Where((x, i) => (x + i) % 3 == 0).Subscribe(x => list.Add(x));\n\n                a.OnNext(3); // 3 + 0\n                a.OnNext(5); // 5 + 1\n                a.OnNext(7); // 7 + 2\n                a.OnNext(9); // 9 + 3\n                a.OnNext(300); // 300 + 4\n                a.OnCompleted();\n\n                list.IsCollection(3, 5, 7, 9);\n            }\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Where(x => x % 3 == 0).Where(x => x % 5 == 0).Subscribe(x => list.Add(x));\n\n                a.OnNext(3);\n                a.OnNext(5);\n                a.OnNext(7);\n                a.OnNext(9);\n                a.OnNext(300);\n                a.OnCompleted();\n\n                list.IsCollection(300);\n            }\n\n            {\n                var a = new Subject<int>();\n\n                var list = new List<int>();\n                a.Where((x, i) => (x + i) % 3 == 0).Where(x => x % 5 == 0).Subscribe(x => list.Add(x));\n\n                a.OnNext(3); // 3 + 0\n                a.OnNext(5); // 5 + 1\n                a.OnNext(7); // 7 + 2\n                a.OnNext(9); // 9 + 3\n                a.OnNext(300); // 300 + 4\n                a.OnCompleted();\n\n                list.IsCollection(5);\n            }\n        }\n\n        [TestMethod]\n        public void Materialize()\n        {\n            var m = Observable.Empty<int>().Materialize().ToArrayWait();\n            m[0].Kind.Is(NotificationKind.OnCompleted);\n\n            m = Observable.Range(1, 3).Materialize().ToArrayWait();\n            m[0].Value.Is(1);\n            m[1].Value.Is(2);\n            m[2].Value.Is(3);\n            m[3].Kind.Is(NotificationKind.OnCompleted);\n\n            m = Observable.Range(1, 3).Concat(Observable.Throw<int>(new Exception())).Materialize().ToArrayWait();\n            m[0].Value.Is(1);\n            m[1].Value.Is(2);\n            m[2].Value.Is(3);\n            m[3].Kind.Is(NotificationKind.OnError);\n        }\n\n        [TestMethod]\n        public void Dematerialize()\n        {\n            var m = Observable.Empty<int>().Materialize().Dematerialize().ToArrayWait();\n            m.IsCollection();\n\n            m = Observable.Range(1, 3).Materialize().Dematerialize().ToArrayWait();\n            m.IsCollection(1, 2, 3);\n\n            var l = new List<int>();\n            Observable.Range(1, 3).Concat(Observable.Throw<int>(new Exception())).Materialize()\n                .Dematerialize()\n                .Subscribe(x => l.Add(x), ex => l.Add(1000), () => l.Add(10000));\n            l.IsCollection(1, 2, 3, 1000);\n        }\n\n        [TestMethod]\n        public void DefaultIfEmpty()\n        {\n            Observable.Range(1, 3).DefaultIfEmpty(-1).ToArrayWait().IsCollection(1, 2, 3);\n            Observable.Empty<int>().DefaultIfEmpty(-1).ToArrayWait().IsCollection(-1);\n        }\n\n        [TestMethod]\n        public void IgnoreElements()\n        {\n            var xs = Observable.Range(1, 10).IgnoreElements().Materialize().ToArrayWait();\n            xs[0].Kind.Is(NotificationKind.OnCompleted);\n        }\n\n        [TestMethod]\n        public void ForEachAsync()\n        {\n            {\n                var list = new List<int>();\n                var xs = Observable.Range(1, 10).ForEachAsync(x => list.Add(x)).ToArray().Wait();\n                list.IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n                xs.Length.Is(1);\n                xs[0].Is(Unit.Default);\n            }\n\n            {\n                var list = new List<int>();\n                var listI = new List<int>();\n                var xs = Observable.Range(1, 10).ForEachAsync((x, i) =>\n                {\n                    list.Add(x);\n                    listI.Add(i);\n                }).ToArray().Wait();\n                list.IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n                listI.IsCollection(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);\n                xs.Length.Is(1);\n                xs[0].Is(Unit.Default);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。\n// アセンブリに関連付けられている情報を変更するには、\n// これらの属性値を変更してください。\n[assembly: AssemblyTitle(\"UniRx.Tests\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UniRx.Tests\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから \n// 参照できなくなります。このアセンブリ内で COM から型にアクセスする必要がある場合は、 \n// その型の ComVisible 属性を true に設定してください。\n[assembly: ComVisible(false)]\n\n// このプロジェクトが COM に公開される場合、次の GUID がタイプ ライブラリの ID になります。\n[assembly: Guid(\"6fcfdfde-9169-45a4-9739-260c68b0acd0\")]\n\n// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// すべての値を指定するか、以下のように '*' を使用してビルド番号とリビジョン番号を \n// 既定値にすることができます:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Tests/UniRx.Tests/QueueWorkerTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class QueueWorkerTest\n    {\n        [TestMethod]\n        public void Enq()\n        {\n            var q = new UniRx.InternalUtil.ThreadSafeQueueWorker();\n\n            var l = new List<int>();\n            q.Enqueue(x => l.Add((int)x), 1);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -1);\n            q.Enqueue(x => l.Add((int)x), 2);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -2);\n            q.Enqueue(x => l.Add((int)x), 3);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -3);\n            q.Enqueue(x => l.Add((int)x), 4);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -4);\n            q.Enqueue(x => l.Add((int)x), 5);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -5);\n            q.Enqueue(x => l.Add((int)x), 6);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -6);\n            q.Enqueue(x => l.Add((int)x), 7);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -7);\n            q.Enqueue(x => l.Add((int)x), 8);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -8);\n            q.Enqueue(x => l.Add((int)x), 9);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -9);\n            q.Enqueue(x => l.Add((int)x), 10);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -10);\n            q.Enqueue(x => l.Add((int)x), 11);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -11);\n            q.Enqueue(x => l.Add((int)x), 12);\n\n            q.ExecuteAll(ex => { });\n\n            l.IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);\n            l.Clear();\n\n            q.ExecuteAll(ex => { });\n            l.IsCollection(-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11);\n            l.Clear();\n\n            q.ExecuteAll(ex => { });\n            l.Count.Is(0);\n\n            q.Enqueue(x => l.Add((int)x), 1);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -1);\n            q.Enqueue(x => l.Add((int)x), 2);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -2);\n            q.Enqueue(x => l.Add((int)x), 3);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -3);\n            q.Enqueue(x => l.Add((int)x), 4);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -4);\n            q.Enqueue(x => l.Add((int)x), 5);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -5);\n            q.Enqueue(x => l.Add((int)x), 6);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -6);\n            q.Enqueue(x => l.Add((int)x), 7);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -7);\n            q.Enqueue(x => l.Add((int)x), 8);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -8);\n            q.Enqueue(x => l.Add((int)x), 9);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -9);\n            q.Enqueue(x => l.Add((int)x), 10);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -10);\n            q.Enqueue(x => l.Add((int)x), 11);\n            q.Enqueue(x => q.Enqueue(_ => l.Add((int)x), null), -11);\n            q.Enqueue(x => l.Add((int)x), 12);\n\n            q.ExecuteAll(ex => { });\n            l.IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);\n            l.Clear();\n\n            q.ExecuteAll(ex => { });\n            l.IsCollection(-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11);\n            l.Clear();\n\n            q.ExecuteAll(ex => { });\n            l.Count.Is(0);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/RangeTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests.Operators\n{\n    [Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]\n    public class RangeTest\n    {\n        [TestMethod]\n        public void Range()\n        {\n            AssertEx.Throws<ArgumentOutOfRangeException>(() => Observable.Range(1, -1).ToArray().Wait());\n\n            Observable.Range(1, 0).ToArray().Wait().Length.Is(0);\n            Observable.Range(1, 10).ToArray().Wait().IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n\n            Observable.Range(1, 0, Scheduler.Immediate).ToArray().Wait().Length.Is(0);\n            Observable.Range(1, 10, Scheduler.Immediate).ToArray().Wait().IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/ReactivePropertyTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class ReactivePropertyTest\n    {\n        [TestMethod]\n        public void ValueType()\n        {\n            {\n                var rp = new ReactiveProperty<int>(); // 0\n\n                var result = rp.Record();\n                result.Values.IsCollection(0);\n\n                rp.Value = 0;\n                result.Values.IsCollection(0);\n\n                rp.Value = 10;\n                result.Values.IsCollection(0, 10);\n\n                rp.Value = 100;\n                result.Values.IsCollection(0, 10, 100);\n\n                rp.Value = 100;\n                result.Values.IsCollection(0, 10, 100);\n            }\n            {\n                var rp = new ReactiveProperty<int>(20);\n\n                var result = rp.Record();\n                result.Values.IsCollection(20);\n\n                rp.Value = 0;\n                result.Values.IsCollection(20, 0);\n\n                rp.Value = 10;\n                result.Values.IsCollection(20, 0, 10);\n\n                rp.Value = 100;\n                result.Values.IsCollection(20, 0, 10, 100);\n\n                rp.Value = 100;\n                result.Values.IsCollection(20, 0, 10, 100);\n            }\n        }\n\n        [TestMethod]\n        public void ClassType()\n        {\n            {\n                var rp = new ReactiveProperty<string>(); // null\n\n                var result = rp.Record();\n                result.Values.IsCollection((string)null);\n\n                rp.Value = null;\n                result.Values.IsCollection((string)null);\n\n                rp.Value = \"a\";\n                result.Values.IsCollection((string)null, \"a\");\n\n                rp.Value = \"b\";\n                result.Values.IsCollection((string)null, \"a\", \"b\");\n\n                rp.Value = \"b\";\n                result.Values.IsCollection((string)null, \"a\", \"b\");\n            }\n            {\n                var rp = new ReactiveProperty<string>(\"z\");\n\n                var result = rp.Record();\n                result.Values.IsCollection(\"z\");\n\n                rp.Value = \"z\";\n                result.Values.IsCollection(\"z\");\n\n                rp.Value = \"a\";\n                result.Values.IsCollection(\"z\", \"a\");\n\n                rp.Value = \"b\";\n                result.Values.IsCollection(\"z\", \"a\", \"b\");\n\n                rp.Value = \"b\";\n                result.Values.IsCollection(\"z\", \"a\", \"b\");\n\n                rp.Value = null;\n                result.Values.IsCollection(\"z\", \"a\", \"b\", null);\n            }\n        }\n\n        [TestMethod]\n        public void ToReadOnlyReactivePropertyValueType()\n        {\n            {\n                var source = new Subject<int>();\n                var rp = source.ToReadOnlyReactiveProperty();\n\n                var result = rp.Record();\n                result.Values.Count.Is(0);\n\n                source.OnNext(0);\n                result.Values.IsCollection(0);\n\n                source.OnNext(10);\n                result.Values.IsCollection(0, 10);\n\n                source.OnNext(100);\n                result.Values.IsCollection(0, 10, 100);\n\n                source.OnNext(100);\n                result.Values.IsCollection(0, 10, 100);\n            }\n            {\n                var source = new Subject<int>();\n                var rp = source.ToSequentialReadOnlyReactiveProperty();\n\n                var result = rp.Record();\n                result.Values.Count.Is(0);\n\n                source.OnNext(0);\n                result.Values.IsCollection(0);\n\n                source.OnNext(10);\n                result.Values.IsCollection(0, 10);\n\n                source.OnNext(100);\n                result.Values.IsCollection(0, 10, 100);\n\n                source.OnNext(100);\n                result.Values.IsCollection(0, 10, 100, 100);\n            }\n            {\n                var source = new Subject<int>();\n                var rp = source.ToReadOnlyReactiveProperty(0);\n\n                var result = rp.Record();\n                result.Values.IsCollection(0);\n\n                source.OnNext(0);\n                result.Values.IsCollection(0);\n\n                source.OnNext(10);\n                result.Values.IsCollection(0, 10);\n\n                source.OnNext(100);\n                result.Values.IsCollection(0, 10, 100);\n\n                source.OnNext(100);\n                result.Values.IsCollection(0, 10, 100);\n            }\n            {\n                var source = new Subject<int>();\n                var rp = source.ToSequentialReadOnlyReactiveProperty(0);\n\n                var result = rp.Record();\n                result.Values.IsCollection(0);\n\n                source.OnNext(0);\n                result.Values.IsCollection(0, 0);\n\n                source.OnNext(10);\n                result.Values.IsCollection(0, 0, 10);\n\n                source.OnNext(100);\n                result.Values.IsCollection(0, 0, 10, 100);\n\n                source.OnNext(100);\n                result.Values.IsCollection(0, 0, 10, 100, 100);\n            }\n        }\n\n\n\n        [TestMethod]\n        public void ToReadOnlyReactivePropertyClassType()\n        {\n            {\n                var source = new Subject<string>();\n                var rp = source.ToReadOnlyReactiveProperty();\n\n                var result = rp.Record();\n                result.Values.Count.Is(0);\n\n                source.OnNext(null);\n                result.Values.IsCollection((string)null);\n\n                source.OnNext(\"a\");\n                result.Values.IsCollection((string)null, \"a\");\n\n                source.OnNext(\"b\");\n                result.Values.IsCollection((string)null, \"a\", \"b\");\n\n                source.OnNext(\"b\");\n                result.Values.IsCollection((string)null, \"a\", \"b\");\n            }\n            {\n                var source = new Subject<string>();\n                var rp = source.ToSequentialReadOnlyReactiveProperty();\n\n                var result = rp.Record();\n                result.Values.Count.Is(0);\n\n                source.OnNext(null);\n                result.Values.IsCollection((string)null);\n\n                source.OnNext(\"a\");\n                result.Values.IsCollection((string)null, \"a\");\n\n                source.OnNext(\"b\");\n                result.Values.IsCollection((string)null, \"a\", \"b\");\n\n                source.OnNext(\"b\");\n                result.Values.IsCollection((string)null, \"a\", \"b\", \"b\");\n            }\n            {\n                var source = new Subject<string>();\n                var rp = source.ToReadOnlyReactiveProperty(\"z\");\n\n                var result = rp.Record();\n                result.Values.IsCollection(\"z\");\n\n                source.OnNext(\"z\");\n                result.Values.IsCollection(\"z\");\n\n                source.OnNext(\"a\");\n                result.Values.IsCollection(\"z\", \"a\");\n\n                source.OnNext(\"b\");\n                result.Values.IsCollection(\"z\", \"a\", \"b\");\n\n                source.OnNext(\"b\");\n                result.Values.IsCollection(\"z\", \"a\", \"b\");\n\n                source.OnNext(null);\n                result.Values.IsCollection(\"z\", \"a\", \"b\", null);\n\n                source.OnNext(null);\n                result.Values.IsCollection(\"z\", \"a\", \"b\", null);\n            }\n            {\n                var source = new Subject<string>();\n                var rp = source.ToSequentialReadOnlyReactiveProperty(\"z\");\n\n                var result = rp.Record();\n                result.Values.IsCollection(\"z\");\n\n                source.OnNext(\"z\");\n                result.Values.IsCollection(\"z\", \"z\");\n\n                source.OnNext(\"a\");\n                result.Values.IsCollection(\"z\", \"z\", \"a\");\n\n                source.OnNext(\"b\");\n                result.Values.IsCollection(\"z\", \"z\", \"a\", \"b\");\n\n                source.OnNext(\"b\");\n                result.Values.IsCollection(\"z\", \"z\", \"a\", \"b\", \"b\");\n\n                source.OnNext(null);\n                result.Values.IsCollection(\"z\", \"z\", \"a\", \"b\", \"b\", null);\n\n                source.OnNext(null);\n                result.Values.IsCollection(\"z\", \"z\", \"a\", \"b\", \"b\", null, null);\n            }\n        }\n\n        //[TestMethod]\n        //public void FinishedSourceToReactiveProperty()\n        //{\n        //    // pattern of OnCompleted\n        //    {\n        //        var source = Observable.Return(9);\n        //        var rxProp = source.ToReactiveProperty();\n\n        //        var notifications = rxProp.Record().Notifications;\n        //        notifications.IsCollection(Notification.CreateOnNext(9));\n\n        //        rxProp.Value = 9999;\n        //        notifications.IsCollection(Notification.CreateOnNext(9), Notification.CreateOnNext(9999));\n        //        rxProp.Record().Values.IsCollection(9999);\n        //    }\n\n        //    // pattern of OnError\n        //    {\n        //        // after\n        //        {\n        //            var ex = new Exception();\n        //            var source = Observable.Throw<int>(ex);\n        //            var rxProp = source.ToReactiveProperty();\n\n        //            var notifications = rxProp.Record().Notifications;\n        //            notifications.IsCollection(Notification.CreateOnError<int>(ex));\n\n        //            rxProp.Value = 9999;\n        //            notifications.IsCollection(Notification.CreateOnError<int>(ex));\n        //            rxProp.Record().Notifications.IsCollection(Notification.CreateOnError<int>(ex));\n        //        }\n        //        // immediate\n        //        {\n\n        //            var ex = new Exception();\n        //            var source = new Subject<int>();\n        //            var rxProp = source.ToReactiveProperty();\n\n        //            var record = rxProp.Record();\n\n        //            source.OnError(new Exception());\n\n        //            var notifications = record.Notifications;\n        //            notifications.Count.Is(1);\n        //            notifications[0].Kind.Is(NotificationKind.OnError);\n\n        //            rxProp.Value = 9999;\n        //            notifications.Count.Is(1);\n        //            notifications[0].Kind.Is(NotificationKind.OnError);\n        //            rxProp.Record().Notifications[0].Kind.Is(NotificationKind.OnError);\n        //        }\n        //    }\n        //}\n\n        [TestMethod]\n        public void FinishedSourceToReadOnlyReactiveProperty()\n        {\n            // pattern of OnCompleted\n            {\n                var source = Observable.Return(9);\n                var rxProp = source.ToReadOnlyReactiveProperty();\n\n                var notifications = rxProp.Record().Notifications;\n                notifications.IsCollection(Notification.CreateOnNext(9), Notification.CreateOnCompleted<int>());\n\n                rxProp.Record().Notifications.IsCollection(\n                    Notification.CreateOnNext(9),\n                    Notification.CreateOnCompleted<int>());\n            }\n\n            // pattern of OnError\n            {\n                // after\n                {\n                    var ex = new Exception();\n                    var source = Observable.Throw<int>(ex);\n                    var rxProp = source.ToReadOnlyReactiveProperty();\n\n                    var notifications = rxProp.Record().Notifications;\n                    notifications.IsCollection(Notification.CreateOnError<int>(ex));\n\n                    rxProp.Record().Notifications.IsCollection(Notification.CreateOnError<int>(ex));\n                }\n                // immediate\n                {\n\n                    var ex = new Exception();\n                    var source = new Subject<int>();\n                    var rxProp = source.ToReadOnlyReactiveProperty();\n\n                    var record = rxProp.Record();\n\n                    source.OnError(new Exception());\n\n                    var notifications = record.Notifications;\n                    notifications.Count.Is(1);\n                    notifications[0].Kind.Is(NotificationKind.OnError);\n\n                    rxProp.Record().Notifications[0].Kind.Is(NotificationKind.OnError);\n                }\n            }\n        }\n\n        [TestMethod]\n        public void WithLastTest()\n        {\n            var rp1 = Observable.Return(\"1\").ToReadOnlyReactiveProperty();\n            rp1.Last().Record().Notifications.IsCollection(\n                Notification.CreateOnNext(\"1\"),\n                Notification.CreateOnCompleted<string>());\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/ReactriveDictionaryTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n    // Move to Unity Tests...\n\n    //[TestClass]\n    //public class ReactriveDictionaryTest\n    //{\n    //    [TestMethod]\n    //    public void RxDictObserve()\n    //    {\n    //        var dict = new ReactiveDictionary<string, int>();\n\n    //        var count = 0;\n    //        DictionaryAddEvent<string, int> addE = default(DictionaryAddEvent<string, int>);\n    //        DictionaryRemoveEvent<string, int> removeE = default(DictionaryRemoveEvent<string, int>);\n    //        DictionaryReplaceEvent<string, int> replaceE = default(DictionaryReplaceEvent<string, int>);\n    //        var resetCount = 0;\n\n    //        dict.ObserveCountChanged().Subscribe(x => count = x);\n    //        dict.ObserveAdd().Subscribe(x => addE = x);\n    //        dict.ObserveRemove().Subscribe(x => removeE = x);\n    //        dict.ObserveReplace().Subscribe(x => replaceE = x);\n    //        dict.ObserveReset().Subscribe(x => resetCount += 1);\n\n    //        dict.Add(\"a\", 100);\n    //        count.Is(1);\n    //        addE.Key.Is(\"a\"); addE.Value.Is(100);\n\n    //        dict.Add(\"b\", 200);\n    //        count.Is(2);\n    //        addE.Key.Is(\"b\"); addE.Value.Is(200);\n\n    //        count = -1;\n    //        dict[\"a\"] = 300;\n    //        count.Is(-1); // not fired\n    //        addE.Key.Is(\"b\"); // not fired\n    //        replaceE.Key.Is(\"a\"); replaceE.OldValue.Is(100); replaceE.NewValue.Is(300);\n\n    //        dict[\"c\"] = 400;\n    //        count.Is(3);\n    //        replaceE.Key.Is(\"a\"); // not fired\n    //        addE.Key.Is(\"c\"); addE.Value.Is(400);\n\n    //        dict.Remove(\"b\");\n    //        count.Is(2);\n    //        removeE.Key.Is(\"b\"); removeE.Value.Is(200);\n\n    //        count = -1;\n    //        dict.Remove(\"z\");\n    //        count.Is(-1); // not fired\n    //        removeE.Key.Is(\"b\"); // not fired\n\n    //        dict.Clear();\n    //        count.Is(0);\n    //        resetCount.Is(1);\n\n    //        count = -1;\n    //        dict.Clear();\n    //        resetCount.Is(2);\n    //        count.Is(-1); // not fired\n    //    }\n    //}\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/SchedulerTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class SchedulerTest\n    {\n        private static string[] ScheduleTasks(IScheduler scheduler)\n        {\n            var list = new List<string>();\n\n            Action leafAction = () => list.Add(\"----leafAction.\");\n            Action innerAction = () =>\n            {\n                list.Add(\"--innerAction start.\");\n                scheduler.Schedule(leafAction);\n                list.Add(\"--innerAction end.\");\n            };\n            Action outerAction = () =>\n            {\n                list.Add(\"outer start.\");\n                scheduler.Schedule(innerAction);\n                list.Add(\"outer end.\");\n            };\n            scheduler.Schedule(outerAction);\n\n            return list.ToArray();\n        }\n\n        [TestMethod]\n        public void CurrentThread()\n        {\n            var hoge = ScheduleTasks(Scheduler.CurrentThread);\n            hoge.IsCollection(\"outer start.\", \"outer end.\", \"--innerAction start.\", \"--innerAction end.\", \"----leafAction.\");\n        }\n        [TestMethod]\n        public void CurrentThread2()\n        {\n            var scheduler = Scheduler.CurrentThread;\n\n            var list = new List<string>();\n            scheduler.Schedule(() =>\n            {\n                list.Add(\"one\");\n\n                scheduler.Schedule(TimeSpan.FromSeconds(3), () =>\n                {\n                    list.Add(\"after 3\");\n                });\n\n                scheduler.Schedule(TimeSpan.FromSeconds(1), () =>\n                {\n                    list.Add(\"after 1\");\n                });\n            });\n\n            list.IsCollection(\"one\", \"after 1\", \"after 3\");\n        }\n\n        [TestMethod]\n        public void CurrentThread3()\n        {\n            var scheduler = Scheduler.CurrentThread;\n\n            var list = new List<string>();\n            scheduler.Schedule(() =>\n            {\n                list.Add(\"one\");\n\n                var cancel = scheduler.Schedule(TimeSpan.FromSeconds(3), () =>\n                {\n                    list.Add(\"after 3\");\n                });\n\n                scheduler.Schedule(TimeSpan.FromSeconds(1), () =>\n                {\n                    list.Add(\"after 1\");\n                    cancel.Dispose();\n                });\n            });\n\n            list.IsCollection(\"one\", \"after 1\");\n        }\n\n        [TestMethod]\n        public void Immediate()\n        {\n            var hoge = ScheduleTasks(Scheduler.Immediate);\n            hoge.IsCollection(\"outer start.\", \"--innerAction start.\", \"----leafAction.\", \"--innerAction end.\", \"outer end.\");\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/SelectMany.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests.Operators\n{\n    [Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]\n    public class SelectMany\n    {\n        [TestMethod]\n        public void Selector()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c)\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext(200)\", \"OnNext(300)\", \"OnNext(400)\", \"OnCompleted()\");\n            }\n            {\n                // OnError A\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c)\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnError(new Exception());\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext(200)\", \"OnNext(300)\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnError B\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c)\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnError(new Exception());\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext(200)\", \"OnNext(300)\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnCompleted Case2\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c)\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                b.OnCompleted();\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext(200)\", \"OnNext(300)\");\n\n                a.OnCompleted();\n\n                list.IsCollection(\"OnNext(200)\", \"OnNext(300)\", \"OnCompleted()\");\n            }\n        }\n\n        [TestMethod]\n        public void SelectorWithIndex()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((200, 0))\", \"OnNext((300, 1))\", \"OnNext((400, 1))\", \"OnCompleted()\");\n            }\n            {\n                // OnError A\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnError(new Exception());\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((200, 0))\", \"OnNext((300, 1))\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnError B\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnError(new Exception());\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((200, 0))\", \"OnNext((300, 1))\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [TestMethod]\n        public void SelectorEnumerable()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? Enumerable.Range(1, 3) : Enumerable.Repeat(10, 3))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext(1)\", \"OnNext(2)\", \"OnNext(3)\", \"OnNext(10)\", \"OnNext(10)\", \"OnNext(10)\", \"OnCompleted()\");\n            }\n            {\n                // OnError Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? Enumerable.Range(1, 3) : Enumerable.Repeat(10, 3))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnError(new Exception());\n\n                // check\n                list.IsCollection(\"OnNext(1)\", \"OnNext(2)\", \"OnNext(3)\", \"OnNext(10)\", \"OnNext(10)\", \"OnNext(10)\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [TestMethod]\n        public void SelectorEnumerableWithIndex()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? Enumerable.Range(i, 3) : Enumerable.Repeat(i, 3))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext(0)\", \"OnNext(1)\", \"OnNext(2)\", \"OnNext(1)\", \"OnNext(1)\", \"OnNext(1)\", \"OnCompleted()\");\n            }\n            {\n                // OnError Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? Enumerable.Range(i, 3) : Enumerable.Repeat(i, 3))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnError(new Exception());\n\n                // check\n                list.IsCollection(\"OnNext(0)\", \"OnNext(1)\", \"OnNext(2)\", \"OnNext(1)\", \"OnNext(1)\", \"OnNext(1)\", \"OnError(System.Exception)\");\n            }\n        }\n\n\n\n        [TestMethod]\n        public void ResultSelector()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c, (x, y) => Tuple.Create(x, y))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((10, 200))\", \"OnNext((100, 300))\", \"OnNext((100, 400))\", \"OnCompleted()\");\n            }\n            {\n                // OnError A\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c, (x, y) => Tuple.Create(x, y))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnError(new Exception());\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((10, 200))\", \"OnNext((100, 300))\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnError B\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? b : c, (x, y) => Tuple.Create(x, y))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnError(new Exception());\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((10, 200))\", \"OnNext((100, 300))\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [TestMethod]\n        public void ResultSelectorWithIndex()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)), (x, i1, y, i2) => Tuple.Create(x, i1, y.Item1, y.Item2, i2))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((10, 0, 200, 0, 0))\", \"OnNext((100, 1, 300, 1, 0))\", \"OnNext((100, 1, 400, 1, 1))\", \"OnCompleted()\");\n            }\n            {\n                // OnError A\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)), (x, i1, y, i2) => Tuple.Create(x, i1, y.Item1, y.Item2, i2))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnError(new Exception());\n                b.OnCompleted();\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((10, 0, 200, 0, 0))\", \"OnNext((100, 1, 300, 1, 0))\", \"OnError(System.Exception)\");\n            }\n            {\n                // OnError B\n                var a = new Subject<int>();\n                var b = new Subject<int>();\n                var c = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? b.Select(y => Tuple.Create(y, i)) : c.Select(y => Tuple.Create(y, i)), (x, i1, y, i2) => Tuple.Create(x, i1, y.Item1, y.Item2, i2))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n\n                b.OnNext(200);\n                c.OnNext(300);\n                a.OnCompleted();\n                b.OnError(new Exception());\n                c.OnNext(400);\n                c.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((10, 0, 200, 0, 0))\", \"OnNext((100, 1, 300, 1, 0))\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [TestMethod]\n        public void ResultSelectorEnumerable()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? Enumerable.Range(1, 3) : Enumerable.Repeat(10, 3), (x, y) => Tuple.Create(x, y))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((10, 1))\", \"OnNext((10, 2))\", \"OnNext((10, 3))\", \"OnNext((100, 10))\", \"OnNext((100, 10))\", \"OnNext((100, 10))\", \"OnCompleted()\");\n            }\n            {\n                // OnError Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany(x => (x == 10) ? Enumerable.Range(1, 3) : Enumerable.Repeat(10, 3), (x, y) => Tuple.Create(x, y))\n                 .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnError(new Exception());\n\n                // check\n                list.IsCollection(\"OnNext((10, 1))\", \"OnNext((10, 2))\", \"OnNext((10, 3))\", \"OnNext((100, 10))\", \"OnNext((100, 10))\", \"OnNext((100, 10))\", \"OnError(System.Exception)\");\n            }\n        }\n\n        [TestMethod]\n        public void ResultSelectorEnumerableWithIndex()\n        {\n            {\n                // OnCompleted Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? Enumerable.Range(i, 3) : Enumerable.Repeat(i, 3), (x, i1, y, i2) => Tuple.Create(x, i1, y, i2))\n                 .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnCompleted();\n\n                // check\n                list.IsCollection(\"OnNext((10, 0, 0, 0))\", \"OnNext((10, 0, 1, 1))\", \"OnNext((10, 0, 2, 2))\", \"OnNext((100, 1, 1, 0))\", \"OnNext((100, 1, 1, 1))\", \"OnNext((100, 1, 1, 2))\", \"OnCompleted()\");\n            }\n            {\n                // OnError Case\n                var a = new Subject<int>();\n                var list = new List<string>();\n                a.SelectMany((x, i) => (x == 10) ? Enumerable.Range(i, 3) : Enumerable.Repeat(i, 3), (x, i1, y, i2) => Tuple.Create(x, i1, y, i2))\n                    .Materialize().Select(x => x.ToString()).Subscribe(x => list.Add(x));\n                a.OnNext(10);\n                a.OnNext(100);\n\n                // do\n                a.OnError(new Exception());\n\n                // check\n                list.IsCollection(\"OnNext((10, 0, 0, 0))\", \"OnNext((10, 0, 1, 1))\", \"OnNext((10, 0, 2, 2))\", \"OnNext((100, 1, 1, 0))\", \"OnNext((100, 1, 1, 1))\", \"OnNext((100, 1, 1, 2))\", \"OnError(System.Exception)\");\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/SelectWhereOptimizeTest.cs",
    "content": "﻿using Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class SelectWhereOptimizeTest\n    {\n        [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]\n        public void SelectSelect()\n        {\n            // Combine selector currently disabled.\n            var selectselect = Observable.Range(1, 10)\n                .Select(x => x)\n                .Select(x => x * -1);\n        }\n\n        [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]\n        public void WhereWhere()\n        {\n            var wherewhere = Observable.Range(1, 10)\n                .Where(x => x % 2 == 0)\n                .Where(x => x > 5);\n\n            wherewhere.ToArrayWait().IsCollection(6, 8, 10);\n\n            var wherewhere2 = Observable.Range(1, 10)\n                .Where((x, i) => x % 2 == 0)\n                .Where(x => x > 5);\n\n            wherewhere2.ToArrayWait().IsCollection(6, 8, 10);\n        }\n\n        [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]\n        public void SelectWhere()\n        {\n            var selectWhere = Observable.Range(1, 10)\n                .Select(x => x * x)\n                .Where(x => x % 2 == 0);\n\n            selectWhere.GetType().Name.Contains(\"SelectWhere\").IsTrue();\n            selectWhere.ToArrayWait().IsCollection(4, 16, 36, 64, 100);\n\n            var selectWhere2 = Observable.Range(1, 10)\n                .Select((x, i) => x * x)\n                .Where(x => x % 2 == 0);\n\n            selectWhere2.GetType().Name.Contains(\"SelectWhere\").IsFalse();\n            selectWhere2.ToArrayWait().IsCollection(4, 16, 36, 64, 100);\n        }\n\n        [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]\n        public void WhereSelect()\n        {\n            var whereSelect = Observable.Range(1, 10)\n                .Where(x => x % 2 == 0)\n                .Select(x => x * x);\n\n            whereSelect.GetType().Name.Contains(\"WhereSelect\").IsTrue();\n            whereSelect.ToArrayWait().IsCollection(4, 16, 36, 64, 100);\n\n            var whereSelect2 = Observable.Range(1, 10)\n                .Where((x, i) => x % 2 == 0)\n                .Select(x => x * x);\n\n            whereSelect2.GetType().Name.Contains(\"WhereSelect\").IsFalse();\n            whereSelect2.ToArrayWait().IsCollection(4, 16, 36, 64, 100);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/SubjectTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System.Collections.Generic;\nusing System.Threading;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class SubjectTests\n    {\n        [TestMethod]\n        public void Subject()\n        {\n            // OnCompletedPattern\n            {\n                var subject = new Subject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.IsCollection(1, 10, 100, 1000);\n\n                subject.OnCompleted();\n                onCompletedCallCount.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(4);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n\n                // ++subscription\n                onNext.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n            }\n\n            // OnErrorPattern\n            {\n                var subject = new Subject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.IsCollection(1, 10, 100, 1000);\n\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(4);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n\n                // ++subscription\n                onNext.Clear();\n                exception.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n            }\n        }\n\n        [TestMethod]\n        public void SubjectSubscribeTest()\n        {\n            var subject = new Subject<int>();\n            var listA = new List<int>();\n            var listB = new List<int>();\n            var listC = new List<int>();\n            subject.HasObservers.IsFalse();\n\n            var listASubscription = subject.Subscribe(x => listA.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(1);\n            listA[0].Is(1);\n\n            var listBSubscription = subject.Subscribe(x => listB.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(2);\n            listA[1].Is(2);\n            listB[0].Is(2);\n\n            var listCSubscription = subject.Subscribe(x => listC.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(3);\n            listA[2].Is(3);\n            listB[1].Is(3);\n            listC[0].Is(3);\n\n            listASubscription.Dispose();\n            subject.HasObservers.IsTrue();\n            subject.OnNext(4);\n            listA.Count.Is(3);\n            listB[2].Is(4);\n            listC[1].Is(4);\n\n            listCSubscription.Dispose();\n            subject.HasObservers.IsTrue();\n            subject.OnNext(5);\n            listC.Count.Is(2);\n            listB[3].Is(5);\n\n            listBSubscription.Dispose();\n            subject.HasObservers.IsFalse();\n            subject.OnNext(6);\n            listB.Count.Is(4);\n\n            var listD = new List<int>();\n            var listE = new List<int>();\n\n            subject.Subscribe(x => listD.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(1);\n            listD[0].Is(1);\n\n            subject.Subscribe(x => listE.Add(x));\n            subject.HasObservers.IsTrue();\n            subject.OnNext(2);\n            listD[1].Is(2);\n            listE[0].Is(2);\n\n            subject.Dispose();\n\n            AssertEx.Throws<ObjectDisposedException>(() => subject.OnNext(0));\n            AssertEx.Throws<ObjectDisposedException>(() => subject.OnError(new Exception()));\n            AssertEx.Throws<ObjectDisposedException>(() => subject.OnCompleted());\n        }\n\n        [TestMethod]\n        public void AsyncSubjectTest()\n        {\n            // OnCompletedPattern\n            {\n                var subject = new AsyncSubject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.Count.Is(0);\n\n                subject.OnCompleted();\n                onNext.IsCollection(1000);\n                onCompletedCallCount.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(1);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n\n                // ++subscription\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.IsCollection(1000, 1000);\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(2);\n            }\n\n            // OnErrorPattern\n            {\n                var subject = new AsyncSubject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.Count.Is(0);\n\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(0);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n\n                // ++subscription\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(2);\n                onCompletedCallCount.Is(0);\n            }\n        }\n\n        [TestMethod]\n        public void BehaviorSubject()\n        {\n            // OnCompletedPattern\n            {\n                var subject = new BehaviorSubject<int>(3333);\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                var _ = subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                onNext.IsCollection(3333);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n\n                onNext.IsCollection(3333, 1, 10, 100, 1000);\n\n                // re subscription\n                onNext.Clear();\n                _.Dispose();\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.IsCollection(1000);\n\n                subject.OnCompleted();\n                onCompletedCallCount.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(1);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n\n                // ++subscription\n                onNext.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n            }\n\n            // OnErrorPattern\n            {\n                var subject = new BehaviorSubject<int>(3333);\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.IsCollection(3333, 1, 10, 100, 1000);\n\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(5);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n\n                // ++subscription\n                onNext.Clear();\n                exception.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.Count.Is(0);\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n            }\n        }\n\n        [TestMethod]\n        public void ReplaySubject()\n        {\n            // OnCompletedPattern\n            {\n                var subject = new ReplaySubject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                var _ = subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.IsCollection(1, 10, 100, 1000);\n\n                // replay subscription\n                onNext.Clear();\n                _.Dispose();\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.IsCollection(1, 10, 100, 1000);\n\n                subject.OnCompleted();\n                onCompletedCallCount.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(4);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n\n                // ++subscription\n                onNext.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.IsCollection(1, 10, 100, 1000);\n                exception.Count.Is(0);\n                onCompletedCallCount.Is(1);\n            }\n\n            // OnErrorPattern\n            {\n                var subject = new ReplaySubject<int>();\n\n                var onNext = new List<int>();\n                var exception = new List<Exception>();\n                int onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                subject.OnNext(1000);\n                onNext.IsCollection(1, 10, 100, 1000);\n\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n\n                subject.OnNext(1);\n                subject.OnNext(10);\n                subject.OnNext(100);\n                onNext.Count.Is(4);\n\n                subject.OnCompleted();\n                subject.OnError(new Exception());\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n\n                // ++subscription\n                onNext.Clear();\n                exception.Clear();\n                onCompletedCallCount = 0;\n                subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n                onNext.IsCollection(1, 10, 100, 1000);\n                exception.Count.Is(1);\n                onCompletedCallCount.Is(0);\n            }\n        }\n\n        public void ReplaySubjectBufferReplay()\n        {\n            var subject = new ReplaySubject<int>(bufferSize: 3);\n\n            var onNext = new List<int>();\n            var exception = new List<Exception>();\n            int onCompletedCallCount = 0;\n            var _ = subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n            subject.OnNext(1);\n            subject.OnNext(10);\n            subject.OnNext(100);\n            subject.OnNext(1000);\n            subject.OnNext(10000);\n            onNext.IsCollection(100, 1000, 10000);  // cut 1, 10\n\n            // replay subscription\n            onNext.Clear();\n            _.Dispose();\n            subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n            onNext.IsCollection(100, 1000, 10000);\n\n            subject.OnNext(20000);\n            onNext.IsCollection(1000, 10000, 20000);\n\n            subject.OnCompleted();\n            onCompletedCallCount.Is(1);\n        }\n\n        [TestMethod]\n        public void ReplaySubjectWindowReplay()\n        {\n            var subject = new ReplaySubject<int>(window: TimeSpan.FromMilliseconds(700));\n\n            var onNext = new List<int>();\n            var exception = new List<Exception>();\n            int onCompletedCallCount = 0;\n            var _ = subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n\n            subject.OnNext(1); // 0\n            Thread.Sleep(TimeSpan.FromMilliseconds(300));\n\n            subject.OnNext(10); // 300\n            Thread.Sleep(TimeSpan.FromMilliseconds(300));\n\n            subject.OnNext(100); // 600\n            Thread.Sleep(TimeSpan.FromMilliseconds(300));\n\n            _.Dispose();\n            onNext.Clear();\n            subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n            onNext.IsCollection(10, 100);\n\n            subject.OnNext(1000); // 900\n            Thread.Sleep(TimeSpan.FromMilliseconds(300));\n\n            _.Dispose();\n            onNext.Clear();\n            subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n            onNext.IsCollection(100, 1000);\n\n            subject.OnNext(10000); // 1200\n            Thread.Sleep(TimeSpan.FromMilliseconds(500));\n\n            subject.OnNext(2); // 1500\n            Thread.Sleep(TimeSpan.FromMilliseconds(10));\n\n            subject.OnNext(20); // 1800\n            Thread.Sleep(TimeSpan.FromMilliseconds(10));\n\n            _.Dispose();\n            onNext.Clear();\n            subject.Subscribe(x => onNext.Add(x), x => exception.Add(x), () => onCompletedCallCount++);\n            onNext.IsCollection(10000, 2, 20);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/TakeTest.cs",
    "content": "﻿using System;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests.Operators\n{\n    [Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]\n    public class TakeTest\n    {\n        [TestMethod]\n        public void TakeCount()\n        {\n            var range = Observable.Range(1, 10);\n\n            AssertEx.Throws<ArgumentOutOfRangeException>(() => range.Take(-1));\n\n            range.Take(0).ToArray().Wait().Length.Is(0);\n\n            range.Take(3).ToArrayWait().IsCollection(1, 2, 3);\n            range.Take(15).ToArrayWait().IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/ToTest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests.Operators\n{\n    [TestClass]\n    public class ToTest\n    {\n\n        [TestMethod]\n        public void ToArray()\n        {\n            Observable.Empty<int>().ToArray().Wait().IsCollection();\n            Observable.Return(10).ToArray().Wait().IsCollection(10);\n            Observable.Range(1, 10).ToArray().Wait().IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n\n        [TestMethod]\n        public void ToList()\n        {\n            Observable.Empty<int>().ToList().Wait().IsCollection();\n            Observable.Return(10).ToList().Wait().IsCollection(10);\n            Observable.Range(1, 10).ToList().Wait().IsCollection(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/Tools/ChainingAssertion.Unity.cs",
    "content": "﻿// modified for Unity\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\n\nnamespace Microsoft.VisualStudio.TestTools.UnitTesting\n{\n    #region Extensions\n\n    [System.Diagnostics.DebuggerStepThroughAttribute]\n    public static partial class AssertEx\n    {\n        /// <summary>Assert.AreEqual, if T is IEnumerable then CollectionAssert.AreEqual</summary>\n        public static void Is<T>(this T actual, T expected, string message = \"\")\n        {\n            if (typeof(T) != typeof(string) && typeof(IEnumerable).IsAssignableFrom(typeof(T)))\n            {\n                ((IEnumerable)actual).Cast<object>().Is(((IEnumerable)expected).Cast<object>(), message);\n                return;\n            }\n            \n            Assert.AreEqual(expected, actual, message);\n        }\n\n        /// <summary>Assert.IsTrue(predicate(value))</summary>\n        public static void Is<T>(this T value, Func<T, bool> predicate, string message = \"\")\n        {\n            Assert.IsTrue(predicate(value), message);\n        }\n\n        /// <summary>CollectionAssert.AreEqual</summary>\n        public static void IsCollection<T>(this IEnumerable<T> actual, params T[] expected)\n        {\n            IsCollection(actual, expected.AsEnumerable());\n        }\n\n        /// <summary>CollectionAssert.AreEqual</summary>\n        public static void IsCollection<T>(this IEnumerable<T> actual, IEnumerable<T> expected, string message = \"\")\n        {\n            CollectionAssert.AreEqual(expected.ToArray(), actual.ToArray(), message);\n        }\n\n        /// <summary>CollectionAssert.AreEqual</summary>\n        public static void IsCollection<T>(this IEnumerable<T> actual, IEnumerable<T> expected, IEqualityComparer<T> comparer, string message = \"\")\n        {\n            IsCollection(actual, expected, comparer.Equals, message);\n        }\n\n        /// <summary>CollectionAssert.AreEqual</summary>\n        public static void IsCollection<T>(this IEnumerable<T> actual, IEnumerable<T> expected, Func<T, T, bool> equalityComparison, string message = \"\")\n        {\n            CollectionAssert.AreEqual(expected.ToArray(), actual.ToArray(), new ComparisonComparer<T>(equalityComparison), message);\n        }\n\n        /// <summary>Assert.AreNotEqual, if T is IEnumerable then CollectionAssert.AreNotEqual</summary>\n        public static void IsNot<T>(this T actual, T notExpected, string message = \"\")\n        {\n            if (typeof(T) != typeof(string) && typeof(IEnumerable).IsAssignableFrom(typeof(T)))\n            {\n                ((IEnumerable)actual).Cast<object>().IsNot(((IEnumerable)notExpected).Cast<object>(), message);\n                return;\n            }\n\n            Assert.AreNotEqual(notExpected, actual, message);\n        }\n\n        /// <summary>CollectionAssert.AreNotEqual</summary>\n        public static void IsNotCollection<T>(this IEnumerable<T> actual, params T[] notExpected)\n        {\n            IsNotCollection(actual, notExpected.AsEnumerable());\n        }\n\n        /// <summary>CollectionAssert.AreNotEqual</summary>\n        public static void IsNotCollection<T>(this IEnumerable<T> actual, IEnumerable<T> notExpected, string message = \"\")\n        {\n            CollectionAssert.AreNotEqual(notExpected.ToArray(), actual.ToArray(), message);\n        }\n\n        /// <summary>CollectionAssert.AreNotEqual</summary>\n        public static void IsNotCollection<T>(this IEnumerable<T> actual, IEnumerable<T> notExpected, IEqualityComparer<T> comparer, string message = \"\")\n        {\n            IsNotCollection(actual, notExpected, comparer.Equals, message);\n        }\n\n        /// <summary>CollectionAssert.AreNotEqual</summary>\n        public static void IsNotCollection<T>(this IEnumerable<T> actual, IEnumerable<T> notExpected, Func<T, T, bool> equalityComparison, string message = \"\")\n        {\n            CollectionAssert.AreNotEqual(notExpected.ToArray(), actual.ToArray(), new ComparisonComparer<T>(equalityComparison), message);\n        }\n\n        /// <summary>Assert.IsNull</summary>\n        public static void IsNull<T>(this T value, string message = \"\")\n        {\n            Assert.IsNull(value, message);\n        }\n\n        /// <summary>Assert.IsNotNull</summary>\n        public static void IsNotNull<T>(this T value, string message = \"\")\n        {\n            Assert.IsNotNull(value, message);\n        }\n\n        /// <summary>Is(true)</summary>\n        public static void IsTrue(this bool value, string message = \"\")\n        {\n            value.Is(true, message);\n        }\n\n        /// <summary>Is(false)</summary>\n        public static void IsFalse(this bool value, string message = \"\")\n        {\n            value.Is(false, message);\n        }\n\n        /// <summary>Assert.AreSame</summary>\n        public static void IsSameReferenceAs<T>(this T actual, T expected, string message = \"\")\n        {\n            Assert.AreSame(expected, actual, message);\n        }\n\n        /// <summary>Assert.AreNotSame</summary>\n        public static void IsNotSameReferenceAs<T>(this T actual, T notExpected, string message = \"\")\n        {\n            Assert.AreNotSame(notExpected, actual, message);\n        }\n\n        /// <summary>Assert.IsInstanceOf</summary>\n        public static TExpected IsInstanceOf<TExpected>(this object value, string message = \"\")\n        {\n            Assert.IsInstanceOfType(value, typeof(TExpected), message);\n            return (TExpected)value;\n        }\n\n        /// <summary>Assert.IsNotInstanceOf</summary>\n        public static void IsNotInstanceOf<TWrong>(this object value, string message = \"\")\n        {\n            Assert.IsNotInstanceOfType(value, typeof(TWrong), message);\n        }\n\n        /// <summary>Alternative of ExpectedExceptionAttribute(allow derived type)</summary>\n        public static T Catch<T>(Action testCode, string message = \"\") where T : Exception\n        {\n            var exception = ExecuteCode(testCode);\n            var headerMsg = \"Failed Throws<\" + typeof(T).Name + \">.\";\n            var additionalMsg = string.IsNullOrEmpty(message) ? \"\" : \", \" + message;\n\n            if (exception == null)\n            {\n                var formatted = headerMsg + \" No exception was thrown\" + additionalMsg;\n                Assert.Fail(formatted);\n            }\n            else if (!typeof(T).IsInstanceOfType(exception))\n            {\n                var formatted = string.Format(\"{0} Catched:{1}{2}\", headerMsg, exception.GetType().Name, additionalMsg);\n                Assert.Fail(formatted);\n            }\n\n            return (T)exception;\n        }\n\n        /// <summary>Alternative of ExpectedExceptionAttribute(not allow derived type)</summary>\n        public static T Throws<T>(Action testCode, string message = \"\") where T : Exception\n        {\n            var exception = Catch<T>(testCode, message);\n\n            if (!typeof(T).Equals(exception.GetType()))\n            {\n                var headerMsg = \"Failed Throws<\" + typeof(T).Name + \">.\";\n                var additionalMsg = string.IsNullOrEmpty(message) ? \"\" : \", \" + message;\n                var formatted = string.Format(\"{0} Catched:{1}{2}\", headerMsg, exception.GetType().Name, additionalMsg);\n                Assert.Fail(formatted);\n            }\n\n            return (T)exception;\n        }\n\n        /// <summary>does not throw any exceptions</summary>\n        public static void DoesNotThrow(Action testCode, string message = \"\")\n        {\n            var exception = ExecuteCode(testCode);\n            if (exception != null)\n            {\n                var formatted = string.Format(\"Failed DoesNotThrow. Catched:{0}{1}\", exception.GetType().Name, string.IsNullOrEmpty(message) ? \"\" : \", \" + message);\n                Assert.Fail(formatted);\n            }\n        }\n\n        /// <summary>execute action and return exception when catched otherwise return null</summary>\n        private static Exception ExecuteCode(Action testCode)\n        {\n            try\n            {\n                testCode();\n                return null;\n            }\n            catch (Exception e)\n            {\n                return e;\n            }\n        }\n\n        /// <summary>EqualityComparison to IComparer Converter for CollectionAssert</summary>\n        private class ComparisonComparer<T> : IComparer\n        {\n            readonly Func<T, T, bool> comparison;\n\n            public ComparisonComparer(Func<T, T, bool> comparison)\n            {\n                this.comparison = comparison;\n            }\n\n            public int Compare(object x, object y)\n            {\n                return (comparison != null)\n                    ? comparison((T)x, (T)y) ? 0 : -1\n                    : object.Equals(x, y) ? 0 : -1;\n            }\n        }\n\n        private class ReflectAccessor<T>\n        {\n            public Func<object> GetValue { get; private set; }\n            public Action<object> SetValue { get; private set; }\n\n            public ReflectAccessor(T target, string name)\n            {\n                var field = typeof(T).GetField(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);\n                if (field != null)\n                {\n                    GetValue = () => field.GetValue(target);\n                    SetValue = value => field.SetValue(target, value);\n                    return;\n                }\n\n                var prop = typeof(T).GetProperty(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);\n                if (prop != null)\n                {\n                    GetValue = () => prop.GetValue(target, null);\n                    SetValue = value => prop.SetValue(target, value, null);\n                    return;\n                }\n\n                throw new ArgumentException(string.Format(\"\\\"{0}\\\" not found : Type <{1}>\", name, typeof(T).Name));\n            }\n        }\n\n        #region StructuralEqual\n\n        /// <summary>Assert by deep recursive value equality compare</summary>\n        public static void IsStructuralEqual(this object actual, object expected, string message = \"\")\n        {\n            message = (string.IsNullOrEmpty(message) ? \"\" : \", \" + message);\n            if (object.ReferenceEquals(actual, expected)) return;\n\n            if (actual == null) { Assert.Fail(\"actual is null\" + message); return; }\n            if (expected == null) { Assert.Fail(\"actual is not null\" + message); return; }\n            if (actual.GetType() != expected.GetType())\n            {\n                var msg = string.Format(\"expected type is {0} but actual type is {1}{2}\",\n                    expected.GetType().Name, actual.GetType().Name, message);\n                Assert.Fail(msg);\n                return;\n            }\n\n            var r = StructuralEqual(actual, expected, new[] { actual.GetType().Name }); // root type\n            if (!r.IsEquals)\n            {\n                var msg = string.Format(\"is not structural equal, failed at {0}, actual = {1} expected = {2}{3}\",\n                    string.Join(\".\", r.Names.ToArray()), r.Left, r.Right, message);\n                Assert.Fail(msg);\n                return;\n            }\n        }\n\n        /// <summary>Assert by deep recursive value equality compare</summary>\n        public static void IsNotStructuralEqual(this object actual, object expected, string message = \"\")\n        {\n            message = (string.IsNullOrEmpty(message) ? \"\" : \", \" + message);\n            if (object.ReferenceEquals(actual, expected))\n            {\n                Assert.Fail(\"actual is same reference\" + message);\n                return;\n            }\n\n            if (actual == null) return;\n            if (expected == null) return;\n            if (actual.GetType() != expected.GetType())\n            {\n                return;\n            }\n\n            var r = StructuralEqual(actual, expected, new[] { actual.GetType().Name }); // root type\n            if (r.IsEquals)\n            {\n                Assert.Fail(\"is structural equal\" + message);\n            }\n        }\n\n        static EqualInfo SequenceEqual(IEnumerable leftEnumerable, IEnumerable rightEnumarable, IEnumerable<string> names)\n        {\n            var le = leftEnumerable.GetEnumerator();\n            using (le as IDisposable)\n            {\n                var re = rightEnumarable.GetEnumerator();\n\n                using (re as IDisposable)\n                {\n                    var index = 0;\n                    while (true)\n                    {\n                        object lValue = null;\n                        object rValue = null;\n                        var lMove = le.MoveNext();\n                        var rMove = re.MoveNext();\n                        if (lMove) lValue = le.Current;\n                        if (rMove) rValue = re.Current;\n\n                        if (lMove && rMove)\n                        {\n                            var result = StructuralEqual(lValue, rValue, names.Concat(new[] { \"[\" + index + \"]\" }));\n                            if (!result.IsEquals)\n                            {\n                                return result;\n                            }\n                        }\n\n                        if ((lMove == true && rMove == false) || (lMove == false && rMove == true))\n                        {\n                            return new EqualInfo { IsEquals = false, Left = lValue, Right = rValue, Names = names.Concat(new[] { \"[\" + index + \"]\" }) };\n                        }\n                        if (lMove == false && rMove == false) break;\n                        index++;\n                    }\n                }\n            }\n            return new EqualInfo { IsEquals = true, Left = leftEnumerable, Right = rightEnumarable, Names = names };\n        }\n\n        static EqualInfo StructuralEqual(object left, object right, IEnumerable<string> names)\n        {\n            // type and basic checks\n            if (object.ReferenceEquals(left, right)) return new EqualInfo { IsEquals = true, Left = left, Right = right, Names = names };\n            if (left == null || right == null) return new EqualInfo { IsEquals = false, Left = left, Right = right, Names = names };\n            var lType = left.GetType();\n            var rType = right.GetType();\n            if (lType != rType) return new EqualInfo { IsEquals = false, Left = left, Right = right, Names = names };\n\n            var type = left.GetType();\n\n            // not object(int, string, etc...)\n            if (Type.GetTypeCode(type) != TypeCode.Object)\n            {\n                return new EqualInfo { IsEquals = left.Equals(right), Left = left, Right = right, Names = names };\n            }\n\n            // is sequence\n            if (typeof(IEnumerable).IsAssignableFrom(type))\n            {\n                return SequenceEqual((IEnumerable)left, (IEnumerable)right, names);\n            }\n\n            // IEquatable<T>\n            var equatable = typeof(IEquatable<>).MakeGenericType(type);\n            if (equatable.IsAssignableFrom(type))\n            {\n                var result = (bool)equatable.GetMethod(\"Equals\").Invoke(left, new[] { right });\n                return new EqualInfo { IsEquals = result, Left = left, Right = right, Names = names };\n            }\n\n            // is object\n            var fields = left.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public);\n            var properties = left.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public).Where(x => x.GetGetMethod(false) != null);\n            var members = fields.Cast<MemberInfo>().Concat(properties.Cast<MemberInfo>());\n\n            foreach (var mi in members)\n            {\n                var concatNames = names.Concat(new[] { (string)mi.Name });\n                object lv = null;\n                object rv = null;\n                if (mi is FieldInfo)\n                {\n                    var fi = (FieldInfo)mi;\n                    fi.GetValue(left);\n                    fi.GetValue(right);\n                }\n                else if (mi is PropertyInfo)\n                {\n                    var pi = (PropertyInfo)mi;\n                    pi.GetValue(left, null);\n                    pi.GetValue(right, null);\n                }\n\n                var result = StructuralEqual(lv, rv, concatNames);\n                if (!result.IsEquals)\n                {\n                    return result;\n                }\n            }\n\n            return new EqualInfo { IsEquals = true, Left = left, Right = right, Names = names };\n        }\n\n        private class EqualInfo\n        {\n            public object Left;\n            public object Right;\n            public bool IsEquals;\n            public IEnumerable<string> Names;\n        }\n\n        #endregion\n    }\n\n    #endregion\n}"
  },
  {
    "path": "Tests/UniRx.Tests/Tools/Init.cs",
    "content": "﻿using Microsoft.VisualStudio.TestTools.UnitTesting;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace UniRx.Tests\n{\n    [TestClass]\n    public class Init\n    {\n        [AssemblyInitialize]\n        public static void Initialize(TestContext ctx)\n        {\n            Scheduler.DefaultSchedulers.SetDotNetCompatible();\n        }\n    }\n}"
  },
  {
    "path": "Tests/UniRx.Tests/Tools/TestUtil.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace UniRx.Tests\n{\n    public static class TestUtil\n    {\n        public static T[] ToArrayWait<T>(this IObservable<T> source)\n        {\n            return source.ToArray().Wait();\n        }\n\n        public static RecordObserver<T> Record<T>(this IObservable<T> source)\n        {\n            var d = new SingleAssignmentDisposable();\n            var observer = new RecordObserver<T>(d);\n            d.Disposable = source.Subscribe(observer);\n\n            return observer;\n        }\n    }\n\n    public class RecordObserver<T> : IObserver<T>\n    {\n        readonly object gate = new object();\n        readonly IDisposable subscription;\n\n        public List<T> Values { get; set; }\n        public List<Notification<T>> Notifications { get; set; }\n\n        public RecordObserver(IDisposable subscription)\n        {\n            this.subscription = subscription;\n            this.Values = new List<T>();\n            this.Notifications = new List<Notification<T>>();\n        }\n\n        public void DisposeSubscription()\n        {\n            subscription.Dispose();\n        }\n\n        void IObserver<T>.OnNext(T value)\n        {\n            lock (gate)\n            {\n                Values.Add(value);\n                Notifications.Add(Notification.CreateOnNext<T>(value));\n            }\n        }\n\n        void IObserver<T>.OnError(Exception error)\n        {\n            lock (gate)\n            {\n                Notifications.Add(Notification.CreateOnError<T>(error));\n            }\n        }\n        void IObserver<T>.OnCompleted()\n        {\n            lock (gate)\n            {\n                Notifications.Add(Notification.CreateOnCompleted<T>());\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/UniRx.Tests.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{BED8E326-96B5-4B12-8834-FBEB3FA11C04}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UniRx.Tests</RootNamespace>\n    <AssemblyName>UniRx.Tests</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <VisualStudioVersion Condition=\"'$(VisualStudioVersion)' == ''\">10.0</VisualStudioVersion>\n    <VSToolsPath Condition=\"'$(VSToolsPath)' == ''\">$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)</VSToolsPath>\n    <ReferencePath>$(ProgramFiles)\\Common Files\\microsoft shared\\VSTT\\$(VisualStudioVersion)\\UITestExtensionPackages</ReferencePath>\n    <IsCodedUITest>False</IsCodedUITest>\n    <TestProjectType>UnitTest</TestProjectType>\n    <SolutionDir Condition=\"$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'\">..\\..\\</SolutionDir>\n    <RestorePackages>true</RestorePackages>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>TRACE;DEBUG;NOREF_UNITYENGINE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NOREF_UNITYENGINE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Rx-Core.2.2.5\\lib\\net45\\System.Reactive.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Reactive.Interfaces, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Rx-Interfaces.2.2.5\\lib\\net45\\System.Reactive.Interfaces.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Reactive.Linq, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Rx-Linq.2.2.5\\lib\\net45\\System.Reactive.Linq.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Reactive.PlatformServices, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Rx-PlatformServices.2.2.5\\lib\\net45\\System.Reactive.PlatformServices.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <Choose>\n    <When Condition=\"('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'\">\n      <ItemGroup>\n        <Reference Include=\"Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\" />\n      </ItemGroup>\n    </When>\n    <Otherwise>\n      <ItemGroup>\n        <Reference Include=\"Microsoft.VisualStudio.QualityTools.UnitTestFramework\" />\n      </ItemGroup>\n    </Otherwise>\n  </Choose>\n  <ItemGroup>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\ArrayPool.cs\">\n      <Link>AsyncInternal\\ArrayPool.cs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\Assets\\Plugins\\UniRx\\Scripts\\Async\\Internal\\MinimumQueue.cs\">\n      <Link>AsyncInternal\\MinimumQueue.cs</Link>\n    </Compile>\n    <Compile Include=\"ArrayPoolTest.cs\" />\n    <Compile Include=\"MicroCoroutineTest.cs\" />\n    <Compile Include=\"ReactivePropertyTest.cs\" />\n    <Compile Include=\"ContinueWithTest.cs\" />\n    <Compile Include=\"SelectWhereOptimizeTest.cs\" />\n    <Compile Include=\"Tools\\ChainingAssertion.Unity.cs\" />\n    <Compile Include=\"Tools\\Init.cs\" />\n    <Compile Include=\"Observable.ConcurrencyTest.cs\" />\n    <Compile Include=\"ConversionTest.cs\" />\n    <Compile Include=\"DoTest.cs\" />\n    <Compile Include=\"DurabilityTest.cs\" />\n    <Compile Include=\"ToTest.cs\" />\n    <Compile Include=\"WhenAllTest.cs\" />\n    <Compile Include=\"SelectMany.cs\" />\n    <Compile Include=\"AggregateTest.cs\" />\n    <Compile Include=\"TakeTest.cs\" />\n    <Compile Include=\"RangeTest.cs\" />\n    <Compile Include=\"QueueWorkerTest.cs\" />\n    <Compile Include=\"DisposableTest.cs\" />\n    <Compile Include=\"Observable.ErrorHandlingTest.cs\" />\n    <Compile Include=\"Observable.Events.cs\" />\n    <Compile Include=\"Observable.PagingTest.cs\" />\n    <Compile Include=\"Observable.TimeTest.cs\" />\n    <Compile Include=\"Observable.ConcatTest.cs\" />\n    <Compile Include=\"ObservableTest.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"SchedulerTest.cs\" />\n    <Compile Include=\"ReactriveDictionaryTest.cs\" />\n    <Compile Include=\"SubjectTest.cs\" />\n    <Compile Include=\"Observable.GeneratorTest.cs\" />\n    <Compile Include=\"Tools\\TestUtil.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup />\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\Dlls\\UniRx.Library\\UniRx.Library.csproj\">\n      <Project>{21c57e17-d4b8-4da4-a6a2-07d8b2e5b3bd}</Project>\n      <Name>UniRx.Library</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Choose>\n    <When Condition=\"'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'\">\n      <ItemGroup>\n        <Reference Include=\"Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n          <Private>False</Private>\n        </Reference>\n        <Reference Include=\"Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n          <Private>False</Private>\n        </Reference>\n        <Reference Include=\"Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n          <Private>False</Private>\n        </Reference>\n        <Reference Include=\"Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n          <Private>False</Private>\n        </Reference>\n      </ItemGroup>\n    </When>\n  </Choose>\n  <Import Project=\"$(VSToolsPath)\\TeamTest\\Microsoft.TestTools.targets\" Condition=\"Exists('$(VSToolsPath)\\TeamTest\\Microsoft.TestTools.targets')\" />\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <Import Project=\"$(SolutionDir)\\.nuget\\NuGet.targets\" Condition=\"Exists('$(SolutionDir)\\.nuget\\NuGet.targets')\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Tests/UniRx.Tests/WhenAllTest.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace UniRx.Tests.Operators\n{\n    [Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]\n    public class WhenAllTest\n    {\n        [TestMethod]\n        public void WhenAllEmpty()\n        {\n            var xs = Observable.WhenAll(new IObservable<int>[0]).Wait();\n            xs.Length.Is(0);\n\n            var xs2 = Observable.WhenAll(Enumerable.Empty<IObservable<int>>().Select(x => x)).Wait();\n            xs2.Length.Is(0);\n        }\n\n        [TestMethod]\n        public void WhenAll()\n        {\n            var xs = Observable.WhenAll(\n                    Observable.Return(100),\n                    Observable.Timer(TimeSpan.FromSeconds(1)).Select(_ => 5),\n                    Observable.Range(1, 4))\n                .Wait();\n\n            xs.IsCollection(100, 5, 4);\n        }\n\n        [TestMethod]\n        public void WhenAllEnumerable()\n        {\n            var xs = new[] {\n                    Observable.Return(100),\n                    Observable.Timer(TimeSpan.FromSeconds(1)).Select(_ => 5),\n                    Observable.Range(1, 4)\n            }.Select(x => x).WhenAll().Wait();\n\n            xs.IsCollection(100, 5, 4);\n        }\n\n        [TestMethod]\n        public void WhenAllUnitEmpty()\n        {\n            var xs = Observable.WhenAll(new IObservable<Unit>[0]).Wait();\n            xs.Is(Unit.Default);\n\n            var xs2 = Observable.WhenAll(Enumerable.Empty<IObservable<Unit>>().Select(x => x)).Wait();\n            xs2.Is(Unit.Default);\n        }\n\n        [TestMethod]\n        public void WhenAllUnit()\n        {\n            var xs = Observable.WhenAll(\n                    Observable.Return(100).AsUnitObservable(),\n                    Observable.Timer(TimeSpan.FromSeconds(1)).AsUnitObservable(),\n                    Observable.Range(1, 4).AsUnitObservable())\n                .Wait();\n\n            xs.Is(Unit.Default);\n        }\n\n        [TestMethod]\n        public void WhenAllUnitEnumerable()\n        {\n            var xs = new[] {\n                    Observable.Return(100).AsUnitObservable(),\n                    Observable.Timer(TimeSpan.FromSeconds(1)).AsUnitObservable(),\n                    Observable.Range(1, 4).AsUnitObservable()\n            }.Select(x => x).WhenAll().Wait();\n\n            xs.Is(Unit.Default);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/UniRx.Tests/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"ChainingAssertion\" version=\"1.7.1.0\" targetFramework=\"net45\" />\n  <package id=\"Rx-Core\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Interfaces\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-Linq\" version=\"2.2.5\" targetFramework=\"net45\" />\n  <package id=\"Rx-PlatformServices\" version=\"2.2.5\" targetFramework=\"net45\" />\n</packages>"
  },
  {
    "path": "UIElementsSchema/UIElements.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:editor=\"UnityEditor.Experimental.UIElements\" xmlns:engine=\"UnityEngine.Experimental.UIElements\" xmlns=\"UnityEditor.PackageManager.UI\" elementFormDefault=\"qualified\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import schemaLocation=\"UnityEngine.Experimental.UIElements.xsd\" namespace=\"UnityEngine.Experimental.UIElements\" />\n  <xs:import schemaLocation=\"UnityEditor.PackageManager.UI.xsd\" namespace=\"UnityEditor.PackageManager.UI\" />\n  <xs:import schemaLocation=\"UnityEditor.Experimental.UIElements.xsd\" namespace=\"UnityEditor.Experimental.UIElements\" />\n</xs:schema>"
  },
  {
    "path": "UIElementsSchema/UnityEditor.Experimental.UIElements.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:editor=\"UnityEditor.Experimental.UIElements\" xmlns:engine=\"UnityEngine.Experimental.UIElements\" xmlns=\"UnityEditor.PackageManager.UI\" elementFormDefault=\"qualified\" targetNamespace=\"UnityEditor.Experimental.UIElements\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import schemaLocation=\"UnityEngine.Experimental.UIElements.xsd\" namespace=\"UnityEngine.Experimental.UIElements\" />\n  <xs:complexType name=\"FloatFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"maxLength\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"password\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:attribute default=\"*\" name=\"maskCharacter\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"value\" type=\"xs:float\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"FloatField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:FloatFieldType\" />\n  <xs:complexType name=\"DoubleFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"maxLength\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"password\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:attribute default=\"*\" name=\"maskCharacter\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"value\" type=\"xs:double\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"DoubleField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:DoubleFieldType\" />\n  <xs:complexType name=\"IntegerFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"maxLength\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"password\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:attribute default=\"*\" name=\"maskCharacter\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"value\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"IntegerField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:IntegerFieldType\" />\n  <xs:complexType name=\"LongFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"maxLength\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"password\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:attribute default=\"*\" name=\"maskCharacter\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"value\" type=\"xs:long\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"LongField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:LongFieldType\" />\n  <xs:complexType name=\"CurveFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"CurveField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:CurveFieldType\" />\n  <xs:complexType name=\"ObjectFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"true\" name=\"allowSceneObjects\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"ObjectField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:ObjectFieldType\" />\n  <xs:complexType name=\"ColorFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"RGBA(0.000, 0.000, 0.000, 1.000)\" name=\"value\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"true\" name=\"showEyeDropper\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:attribute default=\"true\" name=\"showAlpha\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"hdr\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"ColorField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:ColorFieldType\" />\n  <xs:complexType name=\"EnumFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute name=\"type\" type=\"xs:string\" use=\"required\" />\n        <xs:attribute default=\"\" name=\"value\" type=\"xs:string\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"EnumField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:EnumFieldType\" />\n  <xs:complexType name=\"GradientFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"GradientField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:GradientFieldType\" />\n  <xs:complexType name=\"RectFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"x\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"y\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"w\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"h\" type=\"xs:float\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"RectField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:RectFieldType\" />\n  <xs:complexType name=\"Vector2FieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"x\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"y\" type=\"xs:float\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Vector2Field\" substitutionGroup=\"engine:VisualElement\" type=\"editor:Vector2FieldType\" />\n  <xs:complexType name=\"Vector3FieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"x\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"y\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"z\" type=\"xs:float\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Vector3Field\" substitutionGroup=\"engine:VisualElement\" type=\"editor:Vector3FieldType\" />\n  <xs:complexType name=\"Vector4FieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"x\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"y\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"z\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"w\" type=\"xs:float\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Vector4Field\" substitutionGroup=\"engine:VisualElement\" type=\"editor:Vector4FieldType\" />\n  <xs:complexType name=\"BoundsFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"cx\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"cy\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"cz\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"ex\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"ey\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"ez\" type=\"xs:float\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"BoundsField\" substitutionGroup=\"engine:VisualElement\" type=\"editor:BoundsFieldType\" />\n  <xs:simpleType name=\"PropertyControl_typeOf_Type\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Long\" />\n      <xs:enumeration value=\"Double\" />\n      <xs:enumeration value=\"Int\" />\n      <xs:enumeration value=\"Float\" />\n      <xs:enumeration value=\"String\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"PropertyControlType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute name=\"typeOf\" type=\"editor:PropertyControl_typeOf_Type\" use=\"required\" />\n        <xs:attribute default=\"\" name=\"value\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"label\" type=\"xs:string\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"PropertyControl\" substitutionGroup=\"engine:VisualElement\" type=\"editor:PropertyControlType\" />\n</xs:schema>"
  },
  {
    "path": "UIElementsSchema/UnityEditor.PackageManager.UI.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:editor=\"UnityEditor.Experimental.UIElements\" xmlns:engine=\"UnityEngine.Experimental.UIElements\" xmlns=\"UnityEditor.PackageManager.UI\" elementFormDefault=\"qualified\" targetNamespace=\"UnityEditor.PackageManager.UI\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:import schemaLocation=\"UnityEngine.Experimental.UIElements.xsd\" namespace=\"UnityEngine.Experimental.UIElements\" />\n  <xs:complexType name=\"PackageSearchFilterTabsType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"PackageSearchFilterTabs\" substitutionGroup=\"engine:VisualElement\" type=\"PackageSearchFilterTabsType\" />\n  <xs:complexType name=\"PackageItemType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"PackageItem\" substitutionGroup=\"engine:VisualElement\" type=\"PackageItemType\" />\n  <xs:complexType name=\"AlertType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Alert\" substitutionGroup=\"engine:VisualElement\" type=\"AlertType\" />\n  <xs:complexType name=\"PackageListType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"PackageList\" substitutionGroup=\"engine:VisualElement\" type=\"PackageListType\" />\n  <xs:complexType name=\"PackageGroupType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"PackageGroup\" substitutionGroup=\"engine:VisualElement\" type=\"PackageGroupType\" />\n  <xs:complexType name=\"PackageDetailsType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"PackageDetails\" substitutionGroup=\"engine:VisualElement\" type=\"PackageDetailsType\" />\n  <xs:complexType name=\"LoadingSpinnerType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"LoadingSpinner\" substitutionGroup=\"engine:VisualElement\" type=\"LoadingSpinnerType\" />\n  <xs:complexType name=\"PackagesLoadingType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"PackagesLoading\" substitutionGroup=\"engine:VisualElement\" type=\"PackagesLoadingType\" />\n</xs:schema>"
  },
  {
    "path": "UIElementsSchema/UnityEngine.Experimental.UIElements.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:editor=\"UnityEditor.Experimental.UIElements\" xmlns:engine=\"UnityEngine.Experimental.UIElements\" xmlns=\"UnityEditor.PackageManager.UI\" elementFormDefault=\"qualified\" targetNamespace=\"UnityEngine.Experimental.UIElements\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:complexType name=\"UXMLType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"xs:anyType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"UXML\" type=\"engine:UXMLType\" />\n  <xs:simpleType name=\"VisualElement_pickingMode_Type\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Position\" />\n      <xs:enumeration value=\"Ignore\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"VisualElementType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"xs:anyType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"VisualElement\" type=\"engine:VisualElementType\" />\n  <xs:complexType name=\"IMGUIContainerType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"IMGUIContainer\" substitutionGroup=\"engine:VisualElement\" type=\"engine:IMGUIContainerType\" />\n  <xs:complexType name=\"ImageType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Image\" substitutionGroup=\"engine:VisualElement\" type=\"engine:ImageType\" />\n  <xs:complexType name=\"LabelType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Label\" substitutionGroup=\"engine:VisualElement\" type=\"engine:LabelType\" />\n  <xs:complexType name=\"RepeatButtonType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"delay\" type=\"xs:long\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"interval\" type=\"xs:long\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"RepeatButton\" substitutionGroup=\"engine:VisualElement\" type=\"engine:RepeatButtonType\" />\n  <xs:complexType name=\"ScrollerButtonType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"delay\" type=\"xs:long\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"interval\" type=\"xs:long\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"ScrollerButton\" substitutionGroup=\"engine:VisualElement\" type=\"engine:ScrollerButtonType\" />\n  <xs:complexType name=\"ScrollViewType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"showHorizontalScroller\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"showVerticalScroller\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"horizontalLowValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"horizontalHighValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"10\" name=\"horizontalPageSize\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"horizontalValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"verticalLowValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"verticalHighValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"10\" name=\"verticalPageSize\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"verticalValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"ScrollView\" substitutionGroup=\"engine:VisualElement\" type=\"engine:ScrollViewType\" />\n  <xs:simpleType name=\"Scroller_direction_Type\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Horizontal\" />\n      <xs:enumeration value=\"Vertical\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"ScrollerType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"lowValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"highValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"Vertical\" name=\"direction\" type=\"engine:Scroller_direction_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"value\" type=\"xs:float\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Scroller\" substitutionGroup=\"engine:VisualElement\" type=\"engine:ScrollerType\" />\n  <xs:simpleType name=\"Slider_direction_Type\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Horizontal\" />\n      <xs:enumeration value=\"Vertical\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"SliderType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"lowValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"10\" name=\"highValue\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"10\" name=\"pageSize\" type=\"xs:float\" use=\"optional\" />\n        <xs:attribute default=\"Vertical\" name=\"direction\" type=\"engine:Slider_direction_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"value\" type=\"xs:float\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Slider\" substitutionGroup=\"engine:VisualElement\" type=\"engine:SliderType\" />\n  <xs:complexType name=\"TextFieldType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"maxLength\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"password\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:attribute default=\"*\" name=\"maskCharacter\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"multiline\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"TextField\" substitutionGroup=\"engine:VisualElement\" type=\"engine:TextFieldType\" />\n  <xs:complexType name=\"ToggleType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"0\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"label\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"false\" name=\"value\" type=\"xs:boolean\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Toggle\" substitutionGroup=\"engine:VisualElement\" type=\"engine:ToggleType\" />\n  <xs:complexType name=\"VisualContainerType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"VisualContainer\" substitutionGroup=\"engine:VisualElement\" type=\"engine:VisualContainerType\" />\n  <xs:complexType name=\"TemplateContainerType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute name=\"template\" type=\"xs:string\" use=\"required\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"TemplateContainer\" substitutionGroup=\"engine:VisualElement\" type=\"engine:TemplateContainerType\" />\n  <xs:complexType name=\"BoxType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Box\" substitutionGroup=\"engine:VisualElement\" type=\"engine:BoxType\" />\n  <xs:complexType name=\"PopupWindowType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"engine:VisualElement\" />\n        </xs:sequence>\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"PopupWindow\" substitutionGroup=\"engine:VisualElement\" type=\"engine:PopupWindowType\" />\n  <xs:complexType name=\"ListViewType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"30\" name=\"itemHeight\" type=\"xs:int\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"ListView\" substitutionGroup=\"engine:VisualElement\" type=\"engine:ListViewType\" />\n  <xs:complexType name=\"ButtonType\">\n    <xs:complexContent mixed=\"false\">\n      <xs:restriction base=\"engine:VisualElementType\">\n        <xs:attribute default=\"\" name=\"name\" type=\"xs:string\" use=\"optional\" />\n        <xs:attribute default=\"Position\" name=\"pickingMode\" type=\"engine:VisualElement_pickingMode_Type\" use=\"optional\" />\n        <xs:attribute default=\"-1\" name=\"focusIndex\" type=\"xs:int\" use=\"optional\" />\n        <xs:attribute default=\"\" name=\"text\" type=\"xs:string\" use=\"optional\" />\n        <xs:anyAttribute processContents=\"lax\" />\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:element name=\"Button\" substitutionGroup=\"engine:VisualElement\" type=\"engine:ButtonType\" />\n</xs:schema>"
  },
  {
    "path": "UWP/project.json",
    "content": "﻿{\n  \"dependencies\": {\n    \"Microsoft.ApplicationInsights\": \"1.0.0\",\n    \"Microsoft.ApplicationInsights.PersistenceChannel\": \"1.0.0\",\n    \"Microsoft.ApplicationInsights.WindowsApps\": \"1.0.0\",\n    \"Microsoft.NETCore.UniversalWindowsPlatform\": \"5.0.0\"\n  },\n  \"frameworks\": {\n    \"uap10.0\": {}\n  },\n  \"runtimes\": {\n    \"win10-arm\": {},\n    \"win10-arm-aot\": {},\n    \"win10-x86\": {},\n    \"win10-x86-aot\": {},\n    \"win10-x64\": {},\n    \"win10-x64-aot\": {}\n  }\n}"
  },
  {
    "path": "UWP/project.lock.json",
    "content": "{\n  \"version\": 2,\n  \"targets\": {\n    \"UAP,Version=v10.0\": {\n      \"Microsoft.ApplicationInsights/1.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.CSharp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.0\",\n          \"Microsoft.NETCore.Targets\": \"1.0.0\",\n          \"Microsoft.VisualBasic\": \"10.0.0\",\n          \"System.AppContext\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.ComponentModel.Annotations\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Calendars\": \"4.0.0\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.Compression.ZipFile\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Parallel\": \"4.0.0\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.NetworkInformation\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Metadata\": \"1.0.22\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Numerics\": \"4.0.0\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Tasks.Dataflow\": \"4.5.25\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.0\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"Microsoft.NETCore.Runtime/1.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Targets/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.0\",\n          \"Microsoft.NETCore.Targets.UniversalWindowsPlatform\": \"5.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Targets.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.0\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.0\",\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\",\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Data.Common\": \"4.0.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.StackTrace\": \"4.0.0\",\n          \"System.IO.IsolatedStorage\": \"4.0.0\",\n          \"System.Net.Http.Rtc\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.10\",\n          \"System.Net.Sockets\": \"4.0.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.0\",\n          \"System.Reflection.Context\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Runtime.Serialization.Json\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.0\",\n          \"System.ServiceModel.Duplex\": \"4.0.0\",\n          \"System.ServiceModel.Http\": \"4.0.10\",\n          \"System.ServiceModel.NetTcp\": \"4.0.0\",\n          \"System.ServiceModel.Primitives\": \"4.0.0\",\n          \"System.ServiceModel.Security\": \"4.0.0\",\n          \"System.Text.Encoding.CodePages\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.VisualBasic/10.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"System.AppContext/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Collections.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Collections.Concurrent/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.1.37\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.NonGeneric.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Specialized.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Dynamic.Runtime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Globalization/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Globalization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Globalization.Calendars/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Calendars.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Globalization.Calendars.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Globalization.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.IO.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.IO.Compression/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Linq.Expressions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Linq.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Sockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Private.Networking/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Networking.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Uri.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Reflection.Context/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Reflection.Metadata/1.0.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Runtime.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Runtime.Handles/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Handles.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Handles.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Runtime.Numerics/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Json.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Xml.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Text.RegularExpressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Threading.Overlapped/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.5.25\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Concurrent\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.0\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.Timer.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          }\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-arm\": {\n      \"Microsoft.ApplicationInsights/1.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.CSharp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.0\",\n          \"Microsoft.NETCore.Targets\": \"1.0.0\",\n          \"Microsoft.VisualBasic\": \"10.0.0\",\n          \"System.AppContext\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.ComponentModel.Annotations\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Calendars\": \"4.0.0\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.Compression.ZipFile\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Parallel\": \"4.0.0\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.NetworkInformation\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Metadata\": \"1.0.22\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Numerics\": \"4.0.0\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Tasks.Dataflow\": \"4.5.25\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.0\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR-arm\": \"1.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR-arm/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"[4.0.10]\",\n          \"System.Diagnostics.Contracts\": \"[4.0.0]\",\n          \"System.Diagnostics.Debug\": \"[4.0.10]\",\n          \"System.Diagnostics.StackTrace\": \"[4.0.0]\",\n          \"System.Diagnostics.Tools\": \"[4.0.0]\",\n          \"System.Diagnostics.Tracing\": \"[4.0.20]\",\n          \"System.Globalization\": \"[4.0.10]\",\n          \"System.Globalization.Calendars\": \"[4.0.0]\",\n          \"System.IO\": \"[4.0.10]\",\n          \"System.ObjectModel\": \"[4.0.10]\",\n          \"System.Private.Uri\": \"[4.0.0]\",\n          \"System.Reflection\": \"[4.0.10]\",\n          \"System.Reflection.Extensions\": \"[4.0.0]\",\n          \"System.Reflection.Primitives\": \"[4.0.0]\",\n          \"System.Resources.ResourceManager\": \"[4.0.0]\",\n          \"System.Runtime\": \"[4.0.20]\",\n          \"System.Runtime.Extensions\": \"[4.0.10]\",\n          \"System.Runtime.Handles\": \"[4.0.0]\",\n          \"System.Runtime.InteropServices\": \"[4.0.20]\",\n          \"System.Text.Encoding\": \"[4.0.10]\",\n          \"System.Text.Encoding.Extensions\": \"[4.0.10]\",\n          \"System.Threading\": \"[4.0.10]\",\n          \"System.Threading.Tasks\": \"[4.0.10]\",\n          \"System.Threading.Timer\": \"[4.0.0]\"\n        },\n        \"compile\": {\n          \"ref/dotnet/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-arm/lib/dotnet/mscorlib.ni.dll\": {}\n        },\n        \"native\": {\n          \"runtimes/win8-arm/native/clretwrc.dll\": {},\n          \"runtimes/win8-arm/native/coreclr.dll\": {},\n          \"runtimes/win8-arm/native/dbgshim.dll\": {},\n          \"runtimes/win8-arm/native/mscordaccore.dll\": {},\n          \"runtimes/win8-arm/native/mscordbi.dll\": {},\n          \"runtimes/win8-arm/native/mscorrc.debug.dll\": {},\n          \"runtimes/win8-arm/native/mscorrc.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.0\",\n          \"Microsoft.NETCore.Targets.UniversalWindowsPlatform\": \"5.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Targets.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.0\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.0\",\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\",\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Data.Common\": \"4.0.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.StackTrace\": \"4.0.0\",\n          \"System.IO.IsolatedStorage\": \"4.0.0\",\n          \"System.Net.Http.Rtc\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.10\",\n          \"System.Net.Sockets\": \"4.0.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.0\",\n          \"System.Reflection.Context\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Runtime.Serialization.Json\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.0\",\n          \"System.ServiceModel.Duplex\": \"4.0.0\",\n          \"System.ServiceModel.Http\": \"4.0.10\",\n          \"System.ServiceModel.NetTcp\": \"4.0.0\",\n          \"System.ServiceModel.Primitives\": \"4.0.0\",\n          \"System.ServiceModel.Security\": \"4.0.0\",\n          \"System.Text.Encoding.CodePages\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.VisualBasic/10.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"System.AppContext/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.1.37\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.NonGeneric.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Specialized.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Calendars.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"System.IO.Compression/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.IO.Compression.clrcompression-arm\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.clrcompression-arm/4.0.0\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win10-arm/native/ClrCompression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Sockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.Networking/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Networking.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.ILGeneration.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.Lightweight.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.0.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Handles.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.5.25\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Concurrent\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.0\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-arm-aot\": {\n      \"Microsoft.ApplicationInsights/1.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.CSharp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.0\",\n          \"Microsoft.NETCore.Targets\": \"1.0.0\",\n          \"Microsoft.VisualBasic\": \"10.0.0\",\n          \"System.AppContext\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.ComponentModel.Annotations\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Calendars\": \"4.0.0\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.Compression.ZipFile\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Parallel\": \"4.0.0\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.NetworkInformation\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Metadata\": \"1.0.22\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Numerics\": \"4.0.0\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Tasks.Dataflow\": \"4.5.25\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.0\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.dll\": {},\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.Native\": \"1.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Runtime.Native/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"[4.0.10]\",\n          \"System.Diagnostics.Contracts\": \"[4.0.0]\",\n          \"System.Diagnostics.Debug\": \"[4.0.10]\",\n          \"System.Diagnostics.StackTrace\": \"[4.0.0]\",\n          \"System.Diagnostics.Tools\": \"[4.0.0]\",\n          \"System.Diagnostics.Tracing\": \"[4.0.20]\",\n          \"System.Globalization\": \"[4.0.10]\",\n          \"System.Globalization.Calendars\": \"[4.0.0]\",\n          \"System.IO\": \"[4.0.10]\",\n          \"System.ObjectModel\": \"[4.0.10]\",\n          \"System.Private.Uri\": \"[4.0.0]\",\n          \"System.Reflection\": \"[4.0.10]\",\n          \"System.Reflection.Extensions\": \"[4.0.0]\",\n          \"System.Reflection.Primitives\": \"[4.0.0]\",\n          \"System.Resources.ResourceManager\": \"[4.0.0]\",\n          \"System.Runtime\": \"[4.0.20]\",\n          \"System.Runtime.Extensions\": \"[4.0.10]\",\n          \"System.Runtime.Handles\": \"[4.0.0]\",\n          \"System.Runtime.InteropServices\": \"[4.0.20]\",\n          \"System.Text.Encoding\": \"[4.0.10]\",\n          \"System.Text.Encoding.Extensions\": \"[4.0.10]\",\n          \"System.Threading\": \"[4.0.10]\",\n          \"System.Threading.Tasks\": \"[4.0.10]\",\n          \"System.Threading.Timer\": \"[4.0.0]\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.0\",\n          \"Microsoft.NETCore.Targets.UniversalWindowsPlatform\": \"5.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Targets.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.0\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.0\",\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\",\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Data.Common\": \"4.0.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.StackTrace\": \"4.0.0\",\n          \"System.IO.IsolatedStorage\": \"4.0.0\",\n          \"System.Net.Http.Rtc\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.10\",\n          \"System.Net.Sockets\": \"4.0.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.0\",\n          \"System.Reflection.Context\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Runtime.Serialization.Json\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.0\",\n          \"System.ServiceModel.Duplex\": \"4.0.0\",\n          \"System.ServiceModel.Http\": \"4.0.10\",\n          \"System.ServiceModel.NetTcp\": \"4.0.0\",\n          \"System.ServiceModel.Primitives\": \"4.0.0\",\n          \"System.ServiceModel.Security\": \"4.0.0\",\n          \"System.Text.Encoding.CodePages\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.VisualBasic/10.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"System.AppContext/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.1.37\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.NonGeneric.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Specialized.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Calendars.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"System.IO.Compression/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.IO.Compression.clrcompression-arm\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.clrcompression-arm/4.0.0\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win10-arm/native/ClrCompression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Sockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.Networking/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Networking.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.ILGeneration.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.0.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Handles.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.5.25\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Concurrent\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.0\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x64\": {\n      \"Microsoft.ApplicationInsights/1.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.CSharp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.0\",\n          \"Microsoft.NETCore.Targets\": \"1.0.0\",\n          \"Microsoft.VisualBasic\": \"10.0.0\",\n          \"System.AppContext\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.ComponentModel.Annotations\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Calendars\": \"4.0.0\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.Compression.ZipFile\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Parallel\": \"4.0.0\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.NetworkInformation\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Metadata\": \"1.0.22\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Numerics\": \"4.0.0\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Tasks.Dataflow\": \"4.5.25\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.0\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR-x64\": \"1.0.0\",\n          \"Microsoft.NETCore.Windows.ApiSets-x64\": \"1.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR-x64/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"[4.0.10]\",\n          \"System.Diagnostics.Contracts\": \"[4.0.0]\",\n          \"System.Diagnostics.Debug\": \"[4.0.10]\",\n          \"System.Diagnostics.StackTrace\": \"[4.0.0]\",\n          \"System.Diagnostics.Tools\": \"[4.0.0]\",\n          \"System.Diagnostics.Tracing\": \"[4.0.20]\",\n          \"System.Globalization\": \"[4.0.10]\",\n          \"System.Globalization.Calendars\": \"[4.0.0]\",\n          \"System.IO\": \"[4.0.10]\",\n          \"System.ObjectModel\": \"[4.0.10]\",\n          \"System.Private.Uri\": \"[4.0.0]\",\n          \"System.Reflection\": \"[4.0.10]\",\n          \"System.Reflection.Extensions\": \"[4.0.0]\",\n          \"System.Reflection.Primitives\": \"[4.0.0]\",\n          \"System.Resources.ResourceManager\": \"[4.0.0]\",\n          \"System.Runtime\": \"[4.0.20]\",\n          \"System.Runtime.Extensions\": \"[4.0.10]\",\n          \"System.Runtime.Handles\": \"[4.0.0]\",\n          \"System.Runtime.InteropServices\": \"[4.0.20]\",\n          \"System.Text.Encoding\": \"[4.0.10]\",\n          \"System.Text.Encoding.Extensions\": \"[4.0.10]\",\n          \"System.Threading\": \"[4.0.10]\",\n          \"System.Threading.Tasks\": \"[4.0.10]\",\n          \"System.Threading.Timer\": \"[4.0.0]\"\n        },\n        \"compile\": {\n          \"ref/dotnet/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x64/lib/dotnet/mscorlib.ni.dll\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x64/native/clretwrc.dll\": {},\n          \"runtimes/win7-x64/native/coreclr.dll\": {},\n          \"runtimes/win7-x64/native/dbgshim.dll\": {},\n          \"runtimes/win7-x64/native/mscordaccore.dll\": {},\n          \"runtimes/win7-x64/native/mscordbi.dll\": {},\n          \"runtimes/win7-x64/native/mscorrc.debug.dll\": {},\n          \"runtimes/win7-x64/native/mscorrc.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.0\",\n          \"Microsoft.NETCore.Targets.UniversalWindowsPlatform\": \"5.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Targets.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.0\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.0\",\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\",\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Data.Common\": \"4.0.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.StackTrace\": \"4.0.0\",\n          \"System.IO.IsolatedStorage\": \"4.0.0\",\n          \"System.Net.Http.Rtc\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.10\",\n          \"System.Net.Sockets\": \"4.0.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.0\",\n          \"System.Reflection.Context\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Runtime.Serialization.Json\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.0\",\n          \"System.ServiceModel.Duplex\": \"4.0.0\",\n          \"System.ServiceModel.Http\": \"4.0.10\",\n          \"System.ServiceModel.NetTcp\": \"4.0.0\",\n          \"System.ServiceModel.Primitives\": \"4.0.0\",\n          \"System.ServiceModel.Security\": \"4.0.0\",\n          \"System.Text.Encoding.CodePages\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets-x64/1.0.0\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win10-x64/native/_._\": {}\n        }\n      },\n      \"Microsoft.VisualBasic/10.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"System.AppContext/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.1.37\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.NonGeneric.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Specialized.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Calendars.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"System.IO.Compression/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.IO.Compression.clrcompression-x64\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.clrcompression-x64/4.0.0\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win10-x64/native/ClrCompression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Sockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.Networking/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Networking.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.ILGeneration.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.Lightweight.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.0.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Handles.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.5.25\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Concurrent\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.0\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x64-aot\": {\n      \"Microsoft.ApplicationInsights/1.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.CSharp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.0\",\n          \"Microsoft.NETCore.Targets\": \"1.0.0\",\n          \"Microsoft.VisualBasic\": \"10.0.0\",\n          \"System.AppContext\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.ComponentModel.Annotations\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Calendars\": \"4.0.0\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.Compression.ZipFile\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Parallel\": \"4.0.0\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.NetworkInformation\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Metadata\": \"1.0.22\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Numerics\": \"4.0.0\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Tasks.Dataflow\": \"4.5.25\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.0\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.dll\": {},\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.Native\": \"1.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Runtime.Native/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"[4.0.10]\",\n          \"System.Diagnostics.Contracts\": \"[4.0.0]\",\n          \"System.Diagnostics.Debug\": \"[4.0.10]\",\n          \"System.Diagnostics.StackTrace\": \"[4.0.0]\",\n          \"System.Diagnostics.Tools\": \"[4.0.0]\",\n          \"System.Diagnostics.Tracing\": \"[4.0.20]\",\n          \"System.Globalization\": \"[4.0.10]\",\n          \"System.Globalization.Calendars\": \"[4.0.0]\",\n          \"System.IO\": \"[4.0.10]\",\n          \"System.ObjectModel\": \"[4.0.10]\",\n          \"System.Private.Uri\": \"[4.0.0]\",\n          \"System.Reflection\": \"[4.0.10]\",\n          \"System.Reflection.Extensions\": \"[4.0.0]\",\n          \"System.Reflection.Primitives\": \"[4.0.0]\",\n          \"System.Resources.ResourceManager\": \"[4.0.0]\",\n          \"System.Runtime\": \"[4.0.20]\",\n          \"System.Runtime.Extensions\": \"[4.0.10]\",\n          \"System.Runtime.Handles\": \"[4.0.0]\",\n          \"System.Runtime.InteropServices\": \"[4.0.20]\",\n          \"System.Text.Encoding\": \"[4.0.10]\",\n          \"System.Text.Encoding.Extensions\": \"[4.0.10]\",\n          \"System.Threading\": \"[4.0.10]\",\n          \"System.Threading.Tasks\": \"[4.0.10]\",\n          \"System.Threading.Timer\": \"[4.0.0]\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.0\",\n          \"Microsoft.NETCore.Targets.UniversalWindowsPlatform\": \"5.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Targets.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.0\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.0\",\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\",\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Data.Common\": \"4.0.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.StackTrace\": \"4.0.0\",\n          \"System.IO.IsolatedStorage\": \"4.0.0\",\n          \"System.Net.Http.Rtc\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.10\",\n          \"System.Net.Sockets\": \"4.0.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.0\",\n          \"System.Reflection.Context\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Runtime.Serialization.Json\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.0\",\n          \"System.ServiceModel.Duplex\": \"4.0.0\",\n          \"System.ServiceModel.Http\": \"4.0.10\",\n          \"System.ServiceModel.NetTcp\": \"4.0.0\",\n          \"System.ServiceModel.Primitives\": \"4.0.0\",\n          \"System.ServiceModel.Security\": \"4.0.0\",\n          \"System.Text.Encoding.CodePages\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.VisualBasic/10.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"System.AppContext/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.1.37\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.NonGeneric.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Specialized.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Calendars.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"System.IO.Compression/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.IO.Compression.clrcompression-x64\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.clrcompression-x64/4.0.0\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win10-x64/native/ClrCompression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Sockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.Networking/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Networking.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.ILGeneration.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.0.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Handles.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.5.25\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Concurrent\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.0\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x86\": {\n      \"Microsoft.ApplicationInsights/1.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.CSharp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.0\",\n          \"Microsoft.NETCore.Targets\": \"1.0.0\",\n          \"Microsoft.VisualBasic\": \"10.0.0\",\n          \"System.AppContext\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.ComponentModel.Annotations\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Calendars\": \"4.0.0\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.Compression.ZipFile\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Parallel\": \"4.0.0\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.NetworkInformation\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Metadata\": \"1.0.22\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Numerics\": \"4.0.0\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Tasks.Dataflow\": \"4.5.25\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.0\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR-x86\": \"1.0.0\",\n          \"Microsoft.NETCore.Windows.ApiSets-x86\": \"1.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR-x86/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"[4.0.10]\",\n          \"System.Diagnostics.Contracts\": \"[4.0.0]\",\n          \"System.Diagnostics.Debug\": \"[4.0.10]\",\n          \"System.Diagnostics.StackTrace\": \"[4.0.0]\",\n          \"System.Diagnostics.Tools\": \"[4.0.0]\",\n          \"System.Diagnostics.Tracing\": \"[4.0.20]\",\n          \"System.Globalization\": \"[4.0.10]\",\n          \"System.Globalization.Calendars\": \"[4.0.0]\",\n          \"System.IO\": \"[4.0.10]\",\n          \"System.ObjectModel\": \"[4.0.10]\",\n          \"System.Private.Uri\": \"[4.0.0]\",\n          \"System.Reflection\": \"[4.0.10]\",\n          \"System.Reflection.Extensions\": \"[4.0.0]\",\n          \"System.Reflection.Primitives\": \"[4.0.0]\",\n          \"System.Resources.ResourceManager\": \"[4.0.0]\",\n          \"System.Runtime\": \"[4.0.20]\",\n          \"System.Runtime.Extensions\": \"[4.0.10]\",\n          \"System.Runtime.Handles\": \"[4.0.0]\",\n          \"System.Runtime.InteropServices\": \"[4.0.20]\",\n          \"System.Text.Encoding\": \"[4.0.10]\",\n          \"System.Text.Encoding.Extensions\": \"[4.0.10]\",\n          \"System.Threading\": \"[4.0.10]\",\n          \"System.Threading.Tasks\": \"[4.0.10]\",\n          \"System.Threading.Timer\": \"[4.0.0]\"\n        },\n        \"compile\": {\n          \"ref/dotnet/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x86/lib/dotnet/mscorlib.ni.dll\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x86/native/clretwrc.dll\": {},\n          \"runtimes/win7-x86/native/coreclr.dll\": {},\n          \"runtimes/win7-x86/native/dbgshim.dll\": {},\n          \"runtimes/win7-x86/native/mscordaccore.dll\": {},\n          \"runtimes/win7-x86/native/mscordbi.dll\": {},\n          \"runtimes/win7-x86/native/mscorrc.debug.dll\": {},\n          \"runtimes/win7-x86/native/mscorrc.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.0\",\n          \"Microsoft.NETCore.Targets.UniversalWindowsPlatform\": \"5.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Targets.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.0\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.0\",\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\",\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Data.Common\": \"4.0.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.StackTrace\": \"4.0.0\",\n          \"System.IO.IsolatedStorage\": \"4.0.0\",\n          \"System.Net.Http.Rtc\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.10\",\n          \"System.Net.Sockets\": \"4.0.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.0\",\n          \"System.Reflection.Context\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Runtime.Serialization.Json\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.0\",\n          \"System.ServiceModel.Duplex\": \"4.0.0\",\n          \"System.ServiceModel.Http\": \"4.0.10\",\n          \"System.ServiceModel.NetTcp\": \"4.0.0\",\n          \"System.ServiceModel.Primitives\": \"4.0.0\",\n          \"System.ServiceModel.Security\": \"4.0.0\",\n          \"System.Text.Encoding.CodePages\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets-x86/1.0.0\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win10-x86/native/_._\": {}\n        }\n      },\n      \"Microsoft.VisualBasic/10.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"System.AppContext/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.1.37\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.NonGeneric.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Specialized.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Calendars.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"System.IO.Compression/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.IO.Compression.clrcompression-x86\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.clrcompression-x86/4.0.0\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win10-x86/native/ClrCompression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Sockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.Networking/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Networking.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.ILGeneration.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.Lightweight.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.0.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Handles.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.5.25\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Concurrent\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.0\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x86-aot\": {\n      \"Microsoft.ApplicationInsights/1.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.0.0\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.CSharp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.0\",\n          \"Microsoft.NETCore.Targets\": \"1.0.0\",\n          \"Microsoft.VisualBasic\": \"10.0.0\",\n          \"System.AppContext\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.ComponentModel.Annotations\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Calendars\": \"4.0.0\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.Compression.ZipFile\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Parallel\": \"4.0.0\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.NetworkInformation\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Metadata\": \"1.0.22\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Numerics\": \"4.0.0\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Tasks.Dataflow\": \"4.5.25\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.0\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.dll\": {},\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.Native\": \"1.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Runtime.Native/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"[4.0.10]\",\n          \"System.Diagnostics.Contracts\": \"[4.0.0]\",\n          \"System.Diagnostics.Debug\": \"[4.0.10]\",\n          \"System.Diagnostics.StackTrace\": \"[4.0.0]\",\n          \"System.Diagnostics.Tools\": \"[4.0.0]\",\n          \"System.Diagnostics.Tracing\": \"[4.0.20]\",\n          \"System.Globalization\": \"[4.0.10]\",\n          \"System.Globalization.Calendars\": \"[4.0.0]\",\n          \"System.IO\": \"[4.0.10]\",\n          \"System.ObjectModel\": \"[4.0.10]\",\n          \"System.Private.Uri\": \"[4.0.0]\",\n          \"System.Reflection\": \"[4.0.10]\",\n          \"System.Reflection.Extensions\": \"[4.0.0]\",\n          \"System.Reflection.Primitives\": \"[4.0.0]\",\n          \"System.Resources.ResourceManager\": \"[4.0.0]\",\n          \"System.Runtime\": \"[4.0.20]\",\n          \"System.Runtime.Extensions\": \"[4.0.10]\",\n          \"System.Runtime.Handles\": \"[4.0.0]\",\n          \"System.Runtime.InteropServices\": \"[4.0.20]\",\n          \"System.Text.Encoding\": \"[4.0.10]\",\n          \"System.Text.Encoding.Extensions\": \"[4.0.10]\",\n          \"System.Threading\": \"[4.0.10]\",\n          \"System.Threading.Tasks\": \"[4.0.10]\",\n          \"System.Threading.Timer\": \"[4.0.0]\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.0\",\n          \"Microsoft.NETCore.Targets.UniversalWindowsPlatform\": \"5.0.0\"\n        }\n      },\n      \"Microsoft.NETCore.Targets.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.0\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.0\",\n          \"Microsoft.NETCore.Runtime\": \"1.0.0\",\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Data.Common\": \"4.0.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.StackTrace\": \"4.0.0\",\n          \"System.IO.IsolatedStorage\": \"4.0.0\",\n          \"System.Net.Http.Rtc\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.10\",\n          \"System.Net.Sockets\": \"4.0.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.0\",\n          \"System.Reflection.Context\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Runtime.Serialization.Json\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.0\",\n          \"System.ServiceModel.Duplex\": \"4.0.0\",\n          \"System.ServiceModel.Http\": \"4.0.10\",\n          \"System.ServiceModel.NetTcp\": \"4.0.0\",\n          \"System.ServiceModel.Primitives\": \"4.0.0\",\n          \"System.ServiceModel.Security\": \"4.0.0\",\n          \"System.Text.Encoding.CodePages\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        }\n      },\n      \"Microsoft.VisualBasic/10.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Dynamic.Runtime\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"System.AppContext/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.1.37\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.NonGeneric.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Globalization.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Collections.Specialized.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.ComponentModel\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Calendars.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"System.IO.Compression/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.IO.Compression.clrcompression-x86\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.clrcompression-x86/4.0.0\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win10-x86/native/ClrCompression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Networking\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.Sockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.Networking/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.0\",\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Overlapped\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.Networking.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Collections.NonGeneric\": \"4.0.0\",\n          \"System.Collections.Specialized\": \"4.0.0\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.10\",\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Linq.Expressions\": \"4.0.10\",\n          \"System.Linq.Queryable\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.10\",\n          \"System.Net.WebHeaderCollection\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.DispatchProxy\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\",\n          \"System.Runtime.Serialization.Xml\": \"4.0.10\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.10\",\n          \"System.Security.Claims\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Threading.Timer\": \"4.0.0\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\",\n          \"System.Xml.XmlSerializer\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.Emit.ILGeneration.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.0.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Immutable\": \"1.1.37\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.0\",\n          \"System.Text.Encoding.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Handles.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.DataContractSerialization\": \"4.0.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.10\",\n          \"System.ObjectModel\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Globalization\": \"4.0.0\",\n          \"System.IO\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Security.Principal\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Runtime.Handles\": \"4.0.0\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Threading\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.5.25\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.0\",\n          \"System.Collections.Concurrent\": \"4.0.0\",\n          \"System.Diagnostics.Debug\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.0\",\n          \"System.Dynamic.Runtime\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.0\",\n          \"System.Runtime.Extensions\": \"4.0.0\",\n          \"System.Threading\": \"4.0.0\",\n          \"System.Threading.Tasks\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.FileSystem\": \"4.0.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Runtime.InteropServices\": \"4.0.20\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Emit\": \"4.0.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.0\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Reflection.Primitives\": \"4.0.0\",\n          \"System.Reflection.TypeExtensions\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Xml.ReaderWriter\": \"4.0.10\",\n          \"System.Xml.XmlDocument\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/dotnet/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      }\n    }\n  },\n  \"libraries\": {\n    \"Microsoft.ApplicationInsights/1.0.0\": {\n      \"sha512\": \"HZ47/thX57SOuIivSvIbsR6L9CCb/Yt3IyB2i4KHmmNlf3DO+lqFwWIKDdbDNWKX+qh0Rg20/JSMPK0dwUsYYw==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.applicationinsights/1.0.0\",\n      \"files\": [\n        \"lib/net40/Microsoft.ApplicationInsights.XML\",\n        \"lib/net40/Microsoft.ApplicationInsights.dll\",\n        \"lib/net45/Microsoft.ApplicationInsights.XML\",\n        \"lib/net45/Microsoft.ApplicationInsights.dll\",\n        \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.XML\",\n        \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\",\n        \"lib/wp8/Microsoft.ApplicationInsights.XML\",\n        \"lib/wp8/Microsoft.ApplicationInsights.dll\",\n        \"microsoft.applicationinsights.1.0.0.nupkg.sha512\",\n        \"microsoft.applicationinsights.nuspec\"\n      ]\n    },\n    \"Microsoft.ApplicationInsights.PersistenceChannel/1.0.0\": {\n      \"sha512\": \"0qQXC+CtbyF2RPuld5pF74fxsnP6ml0LUnzQ6GL9AXXY64LPsLDsPUAymoUffo7LZvPDppZboTYX59TfVxKA7A==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.applicationinsights.persistencechannel/1.0.0\",\n      \"files\": [\n        \"lib/net40/Microsoft.ApplicationInsights.PersistenceChannel.XML\",\n        \"lib/net40/Microsoft.ApplicationInsights.PersistenceChannel.dll\",\n        \"lib/portable-win8+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.XML\",\n        \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\",\n        \"lib/wp8/Microsoft.ApplicationInsights.PersistenceChannel.XML\",\n        \"lib/wp8/Microsoft.ApplicationInsights.PersistenceChannel.dll\",\n        \"microsoft.applicationinsights.persistencechannel.1.0.0.nupkg.sha512\",\n        \"microsoft.applicationinsights.persistencechannel.nuspec\"\n      ]\n    },\n    \"Microsoft.ApplicationInsights.WindowsApps/1.0.0\": {\n      \"sha512\": \"NvBQnFeiFd0O1QdBz06UGApD7zn7ztVi7qO18IsM3EjiXRNgfrEBXB+azNm8XqLY8xGFAqh3HAuSd/wHZMe0XA==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.applicationinsights.windowsapps/1.0.0\",\n      \"files\": [\n        \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.XML\",\n        \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\",\n        \"lib/wp8/Microsoft.ApplicationInsights.Extensibility.Windows.XML\",\n        \"lib/wp8/Microsoft.ApplicationInsights.Extensibility.Windows.dll\",\n        \"lib/wpa81/Microsoft.ApplicationInsights.Extensibility.Windows.XML\",\n        \"lib/wpa81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\",\n        \"microsoft.applicationinsights.windowsapps.1.0.0.nupkg.sha512\",\n        \"microsoft.applicationinsights.windowsapps.nuspec\"\n      ]\n    },\n    \"Microsoft.CSharp/4.0.0\": {\n      \"sha512\": \"oWqeKUxHXdK6dL2CFjgMcaBISbkk+AqEg+yvJHE4DElNzS4QaTsCflgkkqZwVlWby1Dg9zo9n+iCAMFefFdJ/A==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.csharp/4.0.0\",\n      \"files\": [\n        \"Microsoft.CSharp.4.0.0.nupkg.sha512\",\n        \"Microsoft.CSharp.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/Microsoft.CSharp.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/Microsoft.CSharp.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/Microsoft.CSharp.dll\",\n        \"ref/dotnet/Microsoft.CSharp.xml\",\n        \"ref/dotnet/de/Microsoft.CSharp.xml\",\n        \"ref/dotnet/es/Microsoft.CSharp.xml\",\n        \"ref/dotnet/fr/Microsoft.CSharp.xml\",\n        \"ref/dotnet/it/Microsoft.CSharp.xml\",\n        \"ref/dotnet/ja/Microsoft.CSharp.xml\",\n        \"ref/dotnet/ko/Microsoft.CSharp.xml\",\n        \"ref/dotnet/ru/Microsoft.CSharp.xml\",\n        \"ref/dotnet/zh-hans/Microsoft.CSharp.xml\",\n        \"ref/dotnet/zh-hant/Microsoft.CSharp.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/Microsoft.CSharp.dll\",\n        \"ref/netcore50/Microsoft.CSharp.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"Microsoft.NETCore/5.0.0\": {\n      \"sha512\": \"QQMp0yYQbIdfkKhdEE6Umh2Xonau7tasG36Trw/YlHoWgYQLp7T9L+ZD8EPvdj5ubRhtOuKEKwM7HMpkagB9ZA==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore/5.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.5.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.nuspec\",\n        \"_._\"\n      ]\n    },\n    \"Microsoft.NETCore.Platforms/1.0.0\": {\n      \"sha512\": \"0N77OwGZpXqUco2C/ynv1os7HqdFYifvNIbveLDKqL5PZaz05Rl9enCwVBjF61aumHKueLWIJ3prnmdAXxww4A==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.platforms/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Platforms.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Platforms.nuspec\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.Portable.Compatibility/1.0.0\": {\n      \"sha512\": \"5/IFqf2zN1jzktRJitxO+5kQ+0AilcIbPvSojSJwDG3cGNSMZg44LXLB5E9RkSETE0Wh4QoALdNh1koKoF7/mA==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.portable.compatibility/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Portable.Compatibility.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Portable.Compatibility.nuspec\",\n        \"lib/dnxcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"lib/dnxcore50/System.Core.dll\",\n        \"lib/dnxcore50/System.Net.dll\",\n        \"lib/dnxcore50/System.Numerics.dll\",\n        \"lib/dnxcore50/System.Runtime.Serialization.dll\",\n        \"lib/dnxcore50/System.ServiceModel.Web.dll\",\n        \"lib/dnxcore50/System.ServiceModel.dll\",\n        \"lib/dnxcore50/System.Windows.dll\",\n        \"lib/dnxcore50/System.Xml.Linq.dll\",\n        \"lib/dnxcore50/System.Xml.Serialization.dll\",\n        \"lib/dnxcore50/System.Xml.dll\",\n        \"lib/dnxcore50/System.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"lib/netcore50/System.Core.dll\",\n        \"lib/netcore50/System.Net.dll\",\n        \"lib/netcore50/System.Numerics.dll\",\n        \"lib/netcore50/System.Runtime.Serialization.dll\",\n        \"lib/netcore50/System.ServiceModel.Web.dll\",\n        \"lib/netcore50/System.ServiceModel.dll\",\n        \"lib/netcore50/System.Windows.dll\",\n        \"lib/netcore50/System.Xml.Linq.dll\",\n        \"lib/netcore50/System.Xml.Serialization.dll\",\n        \"lib/netcore50/System.Xml.dll\",\n        \"lib/netcore50/System.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.ComponentModel.DataAnnotations.dll\",\n        \"ref/dotnet/System.Core.dll\",\n        \"ref/dotnet/System.Net.dll\",\n        \"ref/dotnet/System.Numerics.dll\",\n        \"ref/dotnet/System.Runtime.Serialization.dll\",\n        \"ref/dotnet/System.ServiceModel.Web.dll\",\n        \"ref/dotnet/System.ServiceModel.dll\",\n        \"ref/dotnet/System.Windows.dll\",\n        \"ref/dotnet/System.Xml.Linq.dll\",\n        \"ref/dotnet/System.Xml.Serialization.dll\",\n        \"ref/dotnet/System.Xml.dll\",\n        \"ref/dotnet/System.dll\",\n        \"ref/dotnet/mscorlib.dll\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"ref/netcore50/System.Core.dll\",\n        \"ref/netcore50/System.Net.dll\",\n        \"ref/netcore50/System.Numerics.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.dll\",\n        \"ref/netcore50/System.ServiceModel.Web.dll\",\n        \"ref/netcore50/System.ServiceModel.dll\",\n        \"ref/netcore50/System.Windows.dll\",\n        \"ref/netcore50/System.Xml.Linq.dll\",\n        \"ref/netcore50/System.Xml.Serialization.dll\",\n        \"ref/netcore50/System.Xml.dll\",\n        \"ref/netcore50/System.dll\",\n        \"ref/netcore50/mscorlib.dll\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"runtimes/aot/lib/netcore50/System.Core.dll\",\n        \"runtimes/aot/lib/netcore50/System.Net.dll\",\n        \"runtimes/aot/lib/netcore50/System.Numerics.dll\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\",\n        \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\",\n        \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\",\n        \"runtimes/aot/lib/netcore50/System.Windows.dll\",\n        \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\",\n        \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\",\n        \"runtimes/aot/lib/netcore50/System.Xml.dll\",\n        \"runtimes/aot/lib/netcore50/System.dll\",\n        \"runtimes/aot/lib/netcore50/mscorlib.dll\"\n      ]\n    },\n    \"Microsoft.NETCore.Runtime/1.0.0\": {\n      \"sha512\": \"AjaMNpXLW4miEQorIqyn6iQ+BZBId6qXkhwyeh1vl6kXLqosZusbwmLNlvj/xllSQrd3aImJbvlHusam85g+xQ==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.runtime/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Runtime.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Runtime.nuspec\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.Runtime.CoreCLR-arm/1.0.0\": {\n      \"sha512\": \"vUQyaKbHCa7BJAAzdfCP2FfBYOSt0YnDw7VMJLmD1/k68HIJgw1QO7GAfHhqoa39zkkvimC47QBH27wG4C5OGQ==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.runtime.coreclr-arm/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Runtime.CoreCLR-arm.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Runtime.CoreCLR-arm.nuspec\",\n        \"ref/dotnet/_._\",\n        \"runtimes/win8-arm/lib/dotnet/mscorlib.ni.dll\",\n        \"runtimes/win8-arm/native/clretwrc.dll\",\n        \"runtimes/win8-arm/native/coreclr.dll\",\n        \"runtimes/win8-arm/native/dbgshim.dll\",\n        \"runtimes/win8-arm/native/mscordaccore.dll\",\n        \"runtimes/win8-arm/native/mscordbi.dll\",\n        \"runtimes/win8-arm/native/mscorrc.debug.dll\",\n        \"runtimes/win8-arm/native/mscorrc.dll\"\n      ]\n    },\n    \"Microsoft.NETCore.Runtime.CoreCLR-x64/1.0.0\": {\n      \"sha512\": \"DaY5Z13xCZpnVIGluC5sCo4/0wy1rl6mptBH7v3RYi3guAmG88aSeFoQzyZepo0H0jEixUxNFM0+MB6Jc+j0bw==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.runtime.coreclr-x64/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Runtime.CoreCLR-x64.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Runtime.CoreCLR-x64.nuspec\",\n        \"ref/dotnet/_._\",\n        \"runtimes/win7-x64/lib/dotnet/mscorlib.ni.dll\",\n        \"runtimes/win7-x64/native/clretwrc.dll\",\n        \"runtimes/win7-x64/native/coreclr.dll\",\n        \"runtimes/win7-x64/native/dbgshim.dll\",\n        \"runtimes/win7-x64/native/mscordaccore.dll\",\n        \"runtimes/win7-x64/native/mscordbi.dll\",\n        \"runtimes/win7-x64/native/mscorrc.debug.dll\",\n        \"runtimes/win7-x64/native/mscorrc.dll\"\n      ]\n    },\n    \"Microsoft.NETCore.Runtime.CoreCLR-x86/1.0.0\": {\n      \"sha512\": \"2LDffu5Is/X01GVPVuye4Wmz9/SyGDNq1Opgl5bXG3206cwNiCwsQgILOtfSWVp5mn4w401+8cjhBy3THW8HQQ==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.runtime.coreclr-x86/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Runtime.CoreCLR-x86.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Runtime.CoreCLR-x86.nuspec\",\n        \"ref/dotnet/_._\",\n        \"runtimes/win7-x86/lib/dotnet/mscorlib.ni.dll\",\n        \"runtimes/win7-x86/native/clretwrc.dll\",\n        \"runtimes/win7-x86/native/coreclr.dll\",\n        \"runtimes/win7-x86/native/dbgshim.dll\",\n        \"runtimes/win7-x86/native/mscordaccore.dll\",\n        \"runtimes/win7-x86/native/mscordbi.dll\",\n        \"runtimes/win7-x86/native/mscorrc.debug.dll\",\n        \"runtimes/win7-x86/native/mscorrc.dll\"\n      ]\n    },\n    \"Microsoft.NETCore.Runtime.Native/1.0.0\": {\n      \"sha512\": \"tMsWWrH1AJCguiM22zK/vr6COxqz62Q1F02B07IXAUN405R3HGk5SkD/DL0Hte+OTjNtW9LkKXpOggGBRwYFNg==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.runtime.native/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Runtime.Native.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Runtime.Native.nuspec\",\n        \"_._\"\n      ]\n    },\n    \"Microsoft.NETCore.Targets/1.0.0\": {\n      \"sha512\": \"XfITpPjYLYRmAeZtb9diw6P7ylLQsSC1U2a/xj10iQpnHxkiLEBXop/psw15qMPuNca7lqgxWvzZGpQxphuXaw==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.targets/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Targets.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Targets.nuspec\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.Targets.UniversalWindowsPlatform/5.0.0\": {\n      \"sha512\": \"jszcJ6okLlhqF4OQbhSbixLOuLUyVT3BP7Y7/i7fcDMwnHBd1Pmdz6M1Al9SMDKVLA2oSaItg4tq6C0ydv8lYQ==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.targets.universalwindowsplatform/5.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Targets.UniversalWindowsPlatform.5.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Targets.UniversalWindowsPlatform.nuspec\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.UniversalWindowsPlatform/5.0.0\": {\n      \"sha512\": \"D0nsAm+yTk0oSSC7E6PcmuuEewBAQbGgIXNcCnRqQ4qLPdQLMjMHg8cilGs3xZgwTRQmMtEn45TAatrU1otWPQ==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.universalwindowsplatform/5.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.UniversalWindowsPlatform.5.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.UniversalWindowsPlatform.nuspec\",\n        \"_._\"\n      ]\n    },\n    \"Microsoft.NETCore.Windows.ApiSets-x64/1.0.0\": {\n      \"sha512\": \"NC+dpFMdhujz2sWAdJ8EmBk07p1zOlNi0FCCnZEbzftABpw9xZ99EMP/bUJrPTgCxHfzJAiuLPOtAauzVINk0w==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.windows.apisets-x64/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Windows.ApiSets-x64.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Windows.ApiSets-x64.nuspec\",\n        \"runtimes/win10-x64/native/_._\",\n        \"runtimes/win7-x64/native/API-MS-Win-Base-Util-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Core-PrivateProfile-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Core-ProcessTopology-Obsolete-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Core-String-L2-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Core-StringAnsi-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-EventLog-Legacy-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Eventing-ClassicProvider-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Eventing-Consumer-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Eventing-Controller-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Eventing-Legacy-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Eventing-Provider-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-Security-LsaPolicy-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-0.dll\",\n        \"runtimes/win7-x64/native/API-MS-Win-devices-config-L1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-com-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-com-private-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-comm-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-console-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-console-l2-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-datetime-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-debug-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-delayload-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-errorhandling-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-fibers-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-file-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-file-l1-2-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-file-l1-2-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-file-l2-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-file-l2-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-handle-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-heap-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-heap-obsolete-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-interlocked-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-io-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-io-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-libraryloader-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-localization-l1-2-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-localization-l2-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-localization-obsolete-l1-2-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-2.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-memory-l1-1-3.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-normalization-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-privateprofile-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-processenvironment-l1-2-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-processsecurity-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-processthreads-l1-1-2.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-profile-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-psapi-ansi-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-psapi-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-psapi-obsolete-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-realtime-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-registry-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-registry-l2-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-rtlsupport-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-shlwapi-legacy-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-shlwapi-obsolete-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-shutdown-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-string-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-stringloader-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-synch-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-synch-l1-2-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-threadpool-l1-2-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-threadpool-legacy-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-threadpool-private-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-timezone-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-url-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-util-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-version-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-winrt-error-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-winrt-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-winrt-registration-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-winrt-robuffer-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-winrt-string-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-wow64-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-xstate-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-core-xstate-l2-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-ro-typeresolution-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-security-base-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-security-cpwl-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-security-cryptoapi-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-security-lsalookup-l2-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-security-provider-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-security-sddl-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-service-core-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-service-core-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-service-management-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-service-management-l2-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-service-private-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-service-private-l1-1-1.dll\",\n        \"runtimes/win7-x64/native/api-ms-win-service-winsvc-l1-1-0.dll\",\n        \"runtimes/win7-x64/native/ext-ms-win-advapi32-encryptedfile-l1-1-0.dll\",\n        \"runtimes/win8-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll\",\n        \"runtimes/win8-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll\",\n        \"runtimes/win8-x64/native/API-MS-Win-devices-config-L1-1-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-file-l1-2-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-file-l2-1-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-localization-l1-2-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-localization-obsolete-l1-2-0.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-memory-l1-1-2.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-memory-l1-1-3.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-privateprofile-l1-1-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-processthreads-l1-1-2.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-shutdown-l1-1-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-stringloader-l1-1-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-sysinfo-l1-2-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-winrt-error-l1-1-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-core-xstate-l2-1-0.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-security-cpwl-l1-1-0.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-security-cryptoapi-l1-1-0.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-security-lsalookup-l2-1-1.dll\",\n        \"runtimes/win8-x64/native/api-ms-win-service-private-l1-1-1.dll\",\n        \"runtimes/win81-x64/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll\",\n        \"runtimes/win81-x64/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll\",\n        \"runtimes/win81-x64/native/api-ms-win-core-memory-l1-1-3.dll\",\n        \"runtimes/win81-x64/native/api-ms-win-core-namedpipe-l1-2-1.dll\",\n        \"runtimes/win81-x64/native/api-ms-win-core-string-obsolete-l1-1-1.dll\",\n        \"runtimes/win81-x64/native/api-ms-win-core-sysinfo-l1-2-2.dll\",\n        \"runtimes/win81-x64/native/api-ms-win-core-sysinfo-l1-2-3.dll\",\n        \"runtimes/win81-x64/native/api-ms-win-security-cpwl-l1-1-0.dll\"\n      ]\n    },\n    \"Microsoft.NETCore.Windows.ApiSets-x86/1.0.0\": {\n      \"sha512\": \"/HDRdhz5bZyhHwQ/uk/IbnDIX5VDTsHntEZYkTYo57dM+U3Ttel9/OJv0mjL64wTO/QKUJJNKp9XO+m7nSVjJQ==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.netcore.windows.apisets-x86/1.0.0\",\n      \"files\": [\n        \"Microsoft.NETCore.Windows.ApiSets-x86.1.0.0.nupkg.sha512\",\n        \"Microsoft.NETCore.Windows.ApiSets-x86.nuspec\",\n        \"runtimes/win10-x86/native/_._\",\n        \"runtimes/win7-x86/native/API-MS-Win-Base-Util-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Core-Kernel32-Private-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Core-PrivateProfile-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Core-ProcessTopology-Obsolete-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Core-String-L2-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Core-StringAnsi-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-EventLog-Legacy-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Eventing-ClassicProvider-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Eventing-Consumer-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Eventing-Controller-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Eventing-Legacy-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Eventing-Provider-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-Security-LsaPolicy-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-devices-config-L1-1-0.dll\",\n        \"runtimes/win7-x86/native/API-MS-Win-devices-config-L1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-com-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-com-private-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-comm-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-console-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-console-l2-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-datetime-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-datetime-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-debug-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-debug-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-delayload-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-errorhandling-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-errorhandling-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-fibers-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-fibers-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-file-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-file-l1-2-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-file-l1-2-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-file-l2-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-file-l2-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-handle-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-heap-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-heap-obsolete-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-interlocked-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-io-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-io-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-kernel32-legacy-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-libraryloader-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-libraryloader-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-localization-l1-2-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-localization-l1-2-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-localization-l2-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-localization-obsolete-l1-2-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-memory-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-memory-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-memory-l1-1-2.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-memory-l1-1-3.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-namedpipe-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-namedpipe-l1-2-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-normalization-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-privateprofile-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-processenvironment-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-processenvironment-l1-2-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-processsecurity-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-processthreads-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-processthreads-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-processthreads-l1-1-2.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-profile-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-psapi-ansi-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-psapi-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-psapi-obsolete-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-realtime-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-registry-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-registry-l2-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-rtlsupport-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-shlwapi-legacy-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-shlwapi-obsolete-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-shutdown-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-shutdown-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-string-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-string-obsolete-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-string-obsolete-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-stringloader-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-stringloader-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-synch-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-synch-l1-2-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-sysinfo-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-sysinfo-l1-2-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-sysinfo-l1-2-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-sysinfo-l1-2-2.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-sysinfo-l1-2-3.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-threadpool-l1-2-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-threadpool-legacy-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-threadpool-private-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-timezone-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-url-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-util-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-version-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-winrt-error-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-winrt-error-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-winrt-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-winrt-registration-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-winrt-robuffer-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-winrt-string-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-wow64-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-xstate-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-core-xstate-l2-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-ro-typeresolution-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-security-base-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-security-cpwl-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-security-cryptoapi-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-security-lsalookup-l2-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-security-lsalookup-l2-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-security-provider-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-security-sddl-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-service-core-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-service-core-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-service-management-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-service-management-l2-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-service-private-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-service-private-l1-1-1.dll\",\n        \"runtimes/win7-x86/native/api-ms-win-service-winsvc-l1-1-0.dll\",\n        \"runtimes/win7-x86/native/ext-ms-win-advapi32-encryptedfile-l1-1-0.dll\",\n        \"runtimes/win8-x86/native/API-MS-Win-Core-Kernel32-Private-L1-1-1.dll\",\n        \"runtimes/win8-x86/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll\",\n        \"runtimes/win8-x86/native/API-MS-Win-devices-config-L1-1-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-file-l1-2-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-file-l2-1-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-kernel32-legacy-l1-1-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-localization-l1-2-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-localization-obsolete-l1-2-0.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-memory-l1-1-2.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-memory-l1-1-3.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-namedpipe-l1-2-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-privateprofile-l1-1-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-processthreads-l1-1-2.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-shutdown-l1-1-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-string-obsolete-l1-1-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-stringloader-l1-1-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-sysinfo-l1-2-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-sysinfo-l1-2-2.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-sysinfo-l1-2-3.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-winrt-error-l1-1-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-core-xstate-l2-1-0.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-security-cpwl-l1-1-0.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-security-cryptoapi-l1-1-0.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-security-lsalookup-l2-1-1.dll\",\n        \"runtimes/win8-x86/native/api-ms-win-service-private-l1-1-1.dll\",\n        \"runtimes/win81-x86/native/API-MS-Win-Core-Kernel32-Private-L1-1-2.dll\",\n        \"runtimes/win81-x86/native/api-ms-win-core-kernel32-legacy-l1-1-2.dll\",\n        \"runtimes/win81-x86/native/api-ms-win-core-memory-l1-1-3.dll\",\n        \"runtimes/win81-x86/native/api-ms-win-core-namedpipe-l1-2-1.dll\",\n        \"runtimes/win81-x86/native/api-ms-win-core-string-obsolete-l1-1-1.dll\",\n        \"runtimes/win81-x86/native/api-ms-win-core-sysinfo-l1-2-2.dll\",\n        \"runtimes/win81-x86/native/api-ms-win-core-sysinfo-l1-2-3.dll\",\n        \"runtimes/win81-x86/native/api-ms-win-security-cpwl-l1-1-0.dll\"\n      ]\n    },\n    \"Microsoft.VisualBasic/10.0.0\": {\n      \"sha512\": \"5BEm2/HAVd97whRlCChU7rmSh/9cwGlZ/NTNe3Jl07zuPWfKQq5TUvVNUmdvmEe8QRecJLZ4/e7WF1i1O8V42g==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.visualbasic/10.0.0\",\n      \"files\": [\n        \"Microsoft.VisualBasic.10.0.0.nupkg.sha512\",\n        \"Microsoft.VisualBasic.nuspec\",\n        \"lib/dotnet/Microsoft.VisualBasic.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/Microsoft.VisualBasic.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/Microsoft.VisualBasic.dll\",\n        \"ref/dotnet/Microsoft.VisualBasic.xml\",\n        \"ref/dotnet/de/Microsoft.VisualBasic.xml\",\n        \"ref/dotnet/es/Microsoft.VisualBasic.xml\",\n        \"ref/dotnet/fr/Microsoft.VisualBasic.xml\",\n        \"ref/dotnet/it/Microsoft.VisualBasic.xml\",\n        \"ref/dotnet/ja/Microsoft.VisualBasic.xml\",\n        \"ref/dotnet/ko/Microsoft.VisualBasic.xml\",\n        \"ref/dotnet/ru/Microsoft.VisualBasic.xml\",\n        \"ref/dotnet/zh-hans/Microsoft.VisualBasic.xml\",\n        \"ref/dotnet/zh-hant/Microsoft.VisualBasic.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/Microsoft.VisualBasic.dll\",\n        \"ref/netcore50/Microsoft.VisualBasic.xml\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"Microsoft.Win32.Primitives/4.0.0\": {\n      \"sha512\": \"CypEz9/lLOup8CEhiAmvr7aLs1zKPYyEU1sxQeEr6G0Ci8/F0Y6pYR1zzkROjM8j8Mq0typmbu676oYyvErQvg==\",\n      \"type\": \"package\",\n      \"path\": \"microsoft.win32.primitives/4.0.0\",\n      \"files\": [\n        \"Microsoft.Win32.Primitives.4.0.0.nupkg.sha512\",\n        \"Microsoft.Win32.Primitives.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/Microsoft.Win32.Primitives.dll\",\n        \"lib/net46/Microsoft.Win32.Primitives.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/Microsoft.Win32.Primitives.dll\",\n        \"ref/dotnet/Microsoft.Win32.Primitives.xml\",\n        \"ref/dotnet/de/Microsoft.Win32.Primitives.xml\",\n        \"ref/dotnet/es/Microsoft.Win32.Primitives.xml\",\n        \"ref/dotnet/fr/Microsoft.Win32.Primitives.xml\",\n        \"ref/dotnet/it/Microsoft.Win32.Primitives.xml\",\n        \"ref/dotnet/ja/Microsoft.Win32.Primitives.xml\",\n        \"ref/dotnet/ko/Microsoft.Win32.Primitives.xml\",\n        \"ref/dotnet/ru/Microsoft.Win32.Primitives.xml\",\n        \"ref/dotnet/zh-hans/Microsoft.Win32.Primitives.xml\",\n        \"ref/dotnet/zh-hant/Microsoft.Win32.Primitives.xml\",\n        \"ref/net46/Microsoft.Win32.Primitives.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.AppContext/4.0.0\": {\n      \"sha512\": \"gUoYgAWDC3+xhKeU5KSLbYDhTdBYk9GssrMSCcWUADzOglW+s0AmwVhOUGt2tL5xUl7ZXoYTPdA88zCgKrlG0A==\",\n      \"type\": \"package\",\n      \"path\": \"system.appcontext/4.0.0\",\n      \"files\": [\n        \"System.AppContext.4.0.0.nupkg.sha512\",\n        \"System.AppContext.nuspec\",\n        \"lib/DNXCore50/System.AppContext.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.AppContext.dll\",\n        \"lib/netcore50/System.AppContext.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.AppContext.dll\",\n        \"ref/dotnet/System.AppContext.xml\",\n        \"ref/dotnet/de/System.AppContext.xml\",\n        \"ref/dotnet/es/System.AppContext.xml\",\n        \"ref/dotnet/fr/System.AppContext.xml\",\n        \"ref/dotnet/it/System.AppContext.xml\",\n        \"ref/dotnet/ja/System.AppContext.xml\",\n        \"ref/dotnet/ko/System.AppContext.xml\",\n        \"ref/dotnet/ru/System.AppContext.xml\",\n        \"ref/dotnet/zh-hans/System.AppContext.xml\",\n        \"ref/dotnet/zh-hant/System.AppContext.xml\",\n        \"ref/net46/System.AppContext.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Collections/4.0.10\": {\n      \"sha512\": \"ux6ilcZZjV/Gp7JEZpe+2V1eTueq6NuoGRM3eZCFuPM25hLVVgCRuea6STW8hvqreIOE59irJk5/ovpA5xQipw==\",\n      \"type\": \"package\",\n      \"path\": \"system.collections/4.0.10\",\n      \"files\": [\n        \"System.Collections.4.0.10.nupkg.sha512\",\n        \"System.Collections.nuspec\",\n        \"lib/DNXCore50/System.Collections.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Collections.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Collections.dll\",\n        \"ref/dotnet/System.Collections.xml\",\n        \"ref/dotnet/de/System.Collections.xml\",\n        \"ref/dotnet/es/System.Collections.xml\",\n        \"ref/dotnet/fr/System.Collections.xml\",\n        \"ref/dotnet/it/System.Collections.xml\",\n        \"ref/dotnet/ja/System.Collections.xml\",\n        \"ref/dotnet/ko/System.Collections.xml\",\n        \"ref/dotnet/ru/System.Collections.xml\",\n        \"ref/dotnet/zh-hans/System.Collections.xml\",\n        \"ref/dotnet/zh-hant/System.Collections.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Collections.dll\"\n      ]\n    },\n    \"System.Collections.Concurrent/4.0.10\": {\n      \"sha512\": \"ZtMEqOPAjAIqR8fqom9AOKRaB94a+emO2O8uOP6vyJoNswSPrbiwN7iH53rrVpvjMVx0wr4/OMpI7486uGZjbw==\",\n      \"type\": \"package\",\n      \"path\": \"system.collections.concurrent/4.0.10\",\n      \"files\": [\n        \"System.Collections.Concurrent.4.0.10.nupkg.sha512\",\n        \"System.Collections.Concurrent.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Collections.Concurrent.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Collections.Concurrent.dll\",\n        \"ref/dotnet/System.Collections.Concurrent.xml\",\n        \"ref/dotnet/de/System.Collections.Concurrent.xml\",\n        \"ref/dotnet/es/System.Collections.Concurrent.xml\",\n        \"ref/dotnet/fr/System.Collections.Concurrent.xml\",\n        \"ref/dotnet/it/System.Collections.Concurrent.xml\",\n        \"ref/dotnet/ja/System.Collections.Concurrent.xml\",\n        \"ref/dotnet/ko/System.Collections.Concurrent.xml\",\n        \"ref/dotnet/ru/System.Collections.Concurrent.xml\",\n        \"ref/dotnet/zh-hans/System.Collections.Concurrent.xml\",\n        \"ref/dotnet/zh-hant/System.Collections.Concurrent.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Collections.Immutable/1.1.37\": {\n      \"sha512\": \"fTpqwZYBzoklTT+XjTRK8KxvmrGkYHzBiylCcKyQcxiOM8k+QvhNBxRvFHDWzy4OEP5f8/9n+xQ9mEgEXY+muA==\",\n      \"type\": \"package\",\n      \"path\": \"system.collections.immutable/1.1.37\",\n      \"files\": [\n        \"System.Collections.Immutable.1.1.37.nupkg.sha512\",\n        \"System.Collections.Immutable.nuspec\",\n        \"lib/dotnet/System.Collections.Immutable.dll\",\n        \"lib/dotnet/System.Collections.Immutable.xml\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml\"\n      ]\n    },\n    \"System.Collections.NonGeneric/4.0.0\": {\n      \"sha512\": \"rVgwrFBMkmp8LI6GhAYd6Bx+2uLIXjRfNg6Ie+ASfX8ESuh9e2HNxFy2yh1MPIXZq3OAYa+0mmULVwpnEC6UDA==\",\n      \"type\": \"package\",\n      \"path\": \"system.collections.nongeneric/4.0.0\",\n      \"files\": [\n        \"System.Collections.NonGeneric.4.0.0.nupkg.sha512\",\n        \"System.Collections.NonGeneric.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Collections.NonGeneric.dll\",\n        \"lib/net46/System.Collections.NonGeneric.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Collections.NonGeneric.dll\",\n        \"ref/dotnet/System.Collections.NonGeneric.xml\",\n        \"ref/dotnet/de/System.Collections.NonGeneric.xml\",\n        \"ref/dotnet/es/System.Collections.NonGeneric.xml\",\n        \"ref/dotnet/fr/System.Collections.NonGeneric.xml\",\n        \"ref/dotnet/it/System.Collections.NonGeneric.xml\",\n        \"ref/dotnet/ja/System.Collections.NonGeneric.xml\",\n        \"ref/dotnet/ko/System.Collections.NonGeneric.xml\",\n        \"ref/dotnet/ru/System.Collections.NonGeneric.xml\",\n        \"ref/dotnet/zh-hans/System.Collections.NonGeneric.xml\",\n        \"ref/dotnet/zh-hant/System.Collections.NonGeneric.xml\",\n        \"ref/net46/System.Collections.NonGeneric.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Collections.Specialized/4.0.0\": {\n      \"sha512\": \"poJFwQCUOoXqvdoGxx+3p8Z63yawcYKPBSFP67Z2jICeOINvEIQZN7mVOAnC7gsVF0WU+A2wtVwfhagC7UCgAg==\",\n      \"type\": \"package\",\n      \"path\": \"system.collections.specialized/4.0.0\",\n      \"files\": [\n        \"System.Collections.Specialized.4.0.0.nupkg.sha512\",\n        \"System.Collections.Specialized.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Collections.Specialized.dll\",\n        \"lib/net46/System.Collections.Specialized.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Collections.Specialized.dll\",\n        \"ref/dotnet/System.Collections.Specialized.xml\",\n        \"ref/dotnet/de/System.Collections.Specialized.xml\",\n        \"ref/dotnet/es/System.Collections.Specialized.xml\",\n        \"ref/dotnet/fr/System.Collections.Specialized.xml\",\n        \"ref/dotnet/it/System.Collections.Specialized.xml\",\n        \"ref/dotnet/ja/System.Collections.Specialized.xml\",\n        \"ref/dotnet/ko/System.Collections.Specialized.xml\",\n        \"ref/dotnet/ru/System.Collections.Specialized.xml\",\n        \"ref/dotnet/zh-hans/System.Collections.Specialized.xml\",\n        \"ref/dotnet/zh-hant/System.Collections.Specialized.xml\",\n        \"ref/net46/System.Collections.Specialized.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.ComponentModel/4.0.0\": {\n      \"sha512\": \"BzpLdSi++ld7rJLOOt5f/G9GxujP202bBgKORsHcGV36rLB0mfSA2h8chTMoBzFhgN7TE14TmJ2J7Q1RyNCTAw==\",\n      \"type\": \"package\",\n      \"path\": \"system.componentmodel/4.0.0\",\n      \"files\": [\n        \"System.ComponentModel.4.0.0.nupkg.sha512\",\n        \"System.ComponentModel.nuspec\",\n        \"lib/dotnet/System.ComponentModel.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ComponentModel.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.ComponentModel.dll\",\n        \"ref/dotnet/System.ComponentModel.xml\",\n        \"ref/dotnet/de/System.ComponentModel.xml\",\n        \"ref/dotnet/es/System.ComponentModel.xml\",\n        \"ref/dotnet/fr/System.ComponentModel.xml\",\n        \"ref/dotnet/it/System.ComponentModel.xml\",\n        \"ref/dotnet/ja/System.ComponentModel.xml\",\n        \"ref/dotnet/ko/System.ComponentModel.xml\",\n        \"ref/dotnet/ru/System.ComponentModel.xml\",\n        \"ref/dotnet/zh-hans/System.ComponentModel.xml\",\n        \"ref/dotnet/zh-hant/System.ComponentModel.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ComponentModel.dll\",\n        \"ref/netcore50/System.ComponentModel.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"System.ComponentModel.Annotations/4.0.10\": {\n      \"sha512\": \"7+XGyEZx24nP1kpHxCB9e+c6D0fdVDvFwE1xujE9BzlXyNVcy5J5aIO0H/ECupx21QpyRvzZibGAHfL/XLL6dw==\",\n      \"type\": \"package\",\n      \"path\": \"system.componentmodel.annotations/4.0.10\",\n      \"files\": [\n        \"System.ComponentModel.Annotations.4.0.10.nupkg.sha512\",\n        \"System.ComponentModel.Annotations.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.ComponentModel.Annotations.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.ComponentModel.Annotations.dll\",\n        \"ref/dotnet/System.ComponentModel.Annotations.xml\",\n        \"ref/dotnet/de/System.ComponentModel.Annotations.xml\",\n        \"ref/dotnet/es/System.ComponentModel.Annotations.xml\",\n        \"ref/dotnet/fr/System.ComponentModel.Annotations.xml\",\n        \"ref/dotnet/it/System.ComponentModel.Annotations.xml\",\n        \"ref/dotnet/ja/System.ComponentModel.Annotations.xml\",\n        \"ref/dotnet/ko/System.ComponentModel.Annotations.xml\",\n        \"ref/dotnet/ru/System.ComponentModel.Annotations.xml\",\n        \"ref/dotnet/zh-hans/System.ComponentModel.Annotations.xml\",\n        \"ref/dotnet/zh-hant/System.ComponentModel.Annotations.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.ComponentModel.EventBasedAsync/4.0.10\": {\n      \"sha512\": \"d6kXcHUgP0jSPXEQ6hXJYCO6CzfoCi7t9vR3BfjSQLrj4HzpuATpx1gkN7itmTW1O+wjuw6rai4378Nj6N70yw==\",\n      \"type\": \"package\",\n      \"path\": \"system.componentmodel.eventbasedasync/4.0.10\",\n      \"files\": [\n        \"System.ComponentModel.EventBasedAsync.4.0.10.nupkg.sha512\",\n        \"System.ComponentModel.EventBasedAsync.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.ComponentModel.EventBasedAsync.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.ComponentModel.EventBasedAsync.dll\",\n        \"ref/dotnet/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/dotnet/de/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/dotnet/es/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/dotnet/fr/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/dotnet/it/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/dotnet/ja/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/dotnet/ko/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/dotnet/ru/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/dotnet/zh-hans/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/dotnet/zh-hant/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Data.Common/4.0.0\": {\n      \"sha512\": \"SA7IdoTWiImVr0exDM68r0mKmR4f/qFGxZUrJQKu4YS7F+3afWzSOCezHxWdevQ0ONi4WRQsOiv+Zf9p8H0Feg==\",\n      \"type\": \"package\",\n      \"path\": \"system.data.common/4.0.0\",\n      \"files\": [\n        \"System.Data.Common.4.0.0.nupkg.sha512\",\n        \"System.Data.Common.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Data.Common.dll\",\n        \"lib/net46/System.Data.Common.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Data.Common.dll\",\n        \"ref/dotnet/System.Data.Common.xml\",\n        \"ref/dotnet/de/System.Data.Common.xml\",\n        \"ref/dotnet/es/System.Data.Common.xml\",\n        \"ref/dotnet/fr/System.Data.Common.xml\",\n        \"ref/dotnet/it/System.Data.Common.xml\",\n        \"ref/dotnet/ja/System.Data.Common.xml\",\n        \"ref/dotnet/ko/System.Data.Common.xml\",\n        \"ref/dotnet/ru/System.Data.Common.xml\",\n        \"ref/dotnet/zh-hans/System.Data.Common.xml\",\n        \"ref/dotnet/zh-hant/System.Data.Common.xml\",\n        \"ref/net46/System.Data.Common.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Diagnostics.Contracts/4.0.0\": {\n      \"sha512\": \"lMc7HNmyIsu0pKTdA4wf+FMq5jvouUd+oUpV4BdtyqoV0Pkbg9u/7lTKFGqpjZRQosWHq1+B32Lch2wf4AmloA==\",\n      \"type\": \"package\",\n      \"path\": \"system.diagnostics.contracts/4.0.0\",\n      \"files\": [\n        \"System.Diagnostics.Contracts.4.0.0.nupkg.sha512\",\n        \"System.Diagnostics.Contracts.nuspec\",\n        \"lib/DNXCore50/System.Diagnostics.Contracts.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Diagnostics.Contracts.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Diagnostics.Contracts.dll\",\n        \"ref/dotnet/System.Diagnostics.Contracts.xml\",\n        \"ref/dotnet/de/System.Diagnostics.Contracts.xml\",\n        \"ref/dotnet/es/System.Diagnostics.Contracts.xml\",\n        \"ref/dotnet/fr/System.Diagnostics.Contracts.xml\",\n        \"ref/dotnet/it/System.Diagnostics.Contracts.xml\",\n        \"ref/dotnet/ja/System.Diagnostics.Contracts.xml\",\n        \"ref/dotnet/ko/System.Diagnostics.Contracts.xml\",\n        \"ref/dotnet/ru/System.Diagnostics.Contracts.xml\",\n        \"ref/dotnet/zh-hans/System.Diagnostics.Contracts.xml\",\n        \"ref/dotnet/zh-hant/System.Diagnostics.Contracts.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Diagnostics.Contracts.dll\",\n        \"ref/netcore50/System.Diagnostics.Contracts.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Contracts.dll\"\n      ]\n    },\n    \"System.Diagnostics.Debug/4.0.10\": {\n      \"sha512\": \"pi2KthuvI2LWV2c2V+fwReDsDiKpNl040h6DcwFOb59SafsPT/V1fCy0z66OKwysurJkBMmp5j5CBe3Um+ub0g==\",\n      \"type\": \"package\",\n      \"path\": \"system.diagnostics.debug/4.0.10\",\n      \"files\": [\n        \"System.Diagnostics.Debug.4.0.10.nupkg.sha512\",\n        \"System.Diagnostics.Debug.nuspec\",\n        \"lib/DNXCore50/System.Diagnostics.Debug.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Diagnostics.Debug.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Diagnostics.Debug.dll\",\n        \"ref/dotnet/System.Diagnostics.Debug.xml\",\n        \"ref/dotnet/de/System.Diagnostics.Debug.xml\",\n        \"ref/dotnet/es/System.Diagnostics.Debug.xml\",\n        \"ref/dotnet/fr/System.Diagnostics.Debug.xml\",\n        \"ref/dotnet/it/System.Diagnostics.Debug.xml\",\n        \"ref/dotnet/ja/System.Diagnostics.Debug.xml\",\n        \"ref/dotnet/ko/System.Diagnostics.Debug.xml\",\n        \"ref/dotnet/ru/System.Diagnostics.Debug.xml\",\n        \"ref/dotnet/zh-hans/System.Diagnostics.Debug.xml\",\n        \"ref/dotnet/zh-hant/System.Diagnostics.Debug.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll\"\n      ]\n    },\n    \"System.Diagnostics.StackTrace/4.0.0\": {\n      \"sha512\": \"PItgenqpRiMqErvQONBlfDwctKpWVrcDSW5pppNZPJ6Bpiyz+KjsWoSiaqs5dt03HEbBTMNCrZb8KCkh7YfXmw==\",\n      \"type\": \"package\",\n      \"path\": \"system.diagnostics.stacktrace/4.0.0\",\n      \"files\": [\n        \"System.Diagnostics.StackTrace.4.0.0.nupkg.sha512\",\n        \"System.Diagnostics.StackTrace.nuspec\",\n        \"lib/DNXCore50/System.Diagnostics.StackTrace.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Diagnostics.StackTrace.dll\",\n        \"lib/netcore50/System.Diagnostics.StackTrace.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Diagnostics.StackTrace.dll\",\n        \"ref/dotnet/System.Diagnostics.StackTrace.xml\",\n        \"ref/dotnet/de/System.Diagnostics.StackTrace.xml\",\n        \"ref/dotnet/es/System.Diagnostics.StackTrace.xml\",\n        \"ref/dotnet/fr/System.Diagnostics.StackTrace.xml\",\n        \"ref/dotnet/it/System.Diagnostics.StackTrace.xml\",\n        \"ref/dotnet/ja/System.Diagnostics.StackTrace.xml\",\n        \"ref/dotnet/ko/System.Diagnostics.StackTrace.xml\",\n        \"ref/dotnet/ru/System.Diagnostics.StackTrace.xml\",\n        \"ref/dotnet/zh-hans/System.Diagnostics.StackTrace.xml\",\n        \"ref/dotnet/zh-hant/System.Diagnostics.StackTrace.xml\",\n        \"ref/net46/System.Diagnostics.StackTrace.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.StackTrace.dll\"\n      ]\n    },\n    \"System.Diagnostics.Tools/4.0.0\": {\n      \"sha512\": \"uw5Qi2u5Cgtv4xv3+8DeB63iaprPcaEHfpeJqlJiLjIVy6v0La4ahJ6VW9oPbJNIjcavd24LKq0ctT9ssuQXsw==\",\n      \"type\": \"package\",\n      \"path\": \"system.diagnostics.tools/4.0.0\",\n      \"files\": [\n        \"System.Diagnostics.Tools.4.0.0.nupkg.sha512\",\n        \"System.Diagnostics.Tools.nuspec\",\n        \"lib/DNXCore50/System.Diagnostics.Tools.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Diagnostics.Tools.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Diagnostics.Tools.dll\",\n        \"ref/dotnet/System.Diagnostics.Tools.xml\",\n        \"ref/dotnet/de/System.Diagnostics.Tools.xml\",\n        \"ref/dotnet/es/System.Diagnostics.Tools.xml\",\n        \"ref/dotnet/fr/System.Diagnostics.Tools.xml\",\n        \"ref/dotnet/it/System.Diagnostics.Tools.xml\",\n        \"ref/dotnet/ja/System.Diagnostics.Tools.xml\",\n        \"ref/dotnet/ko/System.Diagnostics.Tools.xml\",\n        \"ref/dotnet/ru/System.Diagnostics.Tools.xml\",\n        \"ref/dotnet/zh-hans/System.Diagnostics.Tools.xml\",\n        \"ref/dotnet/zh-hant/System.Diagnostics.Tools.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Diagnostics.Tools.dll\",\n        \"ref/netcore50/System.Diagnostics.Tools.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.dll\"\n      ]\n    },\n    \"System.Diagnostics.Tracing/4.0.20\": {\n      \"sha512\": \"gn/wexGHc35Fv++5L1gYHMY5g25COfiZ0PGrL+3PfwzoJd4X2LbTAm/U8d385SI6BKQBI/z4dQfvneS9J27+Tw==\",\n      \"type\": \"package\",\n      \"path\": \"system.diagnostics.tracing/4.0.20\",\n      \"files\": [\n        \"System.Diagnostics.Tracing.4.0.20.nupkg.sha512\",\n        \"System.Diagnostics.Tracing.nuspec\",\n        \"lib/DNXCore50/System.Diagnostics.Tracing.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Diagnostics.Tracing.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Diagnostics.Tracing.dll\",\n        \"ref/dotnet/System.Diagnostics.Tracing.xml\",\n        \"ref/dotnet/de/System.Diagnostics.Tracing.xml\",\n        \"ref/dotnet/es/System.Diagnostics.Tracing.xml\",\n        \"ref/dotnet/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/dotnet/it/System.Diagnostics.Tracing.xml\",\n        \"ref/dotnet/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/dotnet/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/dotnet/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/dotnet/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/dotnet/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tracing.dll\"\n      ]\n    },\n    \"System.Dynamic.Runtime/4.0.10\": {\n      \"sha512\": \"r10VTLdlxtYp46BuxomHnwx7vIoMOr04CFoC/jJJfY22f7HQQ4P+cXY2Nxo6/rIxNNqOxwdbQQwv7Gl88Jsu1w==\",\n      \"type\": \"package\",\n      \"path\": \"system.dynamic.runtime/4.0.10\",\n      \"files\": [\n        \"System.Dynamic.Runtime.4.0.10.nupkg.sha512\",\n        \"System.Dynamic.Runtime.nuspec\",\n        \"lib/DNXCore50/System.Dynamic.Runtime.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Dynamic.Runtime.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Dynamic.Runtime.dll\",\n        \"ref/dotnet/System.Dynamic.Runtime.xml\",\n        \"ref/dotnet/de/System.Dynamic.Runtime.xml\",\n        \"ref/dotnet/es/System.Dynamic.Runtime.xml\",\n        \"ref/dotnet/fr/System.Dynamic.Runtime.xml\",\n        \"ref/dotnet/it/System.Dynamic.Runtime.xml\",\n        \"ref/dotnet/ja/System.Dynamic.Runtime.xml\",\n        \"ref/dotnet/ko/System.Dynamic.Runtime.xml\",\n        \"ref/dotnet/ru/System.Dynamic.Runtime.xml\",\n        \"ref/dotnet/zh-hans/System.Dynamic.Runtime.xml\",\n        \"ref/dotnet/zh-hant/System.Dynamic.Runtime.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtime.json\",\n        \"runtimes/win8-aot/lib/netcore50/System.Dynamic.Runtime.dll\"\n      ]\n    },\n    \"System.Globalization/4.0.10\": {\n      \"sha512\": \"kzRtbbCNAxdafFBDogcM36ehA3th8c1PGiz8QRkZn8O5yMBorDHSK8/TGJPYOaCS5zdsGk0u9qXHnW91nqy7fw==\",\n      \"type\": \"package\",\n      \"path\": \"system.globalization/4.0.10\",\n      \"files\": [\n        \"System.Globalization.4.0.10.nupkg.sha512\",\n        \"System.Globalization.nuspec\",\n        \"lib/DNXCore50/System.Globalization.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Globalization.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Globalization.dll\",\n        \"ref/dotnet/System.Globalization.xml\",\n        \"ref/dotnet/de/System.Globalization.xml\",\n        \"ref/dotnet/es/System.Globalization.xml\",\n        \"ref/dotnet/fr/System.Globalization.xml\",\n        \"ref/dotnet/it/System.Globalization.xml\",\n        \"ref/dotnet/ja/System.Globalization.xml\",\n        \"ref/dotnet/ko/System.Globalization.xml\",\n        \"ref/dotnet/ru/System.Globalization.xml\",\n        \"ref/dotnet/zh-hans/System.Globalization.xml\",\n        \"ref/dotnet/zh-hant/System.Globalization.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Globalization.dll\"\n      ]\n    },\n    \"System.Globalization.Calendars/4.0.0\": {\n      \"sha512\": \"cL6WrdGKnNBx9W/iTr+jbffsEO4RLjEtOYcpVSzPNDoli6X5Q6bAfWtJYbJNOPi8Q0fXgBEvKK1ncFL/3FTqlA==\",\n      \"type\": \"package\",\n      \"path\": \"system.globalization.calendars/4.0.0\",\n      \"files\": [\n        \"System.Globalization.Calendars.4.0.0.nupkg.sha512\",\n        \"System.Globalization.Calendars.nuspec\",\n        \"lib/DNXCore50/System.Globalization.Calendars.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Globalization.Calendars.dll\",\n        \"lib/netcore50/System.Globalization.Calendars.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Globalization.Calendars.dll\",\n        \"ref/dotnet/System.Globalization.Calendars.xml\",\n        \"ref/dotnet/de/System.Globalization.Calendars.xml\",\n        \"ref/dotnet/es/System.Globalization.Calendars.xml\",\n        \"ref/dotnet/fr/System.Globalization.Calendars.xml\",\n        \"ref/dotnet/it/System.Globalization.Calendars.xml\",\n        \"ref/dotnet/ja/System.Globalization.Calendars.xml\",\n        \"ref/dotnet/ko/System.Globalization.Calendars.xml\",\n        \"ref/dotnet/ru/System.Globalization.Calendars.xml\",\n        \"ref/dotnet/zh-hans/System.Globalization.Calendars.xml\",\n        \"ref/dotnet/zh-hant/System.Globalization.Calendars.xml\",\n        \"ref/net46/System.Globalization.Calendars.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Globalization.Calendars.dll\"\n      ]\n    },\n    \"System.Globalization.Extensions/4.0.0\": {\n      \"sha512\": \"rqbUXiwpBCvJ18ySCsjh20zleazO+6fr3s5GihC2sVwhyS0MUl6+oc5Rzk0z6CKkS4kmxbZQSeZLsK7cFSO0ng==\",\n      \"type\": \"package\",\n      \"path\": \"system.globalization.extensions/4.0.0\",\n      \"files\": [\n        \"System.Globalization.Extensions.4.0.0.nupkg.sha512\",\n        \"System.Globalization.Extensions.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Globalization.Extensions.dll\",\n        \"lib/net46/System.Globalization.Extensions.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Globalization.Extensions.dll\",\n        \"ref/dotnet/System.Globalization.Extensions.xml\",\n        \"ref/dotnet/de/System.Globalization.Extensions.xml\",\n        \"ref/dotnet/es/System.Globalization.Extensions.xml\",\n        \"ref/dotnet/fr/System.Globalization.Extensions.xml\",\n        \"ref/dotnet/it/System.Globalization.Extensions.xml\",\n        \"ref/dotnet/ja/System.Globalization.Extensions.xml\",\n        \"ref/dotnet/ko/System.Globalization.Extensions.xml\",\n        \"ref/dotnet/ru/System.Globalization.Extensions.xml\",\n        \"ref/dotnet/zh-hans/System.Globalization.Extensions.xml\",\n        \"ref/dotnet/zh-hant/System.Globalization.Extensions.xml\",\n        \"ref/net46/System.Globalization.Extensions.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.IO/4.0.10\": {\n      \"sha512\": \"kghf1CeYT+W2lw8a50/GxFz5HR9t6RkL4BvjxtTp1NxtEFWywnMA9W8FH/KYXiDNThcw9u/GOViDON4iJFGXIQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.io/4.0.10\",\n      \"files\": [\n        \"System.IO.4.0.10.nupkg.sha512\",\n        \"System.IO.nuspec\",\n        \"lib/DNXCore50/System.IO.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.IO.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.IO.dll\",\n        \"ref/dotnet/System.IO.xml\",\n        \"ref/dotnet/de/System.IO.xml\",\n        \"ref/dotnet/es/System.IO.xml\",\n        \"ref/dotnet/fr/System.IO.xml\",\n        \"ref/dotnet/it/System.IO.xml\",\n        \"ref/dotnet/ja/System.IO.xml\",\n        \"ref/dotnet/ko/System.IO.xml\",\n        \"ref/dotnet/ru/System.IO.xml\",\n        \"ref/dotnet/zh-hans/System.IO.xml\",\n        \"ref/dotnet/zh-hant/System.IO.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.IO.dll\"\n      ]\n    },\n    \"System.IO.Compression/4.0.0\": {\n      \"sha512\": \"S+ljBE3py8pujTrsOOYHtDg2cnAifn6kBu/pfh1hMWIXd8DoVh0ADTA6Puv4q+nYj+Msm6JoFLNwuRSmztbsDQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.io.compression/4.0.0\",\n      \"files\": [\n        \"System.IO.Compression.4.0.0.nupkg.sha512\",\n        \"System.IO.Compression.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.IO.Compression.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.IO.Compression.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.IO.Compression.dll\",\n        \"ref/dotnet/System.IO.Compression.xml\",\n        \"ref/dotnet/de/System.IO.Compression.xml\",\n        \"ref/dotnet/es/System.IO.Compression.xml\",\n        \"ref/dotnet/fr/System.IO.Compression.xml\",\n        \"ref/dotnet/it/System.IO.Compression.xml\",\n        \"ref/dotnet/ja/System.IO.Compression.xml\",\n        \"ref/dotnet/ko/System.IO.Compression.xml\",\n        \"ref/dotnet/ru/System.IO.Compression.xml\",\n        \"ref/dotnet/zh-hans/System.IO.Compression.xml\",\n        \"ref/dotnet/zh-hant/System.IO.Compression.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.IO.Compression.dll\",\n        \"ref/netcore50/System.IO.Compression.xml\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtime.json\"\n      ]\n    },\n    \"System.IO.Compression.clrcompression-arm/4.0.0\": {\n      \"sha512\": \"Kk21GecAbI+H6tMP6/lMssGObbhoHwLiREiB5UkNMCypdxACuF+6gmrdDTousCUcbH28CJeo7tArrnUc+bchuw==\",\n      \"type\": \"package\",\n      \"path\": \"system.io.compression.clrcompression-arm/4.0.0\",\n      \"files\": [\n        \"System.IO.Compression.clrcompression-arm.4.0.0.nupkg.sha512\",\n        \"System.IO.Compression.clrcompression-arm.nuspec\",\n        \"runtimes/win10-arm/native/ClrCompression.dll\",\n        \"runtimes/win7-arm/native/clrcompression.dll\"\n      ]\n    },\n    \"System.IO.Compression.clrcompression-x64/4.0.0\": {\n      \"sha512\": \"Lqr+URMwKzf+8HJF6YrqEqzKzDzFJTE4OekaxqdIns71r8Ufbd8SbZa0LKl9q+7nu6Em4SkIEXVMB7plSXekOw==\",\n      \"type\": \"package\",\n      \"path\": \"system.io.compression.clrcompression-x64/4.0.0\",\n      \"files\": [\n        \"System.IO.Compression.clrcompression-x64.4.0.0.nupkg.sha512\",\n        \"System.IO.Compression.clrcompression-x64.nuspec\",\n        \"runtimes/win10-x64/native/ClrCompression.dll\",\n        \"runtimes/win7-x64/native/clrcompression.dll\"\n      ]\n    },\n    \"System.IO.Compression.clrcompression-x86/4.0.0\": {\n      \"sha512\": \"GmevpuaMRzYDXHu+xuV10fxTO8DsP7OKweWxYtkaxwVnDSj9X6RBupSiXdiveq9yj/xjZ1NbG+oRRRb99kj+VQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.io.compression.clrcompression-x86/4.0.0\",\n      \"files\": [\n        \"System.IO.Compression.clrcompression-x86.4.0.0.nupkg.sha512\",\n        \"System.IO.Compression.clrcompression-x86.nuspec\",\n        \"runtimes/win10-x86/native/ClrCompression.dll\",\n        \"runtimes/win7-x86/native/clrcompression.dll\"\n      ]\n    },\n    \"System.IO.Compression.ZipFile/4.0.0\": {\n      \"sha512\": \"pwntmtsJqtt6Lez4Iyv4GVGW6DaXUTo9Rnlsx0MFagRgX+8F/sxG5S/IzDJabBj68sUWViz1QJrRZL4V9ngWDg==\",\n      \"type\": \"package\",\n      \"path\": \"system.io.compression.zipfile/4.0.0\",\n      \"files\": [\n        \"System.IO.Compression.ZipFile.4.0.0.nupkg.sha512\",\n        \"System.IO.Compression.ZipFile.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.IO.Compression.ZipFile.dll\",\n        \"lib/net46/System.IO.Compression.ZipFile.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.IO.Compression.ZipFile.dll\",\n        \"ref/dotnet/System.IO.Compression.ZipFile.xml\",\n        \"ref/dotnet/de/System.IO.Compression.ZipFile.xml\",\n        \"ref/dotnet/es/System.IO.Compression.ZipFile.xml\",\n        \"ref/dotnet/fr/System.IO.Compression.ZipFile.xml\",\n        \"ref/dotnet/it/System.IO.Compression.ZipFile.xml\",\n        \"ref/dotnet/ja/System.IO.Compression.ZipFile.xml\",\n        \"ref/dotnet/ko/System.IO.Compression.ZipFile.xml\",\n        \"ref/dotnet/ru/System.IO.Compression.ZipFile.xml\",\n        \"ref/dotnet/zh-hans/System.IO.Compression.ZipFile.xml\",\n        \"ref/dotnet/zh-hant/System.IO.Compression.ZipFile.xml\",\n        \"ref/net46/System.IO.Compression.ZipFile.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.IO.FileSystem/4.0.0\": {\n      \"sha512\": \"eo05SPWfG+54UA0wxgRIYOuOslq+2QrJLXZaJDDsfLXG15OLguaItW39NYZTqUb4DeGOkU4R0wpOLOW4ynMUDQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.io.filesystem/4.0.0\",\n      \"files\": [\n        \"System.IO.FileSystem.4.0.0.nupkg.sha512\",\n        \"System.IO.FileSystem.nuspec\",\n        \"lib/DNXCore50/System.IO.FileSystem.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.IO.FileSystem.dll\",\n        \"lib/netcore50/System.IO.FileSystem.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.IO.FileSystem.dll\",\n        \"ref/dotnet/System.IO.FileSystem.xml\",\n        \"ref/dotnet/de/System.IO.FileSystem.xml\",\n        \"ref/dotnet/es/System.IO.FileSystem.xml\",\n        \"ref/dotnet/fr/System.IO.FileSystem.xml\",\n        \"ref/dotnet/it/System.IO.FileSystem.xml\",\n        \"ref/dotnet/ja/System.IO.FileSystem.xml\",\n        \"ref/dotnet/ko/System.IO.FileSystem.xml\",\n        \"ref/dotnet/ru/System.IO.FileSystem.xml\",\n        \"ref/dotnet/zh-hans/System.IO.FileSystem.xml\",\n        \"ref/dotnet/zh-hant/System.IO.FileSystem.xml\",\n        \"ref/net46/System.IO.FileSystem.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.IO.FileSystem.Primitives/4.0.0\": {\n      \"sha512\": \"7pJUvYi/Yq3A5nagqCCiOw3+aJp3xXc/Cjr8dnJDnER3/6kX3LEencfqmXUcPl9+7OvRNyPMNhqsLAcMK6K/KA==\",\n      \"type\": \"package\",\n      \"path\": \"system.io.filesystem.primitives/4.0.0\",\n      \"files\": [\n        \"System.IO.FileSystem.Primitives.4.0.0.nupkg.sha512\",\n        \"System.IO.FileSystem.Primitives.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.IO.FileSystem.Primitives.dll\",\n        \"lib/net46/System.IO.FileSystem.Primitives.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.IO.FileSystem.Primitives.dll\",\n        \"ref/dotnet/System.IO.FileSystem.Primitives.xml\",\n        \"ref/dotnet/de/System.IO.FileSystem.Primitives.xml\",\n        \"ref/dotnet/es/System.IO.FileSystem.Primitives.xml\",\n        \"ref/dotnet/fr/System.IO.FileSystem.Primitives.xml\",\n        \"ref/dotnet/it/System.IO.FileSystem.Primitives.xml\",\n        \"ref/dotnet/ja/System.IO.FileSystem.Primitives.xml\",\n        \"ref/dotnet/ko/System.IO.FileSystem.Primitives.xml\",\n        \"ref/dotnet/ru/System.IO.FileSystem.Primitives.xml\",\n        \"ref/dotnet/zh-hans/System.IO.FileSystem.Primitives.xml\",\n        \"ref/dotnet/zh-hant/System.IO.FileSystem.Primitives.xml\",\n        \"ref/net46/System.IO.FileSystem.Primitives.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.IO.IsolatedStorage/4.0.0\": {\n      \"sha512\": \"d5KimUbZ49Ki6A/uwU+Iodng+nhJvpRs7hr/828cfeXC02LxUiggnRnAu+COtWcKvJ2YbBmAGOcO4GLK4fX1+w==\",\n      \"type\": \"package\",\n      \"path\": \"system.io.isolatedstorage/4.0.0\",\n      \"files\": [\n        \"System.IO.IsolatedStorage.4.0.0.nupkg.sha512\",\n        \"System.IO.IsolatedStorage.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/netcore50/System.IO.IsolatedStorage.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.IO.IsolatedStorage.dll\",\n        \"ref/dotnet/System.IO.IsolatedStorage.xml\",\n        \"ref/dotnet/de/System.IO.IsolatedStorage.xml\",\n        \"ref/dotnet/es/System.IO.IsolatedStorage.xml\",\n        \"ref/dotnet/fr/System.IO.IsolatedStorage.xml\",\n        \"ref/dotnet/it/System.IO.IsolatedStorage.xml\",\n        \"ref/dotnet/ja/System.IO.IsolatedStorage.xml\",\n        \"ref/dotnet/ko/System.IO.IsolatedStorage.xml\",\n        \"ref/dotnet/ru/System.IO.IsolatedStorage.xml\",\n        \"ref/dotnet/zh-hans/System.IO.IsolatedStorage.xml\",\n        \"ref/dotnet/zh-hant/System.IO.IsolatedStorage.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.IO.UnmanagedMemoryStream/4.0.0\": {\n      \"sha512\": \"i2xczgQfwHmolORBNHxV9b5izP8VOBxgSA2gf+H55xBvwqtR+9r9adtzlc7at0MAwiLcsk6V1TZlv2vfRQr8Sw==\",\n      \"type\": \"package\",\n      \"path\": \"system.io.unmanagedmemorystream/4.0.0\",\n      \"files\": [\n        \"System.IO.UnmanagedMemoryStream.4.0.0.nupkg.sha512\",\n        \"System.IO.UnmanagedMemoryStream.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.IO.UnmanagedMemoryStream.dll\",\n        \"lib/net46/System.IO.UnmanagedMemoryStream.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.IO.UnmanagedMemoryStream.dll\",\n        \"ref/dotnet/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/dotnet/de/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/dotnet/es/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/dotnet/fr/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/dotnet/it/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/dotnet/ja/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/dotnet/ko/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/dotnet/ru/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/dotnet/zh-hans/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/dotnet/zh-hant/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/net46/System.IO.UnmanagedMemoryStream.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Linq/4.0.0\": {\n      \"sha512\": \"r6Hlc+ytE6m/9UBr+nNRRdoJEWjoeQiT3L3lXYFDHoXk3VYsRBCDNXrawcexw7KPLaH0zamQLiAb6avhZ50cGg==\",\n      \"type\": \"package\",\n      \"path\": \"system.linq/4.0.0\",\n      \"files\": [\n        \"System.Linq.4.0.0.nupkg.sha512\",\n        \"System.Linq.nuspec\",\n        \"lib/dotnet/System.Linq.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Linq.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Linq.dll\",\n        \"ref/dotnet/System.Linq.xml\",\n        \"ref/dotnet/de/System.Linq.xml\",\n        \"ref/dotnet/es/System.Linq.xml\",\n        \"ref/dotnet/fr/System.Linq.xml\",\n        \"ref/dotnet/it/System.Linq.xml\",\n        \"ref/dotnet/ja/System.Linq.xml\",\n        \"ref/dotnet/ko/System.Linq.xml\",\n        \"ref/dotnet/ru/System.Linq.xml\",\n        \"ref/dotnet/zh-hans/System.Linq.xml\",\n        \"ref/dotnet/zh-hant/System.Linq.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Linq.dll\",\n        \"ref/netcore50/System.Linq.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"System.Linq.Expressions/4.0.10\": {\n      \"sha512\": \"qhFkPqRsTfXBaacjQhxwwwUoU7TEtwlBIULj7nG7i4qAkvivil31VvOvDKppCSui5yGw0/325ZeNaMYRvTotXw==\",\n      \"type\": \"package\",\n      \"path\": \"system.linq.expressions/4.0.10\",\n      \"files\": [\n        \"System.Linq.Expressions.4.0.10.nupkg.sha512\",\n        \"System.Linq.Expressions.nuspec\",\n        \"lib/DNXCore50/System.Linq.Expressions.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Linq.Expressions.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Linq.Expressions.dll\",\n        \"ref/dotnet/System.Linq.Expressions.xml\",\n        \"ref/dotnet/de/System.Linq.Expressions.xml\",\n        \"ref/dotnet/es/System.Linq.Expressions.xml\",\n        \"ref/dotnet/fr/System.Linq.Expressions.xml\",\n        \"ref/dotnet/it/System.Linq.Expressions.xml\",\n        \"ref/dotnet/ja/System.Linq.Expressions.xml\",\n        \"ref/dotnet/ko/System.Linq.Expressions.xml\",\n        \"ref/dotnet/ru/System.Linq.Expressions.xml\",\n        \"ref/dotnet/zh-hans/System.Linq.Expressions.xml\",\n        \"ref/dotnet/zh-hant/System.Linq.Expressions.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtime.json\",\n        \"runtimes/win8-aot/lib/netcore50/System.Linq.Expressions.dll\"\n      ]\n    },\n    \"System.Linq.Parallel/4.0.0\": {\n      \"sha512\": \"PtH7KKh1BbzVow4XY17pnrn7Io63ApMdwzRE2o2HnzsKQD/0o7X5xe6mxrDUqTm9ZCR3/PNhAlP13VY1HnHsbA==\",\n      \"type\": \"package\",\n      \"path\": \"system.linq.parallel/4.0.0\",\n      \"files\": [\n        \"System.Linq.Parallel.4.0.0.nupkg.sha512\",\n        \"System.Linq.Parallel.nuspec\",\n        \"lib/dotnet/System.Linq.Parallel.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Linq.Parallel.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Linq.Parallel.dll\",\n        \"ref/dotnet/System.Linq.Parallel.xml\",\n        \"ref/dotnet/de/System.Linq.Parallel.xml\",\n        \"ref/dotnet/es/System.Linq.Parallel.xml\",\n        \"ref/dotnet/fr/System.Linq.Parallel.xml\",\n        \"ref/dotnet/it/System.Linq.Parallel.xml\",\n        \"ref/dotnet/ja/System.Linq.Parallel.xml\",\n        \"ref/dotnet/ko/System.Linq.Parallel.xml\",\n        \"ref/dotnet/ru/System.Linq.Parallel.xml\",\n        \"ref/dotnet/zh-hans/System.Linq.Parallel.xml\",\n        \"ref/dotnet/zh-hant/System.Linq.Parallel.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Linq.Parallel.dll\",\n        \"ref/netcore50/System.Linq.Parallel.xml\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"System.Linq.Queryable/4.0.0\": {\n      \"sha512\": \"DIlvCNn3ucFvwMMzXcag4aFnFJ1fdxkQ5NqwJe9Nh7y8ozzhDm07YakQL/yoF3P1dLzY1T2cTpuwbAmVSdXyBA==\",\n      \"type\": \"package\",\n      \"path\": \"system.linq.queryable/4.0.0\",\n      \"files\": [\n        \"System.Linq.Queryable.4.0.0.nupkg.sha512\",\n        \"System.Linq.Queryable.nuspec\",\n        \"lib/dotnet/System.Linq.Queryable.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Linq.Queryable.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Linq.Queryable.dll\",\n        \"ref/dotnet/System.Linq.Queryable.xml\",\n        \"ref/dotnet/de/System.Linq.Queryable.xml\",\n        \"ref/dotnet/es/System.Linq.Queryable.xml\",\n        \"ref/dotnet/fr/System.Linq.Queryable.xml\",\n        \"ref/dotnet/it/System.Linq.Queryable.xml\",\n        \"ref/dotnet/ja/System.Linq.Queryable.xml\",\n        \"ref/dotnet/ko/System.Linq.Queryable.xml\",\n        \"ref/dotnet/ru/System.Linq.Queryable.xml\",\n        \"ref/dotnet/zh-hans/System.Linq.Queryable.xml\",\n        \"ref/dotnet/zh-hant/System.Linq.Queryable.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Linq.Queryable.dll\",\n        \"ref/netcore50/System.Linq.Queryable.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"System.Net.Http/4.0.0\": {\n      \"sha512\": \"mZuAl7jw/mFY8jUq4ITKECxVBh9a8SJt9BC/+lJbmo7cRKspxE3PsITz+KiaCEsexN5WYPzwBOx0oJH/0HlPyQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.net.http/4.0.0\",\n      \"files\": [\n        \"System.Net.Http.4.0.0.nupkg.sha512\",\n        \"System.Net.Http.nuspec\",\n        \"lib/DNXCore50/System.Net.Http.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Net.Http.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Net.Http.dll\",\n        \"ref/dotnet/System.Net.Http.xml\",\n        \"ref/dotnet/de/System.Net.Http.xml\",\n        \"ref/dotnet/es/System.Net.Http.xml\",\n        \"ref/dotnet/fr/System.Net.Http.xml\",\n        \"ref/dotnet/it/System.Net.Http.xml\",\n        \"ref/dotnet/ja/System.Net.Http.xml\",\n        \"ref/dotnet/ko/System.Net.Http.xml\",\n        \"ref/dotnet/ru/System.Net.Http.xml\",\n        \"ref/dotnet/zh-hans/System.Net.Http.xml\",\n        \"ref/dotnet/zh-hant/System.Net.Http.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Net.Http.dll\",\n        \"ref/netcore50/System.Net.Http.xml\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"System.Net.Http.Rtc/4.0.0\": {\n      \"sha512\": \"PlE+oJgXdbxPmZYR6GBywRkyIPovjB1Y0SYHizj2Iflgu80uJQC4szl9gue4rKI2FgXiEbj9JL7wL5K3mp9HAQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.net.http.rtc/4.0.0\",\n      \"files\": [\n        \"System.Net.Http.Rtc.4.0.0.nupkg.sha512\",\n        \"System.Net.Http.Rtc.nuspec\",\n        \"lib/netcore50/System.Net.Http.Rtc.dll\",\n        \"lib/win8/_._\",\n        \"ref/dotnet/System.Net.Http.Rtc.dll\",\n        \"ref/dotnet/System.Net.Http.Rtc.xml\",\n        \"ref/dotnet/de/System.Net.Http.Rtc.xml\",\n        \"ref/dotnet/es/System.Net.Http.Rtc.xml\",\n        \"ref/dotnet/fr/System.Net.Http.Rtc.xml\",\n        \"ref/dotnet/it/System.Net.Http.Rtc.xml\",\n        \"ref/dotnet/ja/System.Net.Http.Rtc.xml\",\n        \"ref/dotnet/ko/System.Net.Http.Rtc.xml\",\n        \"ref/dotnet/ru/System.Net.Http.Rtc.xml\",\n        \"ref/dotnet/zh-hans/System.Net.Http.Rtc.xml\",\n        \"ref/dotnet/zh-hant/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/System.Net.Http.Rtc.dll\",\n        \"ref/netcore50/System.Net.Http.Rtc.xml\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.Net.NetworkInformation/4.0.0\": {\n      \"sha512\": \"D68KCf5VK1G1GgFUwD901gU6cnMITksOdfdxUCt9ReCZfT1pigaDqjJ7XbiLAM4jm7TfZHB7g5mbOf1mbG3yBA==\",\n      \"type\": \"package\",\n      \"path\": \"system.net.networkinformation/4.0.0\",\n      \"files\": [\n        \"System.Net.NetworkInformation.4.0.0.nupkg.sha512\",\n        \"System.Net.NetworkInformation.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Net.NetworkInformation.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Net.NetworkInformation.dll\",\n        \"ref/dotnet/System.Net.NetworkInformation.xml\",\n        \"ref/dotnet/de/System.Net.NetworkInformation.xml\",\n        \"ref/dotnet/es/System.Net.NetworkInformation.xml\",\n        \"ref/dotnet/fr/System.Net.NetworkInformation.xml\",\n        \"ref/dotnet/it/System.Net.NetworkInformation.xml\",\n        \"ref/dotnet/ja/System.Net.NetworkInformation.xml\",\n        \"ref/dotnet/ko/System.Net.NetworkInformation.xml\",\n        \"ref/dotnet/ru/System.Net.NetworkInformation.xml\",\n        \"ref/dotnet/zh-hans/System.Net.NetworkInformation.xml\",\n        \"ref/dotnet/zh-hant/System.Net.NetworkInformation.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Net.NetworkInformation.dll\",\n        \"ref/netcore50/System.Net.NetworkInformation.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Net.Primitives/4.0.10\": {\n      \"sha512\": \"YQqIpmMhnKjIbT7rl6dlf7xM5DxaMR+whduZ9wKb9OhMLjoueAJO3HPPJI+Naf3v034kb+xZqdc3zo44o3HWcg==\",\n      \"type\": \"package\",\n      \"path\": \"system.net.primitives/4.0.10\",\n      \"files\": [\n        \"System.Net.Primitives.4.0.10.nupkg.sha512\",\n        \"System.Net.Primitives.nuspec\",\n        \"lib/DNXCore50/System.Net.Primitives.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Net.Primitives.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Net.Primitives.dll\",\n        \"ref/dotnet/System.Net.Primitives.xml\",\n        \"ref/dotnet/de/System.Net.Primitives.xml\",\n        \"ref/dotnet/es/System.Net.Primitives.xml\",\n        \"ref/dotnet/fr/System.Net.Primitives.xml\",\n        \"ref/dotnet/it/System.Net.Primitives.xml\",\n        \"ref/dotnet/ja/System.Net.Primitives.xml\",\n        \"ref/dotnet/ko/System.Net.Primitives.xml\",\n        \"ref/dotnet/ru/System.Net.Primitives.xml\",\n        \"ref/dotnet/zh-hans/System.Net.Primitives.xml\",\n        \"ref/dotnet/zh-hant/System.Net.Primitives.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Net.Requests/4.0.10\": {\n      \"sha512\": \"A6XBR7TztiIQg6hx7VGfbBKmRTAavUERm2E7pmNz/gZeGvwyP0lcKHZxylJtNVKj7DPwr91bD87oLY6zZYntcg==\",\n      \"type\": \"package\",\n      \"path\": \"system.net.requests/4.0.10\",\n      \"files\": [\n        \"System.Net.Requests.4.0.10.nupkg.sha512\",\n        \"System.Net.Requests.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Net.Requests.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Net.Requests.dll\",\n        \"ref/dotnet/System.Net.Requests.xml\",\n        \"ref/dotnet/de/System.Net.Requests.xml\",\n        \"ref/dotnet/es/System.Net.Requests.xml\",\n        \"ref/dotnet/fr/System.Net.Requests.xml\",\n        \"ref/dotnet/it/System.Net.Requests.xml\",\n        \"ref/dotnet/ja/System.Net.Requests.xml\",\n        \"ref/dotnet/ko/System.Net.Requests.xml\",\n        \"ref/dotnet/ru/System.Net.Requests.xml\",\n        \"ref/dotnet/zh-hans/System.Net.Requests.xml\",\n        \"ref/dotnet/zh-hant/System.Net.Requests.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Net.Sockets/4.0.0\": {\n      \"sha512\": \"7bBNLdO6Xw0BGyFVSxjloGXMvsc3qQmW+70bYMLwHEAVivMK8zx+E7XO8CeJnAko2mFj6R402E798EGYUksFcQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.net.sockets/4.0.0\",\n      \"files\": [\n        \"System.Net.Sockets.4.0.0.nupkg.sha512\",\n        \"System.Net.Sockets.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Net.Sockets.dll\",\n        \"lib/netcore50/System.Net.Sockets.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Net.Sockets.dll\",\n        \"ref/dotnet/System.Net.Sockets.xml\",\n        \"ref/dotnet/de/System.Net.Sockets.xml\",\n        \"ref/dotnet/es/System.Net.Sockets.xml\",\n        \"ref/dotnet/fr/System.Net.Sockets.xml\",\n        \"ref/dotnet/it/System.Net.Sockets.xml\",\n        \"ref/dotnet/ja/System.Net.Sockets.xml\",\n        \"ref/dotnet/ko/System.Net.Sockets.xml\",\n        \"ref/dotnet/ru/System.Net.Sockets.xml\",\n        \"ref/dotnet/zh-hans/System.Net.Sockets.xml\",\n        \"ref/dotnet/zh-hant/System.Net.Sockets.xml\",\n        \"ref/net46/System.Net.Sockets.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Net.WebHeaderCollection/4.0.0\": {\n      \"sha512\": \"IsIZAsHm/yK7R/XASnEc4EMffFLIMgYchG3/zJv6B4LwMnXZwrVlSPpNbPgEVb0lSXyztsn7A6sIPAACQQ2vTQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.net.webheadercollection/4.0.0\",\n      \"files\": [\n        \"System.Net.WebHeaderCollection.4.0.0.nupkg.sha512\",\n        \"System.Net.WebHeaderCollection.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Net.WebHeaderCollection.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Net.WebHeaderCollection.dll\",\n        \"ref/dotnet/System.Net.WebHeaderCollection.xml\",\n        \"ref/dotnet/de/System.Net.WebHeaderCollection.xml\",\n        \"ref/dotnet/es/System.Net.WebHeaderCollection.xml\",\n        \"ref/dotnet/fr/System.Net.WebHeaderCollection.xml\",\n        \"ref/dotnet/it/System.Net.WebHeaderCollection.xml\",\n        \"ref/dotnet/ja/System.Net.WebHeaderCollection.xml\",\n        \"ref/dotnet/ko/System.Net.WebHeaderCollection.xml\",\n        \"ref/dotnet/ru/System.Net.WebHeaderCollection.xml\",\n        \"ref/dotnet/zh-hans/System.Net.WebHeaderCollection.xml\",\n        \"ref/dotnet/zh-hant/System.Net.WebHeaderCollection.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Numerics.Vectors/4.1.0\": {\n      \"sha512\": \"jpubR06GWPoZA0oU5xLM7kHeV59/CKPBXZk4Jfhi0T3DafxbrdueHZ8kXlb+Fb5nd3DAyyMh2/eqEzLX0xv6Qg==\",\n      \"type\": \"package\",\n      \"path\": \"system.numerics.vectors/4.1.0\",\n      \"files\": [\n        \"System.Numerics.Vectors.4.1.0.nupkg.sha512\",\n        \"System.Numerics.Vectors.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Numerics.Vectors.dll\",\n        \"lib/net46/System.Numerics.Vectors.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Numerics.Vectors.dll\",\n        \"ref/net46/System.Numerics.Vectors.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Numerics.Vectors.WindowsRuntime/4.0.0\": {\n      \"sha512\": \"Ly7GvoPFZq6GyfZpfS0E7uCk1cinl5BANAngXVuau3lD2QqZJMHitzlPv6n1FlIn6krfv99X2IPkIaVzUwDHXA==\",\n      \"type\": \"package\",\n      \"path\": \"system.numerics.vectors.windowsruntime/4.0.0\",\n      \"files\": [\n        \"System.Numerics.Vectors.WindowsRuntime.4.0.0.nupkg.sha512\",\n        \"System.Numerics.Vectors.WindowsRuntime.nuspec\",\n        \"lib/dotnet/System.Numerics.Vectors.WindowsRuntime.dll\"\n      ]\n    },\n    \"System.ObjectModel/4.0.10\": {\n      \"sha512\": \"Djn1wb0vP662zxbe+c3mOhvC4vkQGicsFs1Wi0/GJJpp3Eqp+oxbJ+p2Sx3O0efYueggAI5SW+BqEoczjfr1cA==\",\n      \"type\": \"package\",\n      \"path\": \"system.objectmodel/4.0.10\",\n      \"files\": [\n        \"System.ObjectModel.4.0.10.nupkg.sha512\",\n        \"System.ObjectModel.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.ObjectModel.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.ObjectModel.dll\",\n        \"ref/dotnet/System.ObjectModel.xml\",\n        \"ref/dotnet/de/System.ObjectModel.xml\",\n        \"ref/dotnet/es/System.ObjectModel.xml\",\n        \"ref/dotnet/fr/System.ObjectModel.xml\",\n        \"ref/dotnet/it/System.ObjectModel.xml\",\n        \"ref/dotnet/ja/System.ObjectModel.xml\",\n        \"ref/dotnet/ko/System.ObjectModel.xml\",\n        \"ref/dotnet/ru/System.ObjectModel.xml\",\n        \"ref/dotnet/zh-hans/System.ObjectModel.xml\",\n        \"ref/dotnet/zh-hant/System.ObjectModel.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Private.DataContractSerialization/4.0.0\": {\n      \"sha512\": \"uQvzoXHXHn/9YqUmPtgD8ZPJIlBuuL3QHegbuik97W/umoI28fOnGLnvjRHhju1VMWvFLRQoh7uZkBaoZ+KpVQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.private.datacontractserialization/4.0.0\",\n      \"files\": [\n        \"System.Private.DataContractSerialization.4.0.0.nupkg.sha512\",\n        \"System.Private.DataContractSerialization.nuspec\",\n        \"lib/DNXCore50/System.Private.DataContractSerialization.dll\",\n        \"lib/netcore50/System.Private.DataContractSerialization.dll\",\n        \"ref/dnxcore50/_._\",\n        \"ref/netcore50/_._\",\n        \"runtime.json\",\n        \"runtimes/win8-aot/lib/netcore50/System.Private.DataContractSerialization.dll\"\n      ]\n    },\n    \"System.Private.Networking/4.0.0\": {\n      \"sha512\": \"RUEqdBdJjISC65dO8l4LdN7vTdlXH+attUpKnauDUHVtLbIKdlDB9LKoLzCQsTQRP7vzUJHWYXznHJBkjAA7yA==\",\n      \"type\": \"package\",\n      \"path\": \"system.private.networking/4.0.0\",\n      \"files\": [\n        \"System.Private.Networking.4.0.0.nupkg.sha512\",\n        \"System.Private.Networking.nuspec\",\n        \"lib/DNXCore50/System.Private.Networking.dll\",\n        \"lib/netcore50/System.Private.Networking.dll\",\n        \"ref/dnxcore50/_._\",\n        \"ref/netcore50/_._\"\n      ]\n    },\n    \"System.Private.ServiceModel/4.0.0\": {\n      \"sha512\": \"cm2wEa1f9kuUq/2k8uIwepgZJi5HdxXSnjGQIeXmAb7RaWfZPEC/iamv9GJ67b5LPnCZHR0KvtFqh82e8AAYSw==\",\n      \"type\": \"package\",\n      \"path\": \"system.private.servicemodel/4.0.0\",\n      \"files\": [\n        \"System.Private.ServiceModel.4.0.0.nupkg.sha512\",\n        \"System.Private.ServiceModel.nuspec\",\n        \"lib/DNXCore50/System.Private.ServiceModel.dll\",\n        \"lib/netcore50/System.Private.ServiceModel.dll\",\n        \"ref/dnxcore50/_._\",\n        \"ref/netcore50/_._\"\n      ]\n    },\n    \"System.Private.Uri/4.0.0\": {\n      \"sha512\": \"CtuxaCKcRIvPcsqquVl3mPp79EDZPMr2UogfiFCxCs+t2z1VjbpQsKNs1GHZ8VQetqbk1mr0V1yAfMe6y8CHDA==\",\n      \"type\": \"package\",\n      \"path\": \"system.private.uri/4.0.0\",\n      \"files\": [\n        \"System.Private.Uri.4.0.0.nupkg.sha512\",\n        \"System.Private.Uri.nuspec\",\n        \"lib/DNXCore50/System.Private.Uri.dll\",\n        \"lib/netcore50/System.Private.Uri.dll\",\n        \"ref/dnxcore50/_._\",\n        \"ref/netcore50/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll\"\n      ]\n    },\n    \"System.Reflection/4.0.10\": {\n      \"sha512\": \"WZ+4lEE4gqGx6mrqLhSiW4oi6QLPWwdNjzhhTONmhELOrW8Cw9phlO9tltgvRUuQUqYtBiliFwhO5S5fCJElVw==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection/4.0.10\",\n      \"files\": [\n        \"System.Reflection.4.0.10.nupkg.sha512\",\n        \"System.Reflection.nuspec\",\n        \"lib/DNXCore50/System.Reflection.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Reflection.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Reflection.dll\",\n        \"ref/dotnet/System.Reflection.xml\",\n        \"ref/dotnet/de/System.Reflection.xml\",\n        \"ref/dotnet/es/System.Reflection.xml\",\n        \"ref/dotnet/fr/System.Reflection.xml\",\n        \"ref/dotnet/it/System.Reflection.xml\",\n        \"ref/dotnet/ja/System.Reflection.xml\",\n        \"ref/dotnet/ko/System.Reflection.xml\",\n        \"ref/dotnet/ru/System.Reflection.xml\",\n        \"ref/dotnet/zh-hans/System.Reflection.xml\",\n        \"ref/dotnet/zh-hant/System.Reflection.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Reflection.dll\"\n      ]\n    },\n    \"System.Reflection.Context/4.0.0\": {\n      \"sha512\": \"Gz4sUHHFd/52RjHccSHbOXdujJEWKfL3gIaA+ekxvQaQfJGbI2tPzA0Uv3WTCTDRGHgtoNq5WS9E007Dt4P/VQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection.context/4.0.0\",\n      \"files\": [\n        \"System.Reflection.Context.4.0.0.nupkg.sha512\",\n        \"System.Reflection.Context.nuspec\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Context.dll\",\n        \"lib/win8/_._\",\n        \"ref/dotnet/System.Reflection.Context.dll\",\n        \"ref/dotnet/System.Reflection.Context.xml\",\n        \"ref/dotnet/de/System.Reflection.Context.xml\",\n        \"ref/dotnet/es/System.Reflection.Context.xml\",\n        \"ref/dotnet/fr/System.Reflection.Context.xml\",\n        \"ref/dotnet/it/System.Reflection.Context.xml\",\n        \"ref/dotnet/ja/System.Reflection.Context.xml\",\n        \"ref/dotnet/ko/System.Reflection.Context.xml\",\n        \"ref/dotnet/ru/System.Reflection.Context.xml\",\n        \"ref/dotnet/zh-hans/System.Reflection.Context.xml\",\n        \"ref/dotnet/zh-hant/System.Reflection.Context.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Reflection.Context.dll\",\n        \"ref/netcore50/System.Reflection.Context.xml\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.Reflection.DispatchProxy/4.0.0\": {\n      \"sha512\": \"Kd/4o6DqBfJA4058X8oGEu1KlT8Ej0A+WGeoQgZU2h+3f2vC8NRbHxeOSZvxj9/MPZ1RYmZMGL1ApO9xG/4IVA==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection.dispatchproxy/4.0.0\",\n      \"files\": [\n        \"System.Reflection.DispatchProxy.4.0.0.nupkg.sha512\",\n        \"System.Reflection.DispatchProxy.nuspec\",\n        \"lib/DNXCore50/System.Reflection.DispatchProxy.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Reflection.DispatchProxy.dll\",\n        \"lib/netcore50/System.Reflection.DispatchProxy.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Reflection.DispatchProxy.dll\",\n        \"ref/dotnet/System.Reflection.DispatchProxy.xml\",\n        \"ref/dotnet/de/System.Reflection.DispatchProxy.xml\",\n        \"ref/dotnet/es/System.Reflection.DispatchProxy.xml\",\n        \"ref/dotnet/fr/System.Reflection.DispatchProxy.xml\",\n        \"ref/dotnet/it/System.Reflection.DispatchProxy.xml\",\n        \"ref/dotnet/ja/System.Reflection.DispatchProxy.xml\",\n        \"ref/dotnet/ko/System.Reflection.DispatchProxy.xml\",\n        \"ref/dotnet/ru/System.Reflection.DispatchProxy.xml\",\n        \"ref/dotnet/zh-hans/System.Reflection.DispatchProxy.xml\",\n        \"ref/dotnet/zh-hant/System.Reflection.DispatchProxy.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtime.json\",\n        \"runtimes/win8-aot/lib/netcore50/System.Reflection.DispatchProxy.dll\"\n      ]\n    },\n    \"System.Reflection.Emit/4.0.0\": {\n      \"sha512\": \"CqnQz5LbNbiSxN10cv3Ehnw3j1UZOBCxnE0OO0q/keGQ5ENjyFM6rIG4gm/i0dX6EjdpYkAgKcI/mhZZCaBq4A==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection.emit/4.0.0\",\n      \"files\": [\n        \"System.Reflection.Emit.4.0.0.nupkg.sha512\",\n        \"System.Reflection.Emit.nuspec\",\n        \"lib/DNXCore50/System.Reflection.Emit.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Emit.dll\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/dotnet/System.Reflection.Emit.dll\",\n        \"ref/dotnet/System.Reflection.Emit.xml\",\n        \"ref/dotnet/de/System.Reflection.Emit.xml\",\n        \"ref/dotnet/es/System.Reflection.Emit.xml\",\n        \"ref/dotnet/fr/System.Reflection.Emit.xml\",\n        \"ref/dotnet/it/System.Reflection.Emit.xml\",\n        \"ref/dotnet/ja/System.Reflection.Emit.xml\",\n        \"ref/dotnet/ko/System.Reflection.Emit.xml\",\n        \"ref/dotnet/ru/System.Reflection.Emit.xml\",\n        \"ref/dotnet/zh-hans/System.Reflection.Emit.xml\",\n        \"ref/dotnet/zh-hant/System.Reflection.Emit.xml\",\n        \"ref/net45/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Reflection.Emit.ILGeneration/4.0.0\": {\n      \"sha512\": \"02okuusJ0GZiHZSD2IOLIN41GIn6qOr7i5+86C98BPuhlwWqVABwebiGNvhDiXP1f9a6CxEigC7foQD42klcDg==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection.emit.ilgeneration/4.0.0\",\n      \"files\": [\n        \"System.Reflection.Emit.ILGeneration.4.0.0.nupkg.sha512\",\n        \"System.Reflection.Emit.ILGeneration.nuspec\",\n        \"lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\",\n        \"lib/wp80/_._\",\n        \"ref/dotnet/System.Reflection.Emit.ILGeneration.dll\",\n        \"ref/dotnet/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/dotnet/de/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/dotnet/es/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/dotnet/fr/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/dotnet/it/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/dotnet/ja/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/dotnet/ko/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/dotnet/ru/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/dotnet/zh-hans/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/dotnet/zh-hant/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/net45/_._\",\n        \"ref/wp80/_._\"\n      ]\n    },\n    \"System.Reflection.Emit.Lightweight/4.0.0\": {\n      \"sha512\": \"DJZhHiOdkN08xJgsJfDjkuOreLLmMcU8qkEEqEHqyhkPUZMMQs0lE8R+6+68BAFWgcdzxtNu0YmIOtEug8j00w==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection.emit.lightweight/4.0.0\",\n      \"files\": [\n        \"System.Reflection.Emit.Lightweight.4.0.0.nupkg.sha512\",\n        \"System.Reflection.Emit.Lightweight.nuspec\",\n        \"lib/DNXCore50/System.Reflection.Emit.Lightweight.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\",\n        \"lib/wp80/_._\",\n        \"ref/dotnet/System.Reflection.Emit.Lightweight.dll\",\n        \"ref/dotnet/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/dotnet/de/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/dotnet/es/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/dotnet/fr/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/dotnet/it/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/dotnet/ja/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/dotnet/ko/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/dotnet/ru/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/dotnet/zh-hans/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/dotnet/zh-hant/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/net45/_._\",\n        \"ref/wp80/_._\"\n      ]\n    },\n    \"System.Reflection.Extensions/4.0.0\": {\n      \"sha512\": \"dbYaZWCyFAu1TGYUqR2n+Q+1casSHPR2vVW0WVNkXpZbrd2BXcZ7cpvpu9C98CTHtNmyfMWCLpCclDqly23t6A==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection.extensions/4.0.0\",\n      \"files\": [\n        \"System.Reflection.Extensions.4.0.0.nupkg.sha512\",\n        \"System.Reflection.Extensions.nuspec\",\n        \"lib/DNXCore50/System.Reflection.Extensions.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Extensions.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Reflection.Extensions.dll\",\n        \"ref/dotnet/System.Reflection.Extensions.xml\",\n        \"ref/dotnet/de/System.Reflection.Extensions.xml\",\n        \"ref/dotnet/es/System.Reflection.Extensions.xml\",\n        \"ref/dotnet/fr/System.Reflection.Extensions.xml\",\n        \"ref/dotnet/it/System.Reflection.Extensions.xml\",\n        \"ref/dotnet/ja/System.Reflection.Extensions.xml\",\n        \"ref/dotnet/ko/System.Reflection.Extensions.xml\",\n        \"ref/dotnet/ru/System.Reflection.Extensions.xml\",\n        \"ref/dotnet/zh-hans/System.Reflection.Extensions.xml\",\n        \"ref/dotnet/zh-hant/System.Reflection.Extensions.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Reflection.Extensions.dll\",\n        \"ref/netcore50/System.Reflection.Extensions.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll\"\n      ]\n    },\n    \"System.Reflection.Metadata/1.0.22\": {\n      \"sha512\": \"ltoL/teiEdy5W9fyYdtFr2xJ/4nHyksXLK9dkPWx3ubnj7BVfsSWxvWTg9EaJUXjhWvS/AeTtugZA1/IDQyaPQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection.metadata/1.0.22\",\n      \"files\": [\n        \"System.Reflection.Metadata.1.0.22.nupkg.sha512\",\n        \"System.Reflection.Metadata.nuspec\",\n        \"lib/dotnet/System.Reflection.Metadata.dll\",\n        \"lib/dotnet/System.Reflection.Metadata.xml\",\n        \"lib/portable-net45+win8/System.Reflection.Metadata.dll\",\n        \"lib/portable-net45+win8/System.Reflection.Metadata.xml\"\n      ]\n    },\n    \"System.Reflection.Primitives/4.0.0\": {\n      \"sha512\": \"n9S0XpKv2ruc17FSnaiX6nV47VfHTZ1wLjKZlAirUZCvDQCH71mVp+Ohabn0xXLh5pK2PKp45HCxkqu5Fxn/lA==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection.primitives/4.0.0\",\n      \"files\": [\n        \"System.Reflection.Primitives.4.0.0.nupkg.sha512\",\n        \"System.Reflection.Primitives.nuspec\",\n        \"lib/DNXCore50/System.Reflection.Primitives.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Primitives.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Reflection.Primitives.dll\",\n        \"ref/dotnet/System.Reflection.Primitives.xml\",\n        \"ref/dotnet/de/System.Reflection.Primitives.xml\",\n        \"ref/dotnet/es/System.Reflection.Primitives.xml\",\n        \"ref/dotnet/fr/System.Reflection.Primitives.xml\",\n        \"ref/dotnet/it/System.Reflection.Primitives.xml\",\n        \"ref/dotnet/ja/System.Reflection.Primitives.xml\",\n        \"ref/dotnet/ko/System.Reflection.Primitives.xml\",\n        \"ref/dotnet/ru/System.Reflection.Primitives.xml\",\n        \"ref/dotnet/zh-hans/System.Reflection.Primitives.xml\",\n        \"ref/dotnet/zh-hant/System.Reflection.Primitives.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Reflection.Primitives.dll\",\n        \"ref/netcore50/System.Reflection.Primitives.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll\"\n      ]\n    },\n    \"System.Reflection.TypeExtensions/4.0.0\": {\n      \"sha512\": \"YRM/msNAM86hdxPyXcuZSzmTO0RQFh7YMEPBLTY8cqXvFPYIx2x99bOyPkuU81wRYQem1c1HTkImQ2DjbOBfew==\",\n      \"type\": \"package\",\n      \"path\": \"system.reflection.typeextensions/4.0.0\",\n      \"files\": [\n        \"System.Reflection.TypeExtensions.4.0.0.nupkg.sha512\",\n        \"System.Reflection.TypeExtensions.nuspec\",\n        \"lib/DNXCore50/System.Reflection.TypeExtensions.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Reflection.TypeExtensions.dll\",\n        \"lib/netcore50/System.Reflection.TypeExtensions.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Reflection.TypeExtensions.dll\",\n        \"ref/dotnet/System.Reflection.TypeExtensions.xml\",\n        \"ref/dotnet/de/System.Reflection.TypeExtensions.xml\",\n        \"ref/dotnet/es/System.Reflection.TypeExtensions.xml\",\n        \"ref/dotnet/fr/System.Reflection.TypeExtensions.xml\",\n        \"ref/dotnet/it/System.Reflection.TypeExtensions.xml\",\n        \"ref/dotnet/ja/System.Reflection.TypeExtensions.xml\",\n        \"ref/dotnet/ko/System.Reflection.TypeExtensions.xml\",\n        \"ref/dotnet/ru/System.Reflection.TypeExtensions.xml\",\n        \"ref/dotnet/zh-hans/System.Reflection.TypeExtensions.xml\",\n        \"ref/dotnet/zh-hant/System.Reflection.TypeExtensions.xml\",\n        \"ref/net46/System.Reflection.TypeExtensions.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Reflection.TypeExtensions.dll\"\n      ]\n    },\n    \"System.Resources.ResourceManager/4.0.0\": {\n      \"sha512\": \"qmqeZ4BJgjfU+G2JbrZt4Dk1LsMxO4t+f/9HarNY6w8pBgweO6jT+cknUH7c3qIrGvyUqraBhU45Eo6UtA0fAw==\",\n      \"type\": \"package\",\n      \"path\": \"system.resources.resourcemanager/4.0.0\",\n      \"files\": [\n        \"System.Resources.ResourceManager.4.0.0.nupkg.sha512\",\n        \"System.Resources.ResourceManager.nuspec\",\n        \"lib/DNXCore50/System.Resources.ResourceManager.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Resources.ResourceManager.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Resources.ResourceManager.dll\",\n        \"ref/dotnet/System.Resources.ResourceManager.xml\",\n        \"ref/dotnet/de/System.Resources.ResourceManager.xml\",\n        \"ref/dotnet/es/System.Resources.ResourceManager.xml\",\n        \"ref/dotnet/fr/System.Resources.ResourceManager.xml\",\n        \"ref/dotnet/it/System.Resources.ResourceManager.xml\",\n        \"ref/dotnet/ja/System.Resources.ResourceManager.xml\",\n        \"ref/dotnet/ko/System.Resources.ResourceManager.xml\",\n        \"ref/dotnet/ru/System.Resources.ResourceManager.xml\",\n        \"ref/dotnet/zh-hans/System.Resources.ResourceManager.xml\",\n        \"ref/dotnet/zh-hant/System.Resources.ResourceManager.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Resources.ResourceManager.dll\",\n        \"ref/netcore50/System.Resources.ResourceManager.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll\"\n      ]\n    },\n    \"System.Runtime/4.0.20\": {\n      \"sha512\": \"X7N/9Bz7jVPorqdVFO86ns1sX6MlQM+WTxELtx+Z4VG45x9+LKmWH0GRqjgKprUnVuwmfB9EJ9DQng14Z7/zwg==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime/4.0.20\",\n      \"files\": [\n        \"System.Runtime.4.0.20.nupkg.sha512\",\n        \"System.Runtime.nuspec\",\n        \"lib/DNXCore50/System.Runtime.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Runtime.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Runtime.dll\",\n        \"ref/dotnet/System.Runtime.xml\",\n        \"ref/dotnet/de/System.Runtime.xml\",\n        \"ref/dotnet/es/System.Runtime.xml\",\n        \"ref/dotnet/fr/System.Runtime.xml\",\n        \"ref/dotnet/it/System.Runtime.xml\",\n        \"ref/dotnet/ja/System.Runtime.xml\",\n        \"ref/dotnet/ko/System.Runtime.xml\",\n        \"ref/dotnet/ru/System.Runtime.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.dll\"\n      ]\n    },\n    \"System.Runtime.Extensions/4.0.10\": {\n      \"sha512\": \"5dsEwf3Iml7d5OZeT20iyOjT+r+okWpN7xI2v+R4cgd3WSj4DeRPTvPFjDpacbVW4skCAZ8B9hxXJYgkCFKJ1A==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.extensions/4.0.10\",\n      \"files\": [\n        \"System.Runtime.Extensions.4.0.10.nupkg.sha512\",\n        \"System.Runtime.Extensions.nuspec\",\n        \"lib/DNXCore50/System.Runtime.Extensions.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Runtime.Extensions.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Runtime.Extensions.dll\",\n        \"ref/dotnet/System.Runtime.Extensions.xml\",\n        \"ref/dotnet/de/System.Runtime.Extensions.xml\",\n        \"ref/dotnet/es/System.Runtime.Extensions.xml\",\n        \"ref/dotnet/fr/System.Runtime.Extensions.xml\",\n        \"ref/dotnet/it/System.Runtime.Extensions.xml\",\n        \"ref/dotnet/ja/System.Runtime.Extensions.xml\",\n        \"ref/dotnet/ko/System.Runtime.Extensions.xml\",\n        \"ref/dotnet/ru/System.Runtime.Extensions.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.Extensions.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.Extensions.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll\"\n      ]\n    },\n    \"System.Runtime.Handles/4.0.0\": {\n      \"sha512\": \"638VhpRq63tVcQ6HDb3um3R/J2BtR1Sa96toHo6PcJGPXEPEsleCuqhBgX2gFCz0y0qkutANwW6VPPY5wQu1XQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.handles/4.0.0\",\n      \"files\": [\n        \"System.Runtime.Handles.4.0.0.nupkg.sha512\",\n        \"System.Runtime.Handles.nuspec\",\n        \"lib/DNXCore50/System.Runtime.Handles.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Runtime.Handles.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Runtime.Handles.dll\",\n        \"ref/dotnet/System.Runtime.Handles.xml\",\n        \"ref/dotnet/de/System.Runtime.Handles.xml\",\n        \"ref/dotnet/es/System.Runtime.Handles.xml\",\n        \"ref/dotnet/fr/System.Runtime.Handles.xml\",\n        \"ref/dotnet/it/System.Runtime.Handles.xml\",\n        \"ref/dotnet/ja/System.Runtime.Handles.xml\",\n        \"ref/dotnet/ko/System.Runtime.Handles.xml\",\n        \"ref/dotnet/ru/System.Runtime.Handles.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.Handles.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.Handles.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll\"\n      ]\n    },\n    \"System.Runtime.InteropServices/4.0.20\": {\n      \"sha512\": \"ZgDyBYfEnjWoz/viS6VOswA6XOkDSH2DzgbpczbW50RywhnCgTl+w3JEvtAiOGyIh8cyx1NJq80jsNBSUr8Pig==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.interopservices/4.0.20\",\n      \"files\": [\n        \"System.Runtime.InteropServices.4.0.20.nupkg.sha512\",\n        \"System.Runtime.InteropServices.nuspec\",\n        \"lib/DNXCore50/System.Runtime.InteropServices.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Runtime.InteropServices.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Runtime.InteropServices.dll\",\n        \"ref/dotnet/System.Runtime.InteropServices.xml\",\n        \"ref/dotnet/de/System.Runtime.InteropServices.xml\",\n        \"ref/dotnet/es/System.Runtime.InteropServices.xml\",\n        \"ref/dotnet/fr/System.Runtime.InteropServices.xml\",\n        \"ref/dotnet/it/System.Runtime.InteropServices.xml\",\n        \"ref/dotnet/ja/System.Runtime.InteropServices.xml\",\n        \"ref/dotnet/ko/System.Runtime.InteropServices.xml\",\n        \"ref/dotnet/ru/System.Runtime.InteropServices.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll\"\n      ]\n    },\n    \"System.Runtime.InteropServices.WindowsRuntime/4.0.0\": {\n      \"sha512\": \"K5MGSvw/sGPKQYdOVqSpsVbHBE8HccHIDEhUNjM1lui65KGF/slNZfijGU87ggQiVXTI802ebKiOYBkwiLotow==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.interopservices.windowsruntime/4.0.0\",\n      \"files\": [\n        \"System.Runtime.InteropServices.WindowsRuntime.4.0.0.nupkg.sha512\",\n        \"System.Runtime.InteropServices.WindowsRuntime.nuspec\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"ref/dotnet/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/dotnet/de/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/dotnet/es/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/dotnet/fr/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/dotnet/it/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/dotnet/ja/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/dotnet/ko/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/dotnet/ru/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\"\n      ]\n    },\n    \"System.Runtime.Numerics/4.0.0\": {\n      \"sha512\": \"aAYGEOE01nabQLufQ4YO8WuSyZzOqGcksi8m1BRW8ppkmssR7en8TqiXcBkB2gTkCnKG/Ai2NQY8CgdmgZw/fw==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.numerics/4.0.0\",\n      \"files\": [\n        \"System.Runtime.Numerics.4.0.0.nupkg.sha512\",\n        \"System.Runtime.Numerics.nuspec\",\n        \"lib/dotnet/System.Runtime.Numerics.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.Numerics.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Runtime.Numerics.dll\",\n        \"ref/dotnet/System.Runtime.Numerics.xml\",\n        \"ref/dotnet/de/System.Runtime.Numerics.xml\",\n        \"ref/dotnet/es/System.Runtime.Numerics.xml\",\n        \"ref/dotnet/fr/System.Runtime.Numerics.xml\",\n        \"ref/dotnet/it/System.Runtime.Numerics.xml\",\n        \"ref/dotnet/ja/System.Runtime.Numerics.xml\",\n        \"ref/dotnet/ko/System.Runtime.Numerics.xml\",\n        \"ref/dotnet/ru/System.Runtime.Numerics.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.Numerics.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.Numerics.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Runtime.Numerics.dll\",\n        \"ref/netcore50/System.Runtime.Numerics.xml\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"System.Runtime.Serialization.Json/4.0.0\": {\n      \"sha512\": \"emhWMQP3sdtkAhD0TOeP3FfjS57sfQMQ2sqA6f2Yj5Gd9jkHV4KsQ2TsoJjghca6d8fur7+REQ6ILBXVdGf/0g==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.serialization.json/4.0.0\",\n      \"files\": [\n        \"System.Runtime.Serialization.Json.4.0.0.nupkg.sha512\",\n        \"System.Runtime.Serialization.Json.nuspec\",\n        \"lib/DNXCore50/System.Runtime.Serialization.Json.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.Serialization.Json.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Runtime.Serialization.Json.dll\",\n        \"ref/dotnet/System.Runtime.Serialization.Json.xml\",\n        \"ref/dotnet/de/System.Runtime.Serialization.Json.xml\",\n        \"ref/dotnet/es/System.Runtime.Serialization.Json.xml\",\n        \"ref/dotnet/fr/System.Runtime.Serialization.Json.xml\",\n        \"ref/dotnet/it/System.Runtime.Serialization.Json.xml\",\n        \"ref/dotnet/ja/System.Runtime.Serialization.Json.xml\",\n        \"ref/dotnet/ko/System.Runtime.Serialization.Json.xml\",\n        \"ref/dotnet/ru/System.Runtime.Serialization.Json.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.Serialization.Json.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.Serialization.Json.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Runtime.Serialization.Json.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Json.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Json.dll\"\n      ]\n    },\n    \"System.Runtime.Serialization.Primitives/4.0.10\": {\n      \"sha512\": \"NPc8DZIomf5tGjYtz/KTHI01IPcVlypfhCux32AbLPDjTotdvL8TpKRwMyQJ6Kh08yprRVH7uBD1PdJiuoFzag==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.serialization.primitives/4.0.10\",\n      \"files\": [\n        \"System.Runtime.Serialization.Primitives.4.0.10.nupkg.sha512\",\n        \"System.Runtime.Serialization.Primitives.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Runtime.Serialization.Primitives.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Runtime.Serialization.Primitives.dll\",\n        \"ref/dotnet/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/dotnet/de/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/dotnet/es/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/dotnet/fr/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/dotnet/it/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/dotnet/ja/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/dotnet/ko/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/dotnet/ru/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Runtime.Serialization.Xml/4.0.10\": {\n      \"sha512\": \"xsy7XbH8RTpKoDPNcibSGCOpujsmwUmOWAby3PssqkZFpLBXUbDO2s6JKITRjxejET2g0PK8t+mdIvu3xmUuKA==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.serialization.xml/4.0.10\",\n      \"files\": [\n        \"System.Runtime.Serialization.Xml.4.0.10.nupkg.sha512\",\n        \"System.Runtime.Serialization.Xml.nuspec\",\n        \"lib/DNXCore50/System.Runtime.Serialization.Xml.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Runtime.Serialization.Xml.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Runtime.Serialization.Xml.dll\",\n        \"ref/dotnet/System.Runtime.Serialization.Xml.xml\",\n        \"ref/dotnet/de/System.Runtime.Serialization.Xml.xml\",\n        \"ref/dotnet/es/System.Runtime.Serialization.Xml.xml\",\n        \"ref/dotnet/fr/System.Runtime.Serialization.Xml.xml\",\n        \"ref/dotnet/it/System.Runtime.Serialization.Xml.xml\",\n        \"ref/dotnet/ja/System.Runtime.Serialization.Xml.xml\",\n        \"ref/dotnet/ko/System.Runtime.Serialization.Xml.xml\",\n        \"ref/dotnet/ru/System.Runtime.Serialization.Xml.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.Serialization.Xml.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.Serialization.Xml.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.Serialization.Xml.dll\"\n      ]\n    },\n    \"System.Runtime.WindowsRuntime/4.0.10\": {\n      \"sha512\": \"9w6ypdnEw8RrLRlxTbLAYrap4eL1xIQeNoOaumQVOQ8TTD/5g9FGrBtY3KLiGxAPieN9AwAAEIDkugU85Cwuvg==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.windowsruntime/4.0.10\",\n      \"files\": [\n        \"System.Runtime.WindowsRuntime.4.0.10.nupkg.sha512\",\n        \"System.Runtime.WindowsRuntime.nuspec\",\n        \"lib/netcore50/System.Runtime.WindowsRuntime.dll\",\n        \"lib/win81/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Runtime.WindowsRuntime.dll\",\n        \"ref/dotnet/System.Runtime.WindowsRuntime.xml\",\n        \"ref/dotnet/de/System.Runtime.WindowsRuntime.xml\",\n        \"ref/dotnet/es/System.Runtime.WindowsRuntime.xml\",\n        \"ref/dotnet/fr/System.Runtime.WindowsRuntime.xml\",\n        \"ref/dotnet/it/System.Runtime.WindowsRuntime.xml\",\n        \"ref/dotnet/ja/System.Runtime.WindowsRuntime.xml\",\n        \"ref/dotnet/ko/System.Runtime.WindowsRuntime.xml\",\n        \"ref/dotnet/ru/System.Runtime.WindowsRuntime.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.WindowsRuntime.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.dll\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.xml\",\n        \"ref/win81/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\"\n      ]\n    },\n    \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.0\": {\n      \"sha512\": \"2GY3fkXBMQOyyO9ovaH46CN6MD2ck/Gvk4VNAgVDvtmfO3HXYFNd+bB05WhVcJrHKbfKZNwfwZKpYZ+OsVFsLw==\",\n      \"type\": \"package\",\n      \"path\": \"system.runtime.windowsruntime.ui.xaml/4.0.0\",\n      \"files\": [\n        \"System.Runtime.WindowsRuntime.UI.Xaml.4.0.0.nupkg.sha512\",\n        \"System.Runtime.WindowsRuntime.UI.Xaml.nuspec\",\n        \"lib/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Runtime.WindowsRuntime.UI.Xaml.dll\",\n        \"ref/dotnet/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/dotnet/de/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/dotnet/es/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/dotnet/fr/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/dotnet/it/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/dotnet/ja/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/dotnet/ko/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/dotnet/ru/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/dotnet/zh-hans/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/dotnet/zh-hant/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"System.Security.Claims/4.0.0\": {\n      \"sha512\": \"94NFR/7JN3YdyTH7hl2iSvYmdA8aqShriTHectcK+EbizT71YczMaG6LuqJBQP/HWo66AQyikYYM9aw+4EzGXg==\",\n      \"type\": \"package\",\n      \"path\": \"system.security.claims/4.0.0\",\n      \"files\": [\n        \"System.Security.Claims.4.0.0.nupkg.sha512\",\n        \"System.Security.Claims.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Security.Claims.dll\",\n        \"lib/net46/System.Security.Claims.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Security.Claims.dll\",\n        \"ref/dotnet/System.Security.Claims.xml\",\n        \"ref/dotnet/de/System.Security.Claims.xml\",\n        \"ref/dotnet/es/System.Security.Claims.xml\",\n        \"ref/dotnet/fr/System.Security.Claims.xml\",\n        \"ref/dotnet/it/System.Security.Claims.xml\",\n        \"ref/dotnet/ja/System.Security.Claims.xml\",\n        \"ref/dotnet/ko/System.Security.Claims.xml\",\n        \"ref/dotnet/ru/System.Security.Claims.xml\",\n        \"ref/dotnet/zh-hans/System.Security.Claims.xml\",\n        \"ref/dotnet/zh-hant/System.Security.Claims.xml\",\n        \"ref/net46/System.Security.Claims.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Security.Principal/4.0.0\": {\n      \"sha512\": \"FOhq3jUOONi6fp5j3nPYJMrKtSJlqAURpjiO3FaDIV4DJNEYymWW5uh1pfxySEB8dtAW+I66IypzNge/w9OzZQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.security.principal/4.0.0\",\n      \"files\": [\n        \"System.Security.Principal.4.0.0.nupkg.sha512\",\n        \"System.Security.Principal.nuspec\",\n        \"lib/dotnet/System.Security.Principal.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Security.Principal.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Security.Principal.dll\",\n        \"ref/dotnet/System.Security.Principal.xml\",\n        \"ref/dotnet/de/System.Security.Principal.xml\",\n        \"ref/dotnet/es/System.Security.Principal.xml\",\n        \"ref/dotnet/fr/System.Security.Principal.xml\",\n        \"ref/dotnet/it/System.Security.Principal.xml\",\n        \"ref/dotnet/ja/System.Security.Principal.xml\",\n        \"ref/dotnet/ko/System.Security.Principal.xml\",\n        \"ref/dotnet/ru/System.Security.Principal.xml\",\n        \"ref/dotnet/zh-hans/System.Security.Principal.xml\",\n        \"ref/dotnet/zh-hant/System.Security.Principal.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Security.Principal.dll\",\n        \"ref/netcore50/System.Security.Principal.xml\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"System.ServiceModel.Duplex/4.0.0\": {\n      \"sha512\": \"JFeDn+IsiwAVJkNNnM7MLefJOnzYhovaHnjk3lzEnUWkYZJeAKrcgLdK6GE2GNjb5mEV8Pad/E0JcA8eCr3eWQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.servicemodel.duplex/4.0.0\",\n      \"files\": [\n        \"System.ServiceModel.Duplex.4.0.0.nupkg.sha512\",\n        \"System.ServiceModel.Duplex.nuspec\",\n        \"lib/DNXCore50/System.ServiceModel.Duplex.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ServiceModel.Duplex.dll\",\n        \"lib/win8/_._\",\n        \"ref/dotnet/System.ServiceModel.Duplex.dll\",\n        \"ref/dotnet/System.ServiceModel.Duplex.xml\",\n        \"ref/dotnet/de/System.ServiceModel.Duplex.xml\",\n        \"ref/dotnet/es/System.ServiceModel.Duplex.xml\",\n        \"ref/dotnet/fr/System.ServiceModel.Duplex.xml\",\n        \"ref/dotnet/it/System.ServiceModel.Duplex.xml\",\n        \"ref/dotnet/ja/System.ServiceModel.Duplex.xml\",\n        \"ref/dotnet/ko/System.ServiceModel.Duplex.xml\",\n        \"ref/dotnet/ru/System.ServiceModel.Duplex.xml\",\n        \"ref/dotnet/zh-hans/System.ServiceModel.Duplex.xml\",\n        \"ref/dotnet/zh-hant/System.ServiceModel.Duplex.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ServiceModel.Duplex.dll\",\n        \"ref/netcore50/System.ServiceModel.Duplex.xml\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.ServiceModel.Http/4.0.10\": {\n      \"sha512\": \"Vyl7lmvMlXJamtnDugoXuAgAQGSqtA7omK3zDBYByhbYeBC2hRBchgyXox7e5vEO+29TeB1IpoLWQGb7tO9h6A==\",\n      \"type\": \"package\",\n      \"path\": \"system.servicemodel.http/4.0.10\",\n      \"files\": [\n        \"System.ServiceModel.Http.4.0.10.nupkg.sha512\",\n        \"System.ServiceModel.Http.nuspec\",\n        \"lib/DNXCore50/System.ServiceModel.Http.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.ServiceModel.Http.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.ServiceModel.Http.dll\",\n        \"ref/dotnet/System.ServiceModel.Http.xml\",\n        \"ref/dotnet/de/System.ServiceModel.Http.xml\",\n        \"ref/dotnet/es/System.ServiceModel.Http.xml\",\n        \"ref/dotnet/fr/System.ServiceModel.Http.xml\",\n        \"ref/dotnet/it/System.ServiceModel.Http.xml\",\n        \"ref/dotnet/ja/System.ServiceModel.Http.xml\",\n        \"ref/dotnet/ko/System.ServiceModel.Http.xml\",\n        \"ref/dotnet/ru/System.ServiceModel.Http.xml\",\n        \"ref/dotnet/zh-hans/System.ServiceModel.Http.xml\",\n        \"ref/dotnet/zh-hant/System.ServiceModel.Http.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.ServiceModel.NetTcp/4.0.0\": {\n      \"sha512\": \"lV2Cdcso9jOS0KBtgHZHzTLe/Lx/ERdPcvF4dlepUie6/+BOMYTOgg2C7OdpIjp3fwUNXq8nhU+IilmEyjuf/A==\",\n      \"type\": \"package\",\n      \"path\": \"system.servicemodel.nettcp/4.0.0\",\n      \"files\": [\n        \"System.ServiceModel.NetTcp.4.0.0.nupkg.sha512\",\n        \"System.ServiceModel.NetTcp.nuspec\",\n        \"lib/DNXCore50/System.ServiceModel.NetTcp.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ServiceModel.NetTcp.dll\",\n        \"lib/win8/_._\",\n        \"ref/dotnet/System.ServiceModel.NetTcp.dll\",\n        \"ref/dotnet/System.ServiceModel.NetTcp.xml\",\n        \"ref/dotnet/de/System.ServiceModel.NetTcp.xml\",\n        \"ref/dotnet/es/System.ServiceModel.NetTcp.xml\",\n        \"ref/dotnet/fr/System.ServiceModel.NetTcp.xml\",\n        \"ref/dotnet/it/System.ServiceModel.NetTcp.xml\",\n        \"ref/dotnet/ja/System.ServiceModel.NetTcp.xml\",\n        \"ref/dotnet/ko/System.ServiceModel.NetTcp.xml\",\n        \"ref/dotnet/ru/System.ServiceModel.NetTcp.xml\",\n        \"ref/dotnet/zh-hans/System.ServiceModel.NetTcp.xml\",\n        \"ref/dotnet/zh-hant/System.ServiceModel.NetTcp.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ServiceModel.NetTcp.dll\",\n        \"ref/netcore50/System.ServiceModel.NetTcp.xml\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.ServiceModel.Primitives/4.0.0\": {\n      \"sha512\": \"uF5VYQWR07LgiZkzUr8qjwvqOaIAfwU566MneD4WuC14d8FLJNsAgCJUYhBGB7COjH7HTqnP9ZFmr6c+L83Stg==\",\n      \"type\": \"package\",\n      \"path\": \"system.servicemodel.primitives/4.0.0\",\n      \"files\": [\n        \"System.ServiceModel.Primitives.4.0.0.nupkg.sha512\",\n        \"System.ServiceModel.Primitives.nuspec\",\n        \"lib/DNXCore50/System.ServiceModel.Primitives.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ServiceModel.Primitives.dll\",\n        \"lib/win8/_._\",\n        \"ref/dotnet/System.ServiceModel.Primitives.dll\",\n        \"ref/dotnet/System.ServiceModel.Primitives.xml\",\n        \"ref/dotnet/de/System.ServiceModel.Primitives.xml\",\n        \"ref/dotnet/es/System.ServiceModel.Primitives.xml\",\n        \"ref/dotnet/fr/System.ServiceModel.Primitives.xml\",\n        \"ref/dotnet/it/System.ServiceModel.Primitives.xml\",\n        \"ref/dotnet/ja/System.ServiceModel.Primitives.xml\",\n        \"ref/dotnet/ko/System.ServiceModel.Primitives.xml\",\n        \"ref/dotnet/ru/System.ServiceModel.Primitives.xml\",\n        \"ref/dotnet/zh-hans/System.ServiceModel.Primitives.xml\",\n        \"ref/dotnet/zh-hant/System.ServiceModel.Primitives.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ServiceModel.Primitives.dll\",\n        \"ref/netcore50/System.ServiceModel.Primitives.xml\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.ServiceModel.Security/4.0.0\": {\n      \"sha512\": \"sPVzsnd8w/TJsW/4sYA9eIGP+RtlpN0AhKLGKf9ywdGGmHPi0kkuX2mx412dM3GN0e4oifuISwvZqby/sI8Feg==\",\n      \"type\": \"package\",\n      \"path\": \"system.servicemodel.security/4.0.0\",\n      \"files\": [\n        \"System.ServiceModel.Security.4.0.0.nupkg.sha512\",\n        \"System.ServiceModel.Security.nuspec\",\n        \"lib/DNXCore50/System.ServiceModel.Security.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ServiceModel.Security.dll\",\n        \"lib/win8/_._\",\n        \"ref/dotnet/System.ServiceModel.Security.dll\",\n        \"ref/dotnet/System.ServiceModel.Security.xml\",\n        \"ref/dotnet/de/System.ServiceModel.Security.xml\",\n        \"ref/dotnet/es/System.ServiceModel.Security.xml\",\n        \"ref/dotnet/fr/System.ServiceModel.Security.xml\",\n        \"ref/dotnet/it/System.ServiceModel.Security.xml\",\n        \"ref/dotnet/ja/System.ServiceModel.Security.xml\",\n        \"ref/dotnet/ko/System.ServiceModel.Security.xml\",\n        \"ref/dotnet/ru/System.ServiceModel.Security.xml\",\n        \"ref/dotnet/zh-hans/System.ServiceModel.Security.xml\",\n        \"ref/dotnet/zh-hant/System.ServiceModel.Security.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ServiceModel.Security.dll\",\n        \"ref/netcore50/System.ServiceModel.Security.xml\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.Text.Encoding/4.0.10\": {\n      \"sha512\": \"fNlSFgy4OuDlJrP9SFFxMlaLazq6ipv15sU5TiEgg9UCVnA/OgoVUfymFp4AOk1jOkW5SVxWbeeIUptcM+m/Vw==\",\n      \"type\": \"package\",\n      \"path\": \"system.text.encoding/4.0.10\",\n      \"files\": [\n        \"System.Text.Encoding.4.0.10.nupkg.sha512\",\n        \"System.Text.Encoding.nuspec\",\n        \"lib/DNXCore50/System.Text.Encoding.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Text.Encoding.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Text.Encoding.dll\",\n        \"ref/dotnet/System.Text.Encoding.xml\",\n        \"ref/dotnet/de/System.Text.Encoding.xml\",\n        \"ref/dotnet/es/System.Text.Encoding.xml\",\n        \"ref/dotnet/fr/System.Text.Encoding.xml\",\n        \"ref/dotnet/it/System.Text.Encoding.xml\",\n        \"ref/dotnet/ja/System.Text.Encoding.xml\",\n        \"ref/dotnet/ko/System.Text.Encoding.xml\",\n        \"ref/dotnet/ru/System.Text.Encoding.xml\",\n        \"ref/dotnet/zh-hans/System.Text.Encoding.xml\",\n        \"ref/dotnet/zh-hant/System.Text.Encoding.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.dll\"\n      ]\n    },\n    \"System.Text.Encoding.CodePages/4.0.0\": {\n      \"sha512\": \"ZHBTr1AXLjY9OuYR7pKx5xfN6QFye1kgd5QAbGrvfCOu7yxRnJs3VUaxERe1fOlnF0mi/xD/Dvb3T3x3HNuPWQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.text.encoding.codepages/4.0.0\",\n      \"files\": [\n        \"System.Text.Encoding.CodePages.4.0.0.nupkg.sha512\",\n        \"System.Text.Encoding.CodePages.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Text.Encoding.CodePages.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Text.Encoding.CodePages.dll\",\n        \"ref/dotnet/System.Text.Encoding.CodePages.xml\",\n        \"ref/dotnet/de/System.Text.Encoding.CodePages.xml\",\n        \"ref/dotnet/es/System.Text.Encoding.CodePages.xml\",\n        \"ref/dotnet/fr/System.Text.Encoding.CodePages.xml\",\n        \"ref/dotnet/it/System.Text.Encoding.CodePages.xml\",\n        \"ref/dotnet/ja/System.Text.Encoding.CodePages.xml\",\n        \"ref/dotnet/ko/System.Text.Encoding.CodePages.xml\",\n        \"ref/dotnet/ru/System.Text.Encoding.CodePages.xml\",\n        \"ref/dotnet/zh-hans/System.Text.Encoding.CodePages.xml\",\n        \"ref/dotnet/zh-hant/System.Text.Encoding.CodePages.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Text.Encoding.Extensions/4.0.10\": {\n      \"sha512\": \"TZvlwXMxKo3bSRIcsWZLCIzIhLbvlz+mGeKYRZv/zUiSoQzGOwkYeBu6hOw2XPQgKqT0F4Rv8zqKdvmp2fWKYg==\",\n      \"type\": \"package\",\n      \"path\": \"system.text.encoding.extensions/4.0.10\",\n      \"files\": [\n        \"System.Text.Encoding.Extensions.4.0.10.nupkg.sha512\",\n        \"System.Text.Encoding.Extensions.nuspec\",\n        \"lib/DNXCore50/System.Text.Encoding.Extensions.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Text.Encoding.Extensions.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Text.Encoding.Extensions.dll\",\n        \"ref/dotnet/System.Text.Encoding.Extensions.xml\",\n        \"ref/dotnet/de/System.Text.Encoding.Extensions.xml\",\n        \"ref/dotnet/es/System.Text.Encoding.Extensions.xml\",\n        \"ref/dotnet/fr/System.Text.Encoding.Extensions.xml\",\n        \"ref/dotnet/it/System.Text.Encoding.Extensions.xml\",\n        \"ref/dotnet/ja/System.Text.Encoding.Extensions.xml\",\n        \"ref/dotnet/ko/System.Text.Encoding.Extensions.xml\",\n        \"ref/dotnet/ru/System.Text.Encoding.Extensions.xml\",\n        \"ref/dotnet/zh-hans/System.Text.Encoding.Extensions.xml\",\n        \"ref/dotnet/zh-hant/System.Text.Encoding.Extensions.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Text.Encoding.Extensions.dll\"\n      ]\n    },\n    \"System.Text.RegularExpressions/4.0.10\": {\n      \"sha512\": \"0vDuHXJePpfMCecWBNOabOKCvzfTbFMNcGgklt3l5+RqHV5SzmF7RUVpuet8V0rJX30ROlL66xdehw2Rdsn2DA==\",\n      \"type\": \"package\",\n      \"path\": \"system.text.regularexpressions/4.0.10\",\n      \"files\": [\n        \"System.Text.RegularExpressions.4.0.10.nupkg.sha512\",\n        \"System.Text.RegularExpressions.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Text.RegularExpressions.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Text.RegularExpressions.dll\",\n        \"ref/dotnet/System.Text.RegularExpressions.xml\",\n        \"ref/dotnet/de/System.Text.RegularExpressions.xml\",\n        \"ref/dotnet/es/System.Text.RegularExpressions.xml\",\n        \"ref/dotnet/fr/System.Text.RegularExpressions.xml\",\n        \"ref/dotnet/it/System.Text.RegularExpressions.xml\",\n        \"ref/dotnet/ja/System.Text.RegularExpressions.xml\",\n        \"ref/dotnet/ko/System.Text.RegularExpressions.xml\",\n        \"ref/dotnet/ru/System.Text.RegularExpressions.xml\",\n        \"ref/dotnet/zh-hans/System.Text.RegularExpressions.xml\",\n        \"ref/dotnet/zh-hant/System.Text.RegularExpressions.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Threading/4.0.10\": {\n      \"sha512\": \"0w6pRxIEE7wuiOJeKabkDgeIKmqf4ER1VNrs6qFwHnooEE78yHwi/bKkg5Jo8/pzGLm0xQJw0nEmPXt1QBAIUA==\",\n      \"type\": \"package\",\n      \"path\": \"system.threading/4.0.10\",\n      \"files\": [\n        \"System.Threading.4.0.10.nupkg.sha512\",\n        \"System.Threading.nuspec\",\n        \"lib/DNXCore50/System.Threading.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Threading.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Threading.dll\",\n        \"ref/dotnet/System.Threading.xml\",\n        \"ref/dotnet/de/System.Threading.xml\",\n        \"ref/dotnet/es/System.Threading.xml\",\n        \"ref/dotnet/fr/System.Threading.xml\",\n        \"ref/dotnet/it/System.Threading.xml\",\n        \"ref/dotnet/ja/System.Threading.xml\",\n        \"ref/dotnet/ko/System.Threading.xml\",\n        \"ref/dotnet/ru/System.Threading.xml\",\n        \"ref/dotnet/zh-hans/System.Threading.xml\",\n        \"ref/dotnet/zh-hant/System.Threading.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Threading.dll\"\n      ]\n    },\n    \"System.Threading.Overlapped/4.0.0\": {\n      \"sha512\": \"X5LuQFhM5FTqaez3eXKJ9CbfSGZ7wj6j4hSVtxct3zmwQXLqG95qoWdvILcgN7xtrDOBIFtpiyDg0vmoI0jE2A==\",\n      \"type\": \"package\",\n      \"path\": \"system.threading.overlapped/4.0.0\",\n      \"files\": [\n        \"System.Threading.Overlapped.4.0.0.nupkg.sha512\",\n        \"System.Threading.Overlapped.nuspec\",\n        \"lib/DNXCore50/System.Threading.Overlapped.dll\",\n        \"lib/net46/System.Threading.Overlapped.dll\",\n        \"lib/netcore50/System.Threading.Overlapped.dll\",\n        \"ref/dotnet/System.Threading.Overlapped.dll\",\n        \"ref/dotnet/System.Threading.Overlapped.xml\",\n        \"ref/dotnet/de/System.Threading.Overlapped.xml\",\n        \"ref/dotnet/es/System.Threading.Overlapped.xml\",\n        \"ref/dotnet/fr/System.Threading.Overlapped.xml\",\n        \"ref/dotnet/it/System.Threading.Overlapped.xml\",\n        \"ref/dotnet/ja/System.Threading.Overlapped.xml\",\n        \"ref/dotnet/ko/System.Threading.Overlapped.xml\",\n        \"ref/dotnet/ru/System.Threading.Overlapped.xml\",\n        \"ref/dotnet/zh-hans/System.Threading.Overlapped.xml\",\n        \"ref/dotnet/zh-hant/System.Threading.Overlapped.xml\",\n        \"ref/net46/System.Threading.Overlapped.dll\"\n      ]\n    },\n    \"System.Threading.Tasks/4.0.10\": {\n      \"sha512\": \"NOwJGDfk79jR0bnzosbXLVD/PdI8KzBeESoa3CofEM5v9R5EBfcI0Jyf18stx+0IYV9okmDIDxVtxq9TbnR9bQ==\",\n      \"type\": \"package\",\n      \"path\": \"system.threading.tasks/4.0.10\",\n      \"files\": [\n        \"System.Threading.Tasks.4.0.10.nupkg.sha512\",\n        \"System.Threading.Tasks.nuspec\",\n        \"lib/DNXCore50/System.Threading.Tasks.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Threading.Tasks.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Threading.Tasks.dll\",\n        \"ref/dotnet/System.Threading.Tasks.xml\",\n        \"ref/dotnet/de/System.Threading.Tasks.xml\",\n        \"ref/dotnet/es/System.Threading.Tasks.xml\",\n        \"ref/dotnet/fr/System.Threading.Tasks.xml\",\n        \"ref/dotnet/it/System.Threading.Tasks.xml\",\n        \"ref/dotnet/ja/System.Threading.Tasks.xml\",\n        \"ref/dotnet/ko/System.Threading.Tasks.xml\",\n        \"ref/dotnet/ru/System.Threading.Tasks.xml\",\n        \"ref/dotnet/zh-hans/System.Threading.Tasks.xml\",\n        \"ref/dotnet/zh-hant/System.Threading.Tasks.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll\"\n      ]\n    },\n    \"System.Threading.Tasks.Dataflow/4.5.25\": {\n      \"sha512\": \"Y5/Dj+tYlDxHBwie7bFKp3+1uSG4vqTJRF7Zs7kaUQ3ahYClffCTxvgjrJyPclC+Le55uE7bMLgjZQVOQr3Jfg==\",\n      \"type\": \"package\",\n      \"path\": \"system.threading.tasks.dataflow/4.5.25\",\n      \"files\": [\n        \"System.Threading.Tasks.Dataflow.4.5.25.nupkg.sha512\",\n        \"System.Threading.Tasks.Dataflow.nuspec\",\n        \"lib/dotnet/System.Threading.Tasks.Dataflow.XML\",\n        \"lib/dotnet/System.Threading.Tasks.Dataflow.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Dataflow.XML\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Dataflow.dll\",\n        \"lib/portable-net45+win8+wpa81/System.Threading.Tasks.Dataflow.XML\",\n        \"lib/portable-net45+win8+wpa81/System.Threading.Tasks.Dataflow.dll\"\n      ]\n    },\n    \"System.Threading.Tasks.Parallel/4.0.0\": {\n      \"sha512\": \"GXDhjPhF3nE4RtDia0W6JR4UMdmhOyt9ibHmsNV6GLRT4HAGqU636Teo4tqvVQOFp2R6b1ffxPXiRaoqtzGxuA==\",\n      \"type\": \"package\",\n      \"path\": \"system.threading.tasks.parallel/4.0.0\",\n      \"files\": [\n        \"System.Threading.Tasks.Parallel.4.0.0.nupkg.sha512\",\n        \"System.Threading.Tasks.Parallel.nuspec\",\n        \"lib/dotnet/System.Threading.Tasks.Parallel.dll\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Threading.Tasks.Parallel.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Threading.Tasks.Parallel.dll\",\n        \"ref/dotnet/System.Threading.Tasks.Parallel.xml\",\n        \"ref/dotnet/de/System.Threading.Tasks.Parallel.xml\",\n        \"ref/dotnet/es/System.Threading.Tasks.Parallel.xml\",\n        \"ref/dotnet/fr/System.Threading.Tasks.Parallel.xml\",\n        \"ref/dotnet/it/System.Threading.Tasks.Parallel.xml\",\n        \"ref/dotnet/ja/System.Threading.Tasks.Parallel.xml\",\n        \"ref/dotnet/ko/System.Threading.Tasks.Parallel.xml\",\n        \"ref/dotnet/ru/System.Threading.Tasks.Parallel.xml\",\n        \"ref/dotnet/zh-hans/System.Threading.Tasks.Parallel.xml\",\n        \"ref/dotnet/zh-hant/System.Threading.Tasks.Parallel.xml\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Threading.Tasks.Parallel.dll\",\n        \"ref/netcore50/System.Threading.Tasks.Parallel.xml\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"System.Threading.Timer/4.0.0\": {\n      \"sha512\": \"BIdJH5/e4FnVl7TkRUiE3pWytp7OYiRUGtwUbyLewS/PhKiLepFetdtlW+FvDYOVn60Q2NMTrhHhJ51q+sVW5g==\",\n      \"type\": \"package\",\n      \"path\": \"system.threading.timer/4.0.0\",\n      \"files\": [\n        \"System.Threading.Timer.4.0.0.nupkg.sha512\",\n        \"System.Threading.Timer.nuspec\",\n        \"lib/DNXCore50/System.Threading.Timer.dll\",\n        \"lib/net451/_._\",\n        \"lib/netcore50/System.Threading.Timer.dll\",\n        \"lib/win81/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/dotnet/System.Threading.Timer.dll\",\n        \"ref/dotnet/System.Threading.Timer.xml\",\n        \"ref/dotnet/de/System.Threading.Timer.xml\",\n        \"ref/dotnet/es/System.Threading.Timer.xml\",\n        \"ref/dotnet/fr/System.Threading.Timer.xml\",\n        \"ref/dotnet/it/System.Threading.Timer.xml\",\n        \"ref/dotnet/ja/System.Threading.Timer.xml\",\n        \"ref/dotnet/ko/System.Threading.Timer.xml\",\n        \"ref/dotnet/ru/System.Threading.Timer.xml\",\n        \"ref/dotnet/zh-hans/System.Threading.Timer.xml\",\n        \"ref/dotnet/zh-hant/System.Threading.Timer.xml\",\n        \"ref/net451/_._\",\n        \"ref/netcore50/System.Threading.Timer.dll\",\n        \"ref/netcore50/System.Threading.Timer.xml\",\n        \"ref/win81/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Threading.Timer.dll\"\n      ]\n    },\n    \"System.Xml.ReaderWriter/4.0.10\": {\n      \"sha512\": \"VdmWWMH7otrYV7D+cviUo7XjX0jzDnD/lTGSZTlZqfIQ5PhXk85j+6P0TK9od3PnOd5ZIM+pOk01G/J+3nh9/w==\",\n      \"type\": \"package\",\n      \"path\": \"system.xml.readerwriter/4.0.10\",\n      \"files\": [\n        \"System.Xml.ReaderWriter.4.0.10.nupkg.sha512\",\n        \"System.Xml.ReaderWriter.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Xml.ReaderWriter.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Xml.ReaderWriter.dll\",\n        \"ref/dotnet/System.Xml.ReaderWriter.xml\",\n        \"ref/dotnet/de/System.Xml.ReaderWriter.xml\",\n        \"ref/dotnet/es/System.Xml.ReaderWriter.xml\",\n        \"ref/dotnet/fr/System.Xml.ReaderWriter.xml\",\n        \"ref/dotnet/it/System.Xml.ReaderWriter.xml\",\n        \"ref/dotnet/ja/System.Xml.ReaderWriter.xml\",\n        \"ref/dotnet/ko/System.Xml.ReaderWriter.xml\",\n        \"ref/dotnet/ru/System.Xml.ReaderWriter.xml\",\n        \"ref/dotnet/zh-hans/System.Xml.ReaderWriter.xml\",\n        \"ref/dotnet/zh-hant/System.Xml.ReaderWriter.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Xml.XDocument/4.0.10\": {\n      \"sha512\": \"+ej0g0INnXDjpS2tDJsLO7/BjyBzC+TeBXLeoGnvRrm4AuBH9PhBjjZ1IuKWOhCkxPkFognUOKhZHS2glIOlng==\",\n      \"type\": \"package\",\n      \"path\": \"system.xml.xdocument/4.0.10\",\n      \"files\": [\n        \"System.Xml.XDocument.4.0.10.nupkg.sha512\",\n        \"System.Xml.XDocument.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Xml.XDocument.dll\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Xml.XDocument.dll\",\n        \"ref/dotnet/System.Xml.XDocument.xml\",\n        \"ref/dotnet/de/System.Xml.XDocument.xml\",\n        \"ref/dotnet/es/System.Xml.XDocument.xml\",\n        \"ref/dotnet/fr/System.Xml.XDocument.xml\",\n        \"ref/dotnet/it/System.Xml.XDocument.xml\",\n        \"ref/dotnet/ja/System.Xml.XDocument.xml\",\n        \"ref/dotnet/ko/System.Xml.XDocument.xml\",\n        \"ref/dotnet/ru/System.Xml.XDocument.xml\",\n        \"ref/dotnet/zh-hans/System.Xml.XDocument.xml\",\n        \"ref/dotnet/zh-hant/System.Xml.XDocument.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Xml.XmlDocument/4.0.0\": {\n      \"sha512\": \"H5qTx2+AXgaKE5wehU1ZYeYPFpp/rfFh69/937NvwCrDqbIkvJRmIFyKKpkoMI6gl9hGfuVizfIudVTMyowCXw==\",\n      \"type\": \"package\",\n      \"path\": \"system.xml.xmldocument/4.0.0\",\n      \"files\": [\n        \"System.Xml.XmlDocument.4.0.0.nupkg.sha512\",\n        \"System.Xml.XmlDocument.nuspec\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/dotnet/System.Xml.XmlDocument.dll\",\n        \"lib/net46/System.Xml.XmlDocument.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Xml.XmlDocument.dll\",\n        \"ref/dotnet/System.Xml.XmlDocument.xml\",\n        \"ref/dotnet/de/System.Xml.XmlDocument.xml\",\n        \"ref/dotnet/es/System.Xml.XmlDocument.xml\",\n        \"ref/dotnet/fr/System.Xml.XmlDocument.xml\",\n        \"ref/dotnet/it/System.Xml.XmlDocument.xml\",\n        \"ref/dotnet/ja/System.Xml.XmlDocument.xml\",\n        \"ref/dotnet/ko/System.Xml.XmlDocument.xml\",\n        \"ref/dotnet/ru/System.Xml.XmlDocument.xml\",\n        \"ref/dotnet/zh-hans/System.Xml.XmlDocument.xml\",\n        \"ref/dotnet/zh-hant/System.Xml.XmlDocument.xml\",\n        \"ref/net46/System.Xml.XmlDocument.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Xml.XmlSerializer/4.0.10\": {\n      \"sha512\": \"OKhE6vruk88z/hl0lmfrMvXteTASgJUagu6PT6S10i9uLbvDR3pTwB6jVgiwa2D2qtTB+eneZbS9jljhPXhTtg==\",\n      \"type\": \"package\",\n      \"path\": \"system.xml.xmlserializer/4.0.10\",\n      \"files\": [\n        \"System.Xml.XmlSerializer.4.0.10.nupkg.sha512\",\n        \"System.Xml.XmlSerializer.nuspec\",\n        \"lib/DNXCore50/System.Xml.XmlSerializer.dll\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netcore50/System.Xml.XmlSerializer.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/dotnet/System.Xml.XmlSerializer.dll\",\n        \"ref/dotnet/System.Xml.XmlSerializer.xml\",\n        \"ref/dotnet/de/System.Xml.XmlSerializer.xml\",\n        \"ref/dotnet/es/System.Xml.XmlSerializer.xml\",\n        \"ref/dotnet/fr/System.Xml.XmlSerializer.xml\",\n        \"ref/dotnet/it/System.Xml.XmlSerializer.xml\",\n        \"ref/dotnet/ja/System.Xml.XmlSerializer.xml\",\n        \"ref/dotnet/ko/System.Xml.XmlSerializer.xml\",\n        \"ref/dotnet/ru/System.Xml.XmlSerializer.xml\",\n        \"ref/dotnet/zh-hans/System.Xml.XmlSerializer.xml\",\n        \"ref/dotnet/zh-hant/System.Xml.XmlSerializer.xml\",\n        \"ref/net46/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"runtime.json\",\n        \"runtimes/win8-aot/lib/netcore50/System.Xml.XmlSerializer.dll\"\n      ]\n    }\n  },\n  \"projectFileDependencyGroups\": {\n    \"\": [\n      \"Microsoft.ApplicationInsights >= 1.0.0\",\n      \"Microsoft.ApplicationInsights.PersistenceChannel >= 1.0.0\",\n      \"Microsoft.ApplicationInsights.WindowsApps >= 1.0.0\",\n      \"Microsoft.NETCore.UniversalWindowsPlatform >= 5.0.0\"\n    ],\n    \"UAP,Version=v10.0\": []\n  },\n  \"tools\": {},\n  \"projectFileToolGroups\": {},\n  \"packageFolders\": {\n    \"C:\\\\Users\\\\neuecc\\\\.nuget\\\\packages\\\\\": {}\n  }\n}"
  },
  {
    "path": "UniRx.Examples.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n    <CscToolPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Tools\\RoslynScripts</CscToolPath>\n    <CscToolExe>unity_csc.bat</CscToolExe>\n  </PropertyGroup>\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>10.0.20506</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <RootNamespace></RootNamespace>\n    <ProjectGuid>{68836B28-4FE0-EEFA-9992-195D65092AD5}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <AssemblyName>UniRx.Examples</AssemblyName>\n    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <BaseDirectory>.</BaseDirectory>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>Temp\\bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;UNITY_2019_1_0;UNITY_2019_1;UNITY_2019;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2019_1_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_SCRIPTING_GC_WBARRIERS;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>Temp\\bin\\Release\\</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup>\n    <NoConfig>true</NoConfig>\n    <NoStdLib>true</NoStdLib>\n    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\n    <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>\n    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <UnityProjectGenerator>Unity/VSTU</UnityProjectGenerator>\n    <UnityProjectType>Game:1</UnityProjectType>\n    <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>\n    <UnityVersion>2019.1.0f2</UnityVersion>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"UnityEngine\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEngine/UnityEngine.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEditor.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample01_ObservableWWW.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample02_ObservableTriggers.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample03_GameObjectAsObservable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample04_ConvertFromUnityCallback.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample05_ConvertFromCoroutine.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample06_ConvertToCoroutine.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample07_OrchestratIEnumerator.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample08_DetectDoubleClick.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample09_EventHandling.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample10_MainThreadDispatcher.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample11_Logger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample12_ReactiveProperty.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Examples\\Sample13_ToDoApp.cs\" />\n    <None Include=\"Assets\\Plugins\\UniRx\\Examples\\UniRx.Examples.asmdef\" />\n    <Reference Include=\"UnityEngine.AIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ARModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AccessibilityModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AnimationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClothModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterInputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterRendererModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CrashReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.DirectorModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.FileSystemHttpModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GameCenterModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GridModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.HotReloadModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.IMGUIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ImageConversionModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.InputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.JSONSerializeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.LocalizationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ParticleSystemModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PerformanceReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Physics2DModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ProfilerModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ScreenCaptureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SharedInternalsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteMaskModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteShapeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StreamingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StyleSheetsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SubstanceModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TLSModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainPhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextCoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextRenderingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TilemapModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIElementsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UNETModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UmbraModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityAnalyticsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityConnectModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityTestProtocolModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestTextureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestWWWModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VFXModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VehiclesModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VideoModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.WindModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.XRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Locator\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"nunit.framework\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.VR\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Graphs\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.WindowsStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.OSXStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Android.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.iOS.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SyntaxTree.VisualStudio.Unity.Bridge\">\n      <HintPath>C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreTools\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreTools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreToolsExtra\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreToolsExtra.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Advertisements\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.StandardEvents\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Tracker\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Purchasing\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll</HintPath>\n    </Reference>\n    <Reference Include=\"mscorlib\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Core\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.CSharp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Win32.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"netstandard\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.AppContext\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Concurrent\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.NonGeneric\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Specialized\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Annotations\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.EventBasedAsync\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.TypeConverter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Console\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data.Common\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Contracts\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Debug\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.FileVersionInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Process\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.StackTrace\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TextWriterTraceListener\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Tools\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TraceSource\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Drawing.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Dynamic.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Calendars\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Compression.ZipFile\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.DriveInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Watcher\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.IsolatedStorage\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.MemoryMappedFiles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Pipes\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.UnmanagedMemoryStream\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Expressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Queryable\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Rtc\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NameResolution\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NetworkInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Ping\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Requests\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Sockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebHeaderCollection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets.Client\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ObjectModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.ILGeneration\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.Lightweight\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Reader\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.ResourceManager\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Writer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.CompilerServices.VisualC\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Handles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.RuntimeInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.WindowsRuntime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Formatters\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Json\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Claims\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Algorithms\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Csp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.X509Certificates\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Principal\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.SecureString\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Duplex\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.NetTcp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.RegularExpressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Overlapped\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Thread\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.ThreadPool\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Timer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ValueTuple\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.ReaderWriter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlSerializer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Boo.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"UniRx.csproj\">\n      <Project>{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}</Project>\n      <Name>UniRx</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <Target Name=\"GenerateTargetFrameworkMonikerAttribute\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "UniRx.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n    <CscToolPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Tools\\RoslynScripts</CscToolPath>\n    <CscToolExe>unity_csc.bat</CscToolExe>\n  </PropertyGroup>\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>10.0.20506</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <RootNamespace></RootNamespace>\n    <ProjectGuid>{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <AssemblyName>UniRx</AssemblyName>\n    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <BaseDirectory>.</BaseDirectory>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>Temp\\bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;UNITY_2019_1_0;UNITY_2019_1;UNITY_2019;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2019_1_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_SCRIPTING_GC_WBARRIERS;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>Temp\\bin\\Release\\</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup>\n    <NoConfig>true</NoConfig>\n    <NoStdLib>true</NoStdLib>\n    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\n    <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>\n    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <UnityProjectGenerator>Unity/VSTU</UnityProjectGenerator>\n    <UnityProjectType>Game:1</UnityProjectType>\n    <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>\n    <UnityVersion>2019.1.0f2</UnityVersion>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"UnityEngine\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEngine/UnityEngine.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEditor.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Asynchronous\\WebRequestExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\BooleanDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\CancellationDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\CompositeDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\DictionaryDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\Disposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\DisposableExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\ICancelable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\MultipleAssignmentDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\RefCountDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\ScheduledDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\SerialDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\SingleAssignmentDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Disposables\\StableCompositeDisposable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\EventPattern.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\AscynLock.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\CancellableTaskCompletionSource.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ExceptionExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ImmutableList.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ListObserver.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\MicroCoroutine.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\PriorityQueue.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\PromiseHelper.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ScheduledItem.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\ThreadSafeQueueWorker.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\InternalUtil\\UnityEqualityComparer.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Notification.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\BooleanNotifier.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\CountNotifier.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\MessageBroker.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Notifiers\\ScheduledNotifier.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Aggregate.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Awaiter.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Binding.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Blocking.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Concatenate.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Concurrency.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Conversions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Creation.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.ErrorHandling.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Events.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.FromAsync.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Joins.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Paging.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observable.Time.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Observer.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Aggregate.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Amb.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\AsObservable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\AsSingleUnitObservable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\AsUnitObservable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Buffer.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Cast.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Catch.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\CombineLatest.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Concat.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\ContinueWith.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Create.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\DefaultIfEmpty.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Defer.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Delay.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\DelaySubscription.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Dematerialize.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Distinct.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\DistinctUntilChanged.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Do.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Empty.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Finally.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\First.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\ForEachAsync.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\FromEvent.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\GroupBy.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\IgnoreElements.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Last.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Materialize.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Merge.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Never.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\ObserveOn.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\OfType.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\OperatorObservableBase.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\OperatorObserverBase.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\PairWise.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Range.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\RefCount.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Repeat.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\RepeatSafe.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Return.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Sample.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Scan.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Select.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\SelectMany.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\SelectWhere.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Single.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Skip.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\SkipUntil.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\SkipWhile.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Start.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\StartWith.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\SubscribeOn.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Switch.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Synchronize.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\SynchronizedObserver.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Take.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\TakeLast.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\TakeUntil.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\TakeWhile.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Throttle.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\ThrottleFirst.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Throw.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\TimeInterval.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Timeout.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Timer.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Timestamp.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\ToArray.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\ToList.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\ToObservable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Wait.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\WhenAll.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Where.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\WhereSelect.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\WithLatestFrom.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\Zip.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Operators\\ZipLatest.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Pair.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\CurrentThreadScheduler.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\ImmediateScheduler.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\IScheduler.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\Scheduler.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Schedulers\\ThreadPoolScheduler.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Subjects\\AsyncSubject.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Subjects\\BehaviorSubject.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Subjects\\ConnectableObservable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Subjects\\ISubject.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Subjects\\ReplaySubject.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Subjects\\Subject.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Subjects\\SubjectExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\System\\IObservable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\System\\IObserver.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\System\\IOptimizedObservable.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\System\\IProgress.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\System\\Tuple.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\System\\Unit.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Tasks\\TaskObservableExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\TimeInterval.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\Timestamped.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\AsyncOperationExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\CancellationToken.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\CoroutineAsyncBridge.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\LogEntry.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\LogEntryExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\Logger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\ObservableDebugExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\ObservableLogger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Diagnostics\\UnityDebugSink.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\FrameInterval.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\InspectableReactiveProperty.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\InspectorDisplayDrawer.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\LifetimeDisposableExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\MainThreadDispatcher.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\MainThreadScheduler.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Observable.Unity.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ObservableWWW.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ObserveExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\BatchFrame.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\DelayFrame.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\DelayFrameSubscription.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\FrameInterval.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\FrameTimeInterval.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\FromCoroutine.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\RepeatUntil.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\SampleFrame.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\SubscribeOnMainThread.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\ThrottleFirstFrame.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\ThrottleFrame.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Operators\\TimeoutFrame.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveCollection.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveCommand.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveDictionary.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ReactiveProperty.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\ScenePlaybackDetector.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Toolkit\\ObjectPool.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableAnimatorTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableBeginDragTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableCancelTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableCanvasGroupChangedTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableCollision2DTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableCollisionTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableDeselectTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableDestroyTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableDragTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableDropTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableEnableTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableEndDragTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableEventTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableFixedUpdateTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableInitializePotentialDragTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableJointTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableLateUpdateTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableMouseTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableMoveTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableParticleTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerClickTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerDownTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerEnterTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerExitTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservablePointerUpTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableRectTransformTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableScrollTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableSelectTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableStateMachineTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableSubmitTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTransformChangedTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTrigger2DTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTriggerBase.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTriggerExtensions.Component.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTriggerExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableTriggerTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableUpdateSelectedTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableUpdateTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\Triggers\\ObservableVisibleTrigger.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\UnityEventExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\UnityGraphicExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\UnityUIComponentExtensions.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityEngineBridge\\YieldInstructionCache.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityWinRTBridge\\Thread.cs\" />\n    <Compile Include=\"Assets\\Plugins\\UniRx\\Scripts\\UnityWinRTBridge\\ThreadPoolScheduler_UnityWinRT.cs\" />\n    <None Include=\"Assets\\Plugins\\UniRx\\Scripts\\UniRx.asmdef\" />\n    <Reference Include=\"UnityEngine.AIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ARModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AccessibilityModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AnimationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClothModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterInputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterRendererModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CrashReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.DirectorModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.FileSystemHttpModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GameCenterModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GridModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.HotReloadModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.IMGUIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ImageConversionModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.InputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.JSONSerializeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.LocalizationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ParticleSystemModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PerformanceReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Physics2DModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ProfilerModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ScreenCaptureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SharedInternalsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteMaskModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteShapeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StreamingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StyleSheetsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SubstanceModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TLSModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainPhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextCoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextRenderingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TilemapModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIElementsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UNETModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UmbraModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityAnalyticsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityConnectModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityTestProtocolModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestTextureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestWWWModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VFXModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VehiclesModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VideoModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.WindModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.XRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Locator\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"nunit.framework\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.VR\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Graphs\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.WindowsStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.OSXStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Android.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.iOS.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SyntaxTree.VisualStudio.Unity.Bridge\">\n      <HintPath>C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreTools\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreTools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreToolsExtra\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreToolsExtra.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Advertisements\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.StandardEvents\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Tracker\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Purchasing\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll</HintPath>\n    </Reference>\n    <Reference Include=\"mscorlib\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Core\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.CSharp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Win32.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"netstandard\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.AppContext\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Concurrent\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.NonGeneric\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Specialized\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Annotations\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.EventBasedAsync\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.TypeConverter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Console\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data.Common\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Contracts\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Debug\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.FileVersionInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Process\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.StackTrace\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TextWriterTraceListener\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Tools\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TraceSource\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Drawing.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Dynamic.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Calendars\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Compression.ZipFile\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.DriveInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Watcher\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.IsolatedStorage\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.MemoryMappedFiles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Pipes\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.UnmanagedMemoryStream\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Expressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Queryable\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Rtc\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NameResolution\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NetworkInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Ping\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Requests\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Sockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebHeaderCollection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets.Client\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ObjectModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.ILGeneration\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.Lightweight\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Reader\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.ResourceManager\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Writer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.CompilerServices.VisualC\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Handles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.RuntimeInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.WindowsRuntime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Formatters\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Json\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Claims\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Algorithms\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Csp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.X509Certificates\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Principal\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.SecureString\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Duplex\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.NetTcp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.RegularExpressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Overlapped\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Thread\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.ThreadPool\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Timer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ValueTuple\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.ReaderWriter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlSerializer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Boo.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <Target Name=\"GenerateTargetFrameworkMonikerAttribute\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "UniRx.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 16\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"UniRx\", \"UniRx.csproj\", \"{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"UnityTests\", \"UnityTests.csproj\", \"{D7163A6D-DC25-1C83-8662-EC29A899644A}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"UniRx.Examples\", \"UniRx.Examples.csproj\", \"{68836B28-4FE0-EEFA-9992-195D65092AD5}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"RuntimeUnitTestToolkit\", \"RuntimeUnitTestToolkit.csproj\", \"{1E3311C2-2F9C-3153-5981-699605B16915}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Assembly-CSharp\", \"Assembly-CSharp.csproj\", \"{C46B99A5-0F0F-2FEE-50C8-DAE79AA3F247}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Assembly-CSharp-Editor\", \"Assembly-CSharp-Editor.csproj\", \"{5664E897-B20D-857B-ABA2-FE9F9A4DABFB}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{D7163A6D-DC25-1C83-8662-EC29A899644A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{D7163A6D-DC25-1C83-8662-EC29A899644A}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{D7163A6D-DC25-1C83-8662-EC29A899644A}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{D7163A6D-DC25-1C83-8662-EC29A899644A}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{68836B28-4FE0-EEFA-9992-195D65092AD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{68836B28-4FE0-EEFA-9992-195D65092AD5}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{68836B28-4FE0-EEFA-9992-195D65092AD5}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{68836B28-4FE0-EEFA-9992-195D65092AD5}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{1E3311C2-2F9C-3153-5981-699605B16915}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{1E3311C2-2F9C-3153-5981-699605B16915}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{1E3311C2-2F9C-3153-5981-699605B16915}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{1E3311C2-2F9C-3153-5981-699605B16915}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{C46B99A5-0F0F-2FEE-50C8-DAE79AA3F247}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{C46B99A5-0F0F-2FEE-50C8-DAE79AA3F247}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{C46B99A5-0F0F-2FEE-50C8-DAE79AA3F247}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{C46B99A5-0F0F-2FEE-50C8-DAE79AA3F247}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{5664E897-B20D-857B-ABA2-FE9F9A4DABFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{5664E897-B20D-857B-ABA2-FE9F9A4DABFB}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{5664E897-B20D-857B-ABA2-FE9F9A4DABFB}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{5664E897-B20D-857B-ABA2-FE9F9A4DABFB}.Release|Any CPU.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "UnityTests.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n    <CscToolPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Tools\\RoslynScripts</CscToolPath>\n    <CscToolExe>unity_csc.bat</CscToolExe>\n  </PropertyGroup>\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>10.0.20506</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <RootNamespace></RootNamespace>\n    <ProjectGuid>{D7163A6D-DC25-1C83-8662-EC29A899644A}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <AssemblyName>UnityTests</AssemblyName>\n    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <BaseDirectory>.</BaseDirectory>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>Temp\\bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;UNITY_2019_1_0;UNITY_2019_1;UNITY_2019;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2019_1_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_SCRIPTING_GC_WBARRIERS;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>Temp\\bin\\Release\\</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <NoWarn>0169;CS0649;IDE0051</NoWarn>\n    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\n  </PropertyGroup>\n  <PropertyGroup>\n    <NoConfig>true</NoConfig>\n    <NoStdLib>true</NoStdLib>\n    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\n    <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>\n    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <UnityProjectGenerator>Unity/VSTU</UnityProjectGenerator>\n    <UnityProjectType>Game:1</UnityProjectType>\n    <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>\n    <UnityVersion>2019.1.0f2</UnityVersion>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"UnityEngine\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEngine/UnityEngine.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor\">\n      <HintPath>C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.0f2\\Editor\\Data\\Managed/UnityEditor.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\ChainingAssertion.Unity.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\AggregateTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\ContinueWithTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\ConversionTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\DisposableTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\DoTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\DurabilityTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\MicroCoroutineTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\Observable.ConcatTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\Observable.ConcurrencyTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\Observable.ErrorHandlingTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\Observable.Events.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\Observable.GeneratorTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\Observable.PagingTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\Observable.TimeTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\ObservableTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\QueueWorkerTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\RangeTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\ReactivePropertyTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\ReactriveDictionaryTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\SchedulerTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\SelectMany.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\SelectWhereOptimizeTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\SubjectTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\TakeTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\ToTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\Rx\\WhenAllTest.cs\" />\n    <Compile Include=\"Assets\\Scripts\\UnityTests\\TestUtil.cs\" />\n    <None Include=\"Assets\\Scripts\\UnityTests\\UnityTests.asmdef\" />\n    <Reference Include=\"UnityEngine.AIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ARModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AccessibilityModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AnimationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.AudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClothModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterInputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ClusterRendererModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.CrashReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.DirectorModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.FileSystemHttpModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GameCenterModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.GridModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.HotReloadModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.IMGUIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ImageConversionModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.InputModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.JSONSerializeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.LocalizationModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ParticleSystemModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PerformanceReportingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.PhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.Physics2DModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ProfilerModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.ScreenCaptureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SharedInternalsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteMaskModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SpriteShapeModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StreamingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.StyleSheetsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.SubstanceModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TLSModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TerrainPhysicsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextCoreModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TextRenderingModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TilemapModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UIElementsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UNETModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UmbraModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityAnalyticsModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityConnectModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityTestProtocolModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAssetBundleModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestAudioModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestTextureModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UnityWebRequestWWWModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VFXModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VehiclesModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.VideoModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.WindModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.XRModule\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Locator\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.UI\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEngine.TestRunner\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>\n    </Reference>\n    <Reference Include=\"nunit.framework\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.VR\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Graphs\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.WindowsStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.OSXStandalone.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Android.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.iOS.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"SyntaxTree.VisualStudio.Unity.Bridge\">\n      <HintPath>C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreTools\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreTools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"AssetStoreToolsExtra\">\n      <HintPath>C:/GitHubRepositories/UniRx/Assets/AssetStoreTools/Editor/AssetStoreToolsExtra.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Advertisements\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Editor\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.StandardEvents\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Unity.Analytics.Tracker\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityEditor.Purchasing\">\n      <HintPath>C:/GitHubRepositories/UniRx/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll</HintPath>\n    </Reference>\n    <Reference Include=\"mscorlib\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Core\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Numerics.Vectors\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.CSharp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Win32.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"netstandard\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.AppContext\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Concurrent\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.NonGeneric\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Collections.Specialized\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Annotations\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.EventBasedAsync\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ComponentModel.TypeConverter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Console\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Data.Common\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Contracts\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Debug\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.FileVersionInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Process\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.StackTrace\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TextWriterTraceListener\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.Tools\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Diagnostics.TraceSource\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Drawing.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Dynamic.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Calendars\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Globalization.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Compression.ZipFile\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.DriveInfo\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.FileSystem.Watcher\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.IsolatedStorage\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.MemoryMappedFiles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.Pipes\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.IO.UnmanagedMemoryStream\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Expressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Linq.Queryable\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Rtc\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NameResolution\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.NetworkInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Ping\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Requests\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Sockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebHeaderCollection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets.Client\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.WebSockets\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ObjectModel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.ILGeneration\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Emit.Lightweight\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Reflection.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Reader\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.ResourceManager\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Resources.Writer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.CompilerServices.VisualC\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Handles\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.RuntimeInformation\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.InteropServices.WindowsRuntime\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Numerics\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Formatters\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Json\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization.Xml\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Claims\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Algorithms\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Csp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Cryptography.X509Certificates\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.Principal\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Security.SecureString\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Duplex\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Http\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.NetTcp\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Primitives\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ServiceModel.Security\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.Encoding.Extensions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Text.RegularExpressions\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Overlapped\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Tasks.Parallel\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Thread\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.ThreadPool\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Threading.Timer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.ValueTuple\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.ReaderWriter\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XmlSerializer\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Xml.XPath.XDocument\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll</HintPath>\n    </Reference>\n    <Reference Include=\"UnityScript.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Boo.Lang\">\n      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll</HintPath>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"UniRx.csproj\">\n      <Project>{DA6F13A8-9704-59D0-8E13-D8BA6037F97A}</Project>\n      <Name>UniRx</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <Target Name=\"GenerateTargetFrameworkMonikerAttribute\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  }
]