[
  {
    "path": ".gitignore",
    "content": "[Ll]ibrary/\r\n[Tt]emp/\r\n[Oo]bj/\r\n[Bb]uild/\r\n[Bb]uilds/\r\n.vscode/\r\nAssets/AssetStoreTools*\r\n\r\n# Visual Studio 2015 cache directory\r\n/.vs/\r\n\r\n# Autogenerated VS/MD/Consulo solution and project files\r\nExportedObj/\r\n.consulo/\r\n*.csproj\r\n*.unityproj\r\n*.sln\r\n*.suo\r\n*.tmp\r\n*.user\r\n*.userprefs\r\n*.pidb\r\n*.booproj\r\n*.svd\r\n*.pdb\r\n\r\n# Unity3D generated meta files\r\n*.pidb.meta\r\n*.pdb.meta\r\n\r\n# Unity3D Generated File On Crash Reports\r\nsysinfo.txt\r\n\r\n# Builds\r\n*.apk\r\n*.unitypackage"
  },
  {
    "path": "Assets/Classify.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: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 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.37311953, g: 0.38074014, b: 0.3587274, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\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: 1\n    m_EnableRealtimeLightmaps: 1\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: 0\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 &42609963\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 42609967}\n  - component: {fileID: 42609966}\n  - component: {fileID: 42609965}\n  - component: {fileID: 42609964}\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 &42609964\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 42609963}\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 &42609965\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 42609963}\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: 1\n  m_ReferencePixelsPerUnit: 100\n  m_ScaleFactor: 1\n  m_ReferenceResolution: {x: 800, y: 1280}\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 &42609966\nCanvas:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 42609963}\n  m_Enabled: 1\n  serializedVersion: 3\n  m_RenderMode: 0\n  m_Camera: {fileID: 1583144317}\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 &42609967\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 42609963}\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: 1375191583}\n  - {fileID: 475302932}\n  m_Father: {fileID: 0}\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 &205469108\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 205469109}\n  - component: {fileID: 205469111}\n  - component: {fileID: 205469110}\n  m_Layer: 5\n  m_Name: SearchingText\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &205469109\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 205469108}\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: 475302932}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 1}\n  m_AnchorMax: {x: 0.5, y: 1}\n  m_AnchoredPosition: {x: -80, y: -180}\n  m_SizeDelta: {x: 600, y: 300}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &205469110\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 205469108}\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: 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_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 4\n    m_MaxSize: 46\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: \n--- !u!222 &205469111\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 205469108}\n--- !u!1 &475302931\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 475302932}\n  - component: {fileID: 475302934}\n  - component: {fileID: 475302933}\n  m_Layer: 5\n  m_Name: SnackBar\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &475302932\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 475302931}\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: 205469109}\n  m_Father: {fileID: 42609967}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: -100}\n  m_SizeDelta: {x: 0, y: 300}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &475302933\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 475302931}\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: 0, g: 0, b: 0, 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: 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 &475302934\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 475302931}\n--- !u!1 &1375191582\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1375191583}\n  - component: {fileID: 1375191586}\n  - component: {fileID: 1375191585}\n  - component: {fileID: 1375191584}\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 &1375191583\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1375191582}\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: 42609967}\n  m_RootOrder: 0\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.5, y: 0.5}\n--- !u!114 &1375191584\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1375191582}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -1254083943, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_AspectMode: 3\n  m_AspectRatio: 1.6\n--- !u!114 &1375191585\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1375191582}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: -98529514, 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_Texture: {fileID: 2800000, guid: db915c4ea74562e4abe32ffe4cff7364, type: 3}\n  m_UVRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n--- !u!222 &1375191586\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1375191582}\n--- !u!1 &1583144314\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1583144318}\n  - component: {fileID: 1583144317}\n  - component: {fileID: 1583144316}\n  - component: {fileID: 1583144315}\n  - component: {fileID: 1583144319}\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 &1583144315\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\n  m_Enabled: 1\n--- !u!124 &1583144316\nBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\n  m_Enabled: 1\n--- !u!20 &1583144317\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\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: 0\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 &1583144318\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 1, z: -10}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!114 &1583144319\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 0bc98c2a8aaebb24c98786f1897d9f3b, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  mode: 1\n  background: {fileID: 1375191585}\n  fitter: {fileID: 1375191584}\n  modelFile: {fileID: 4900000, guid: 6563170825a12804e82a117174111f3b, type: 3}\n  labelsFile: {fileID: 4900000, guid: a59056e24b8072143b54036c646ab35f, type: 3}\n  uiText: {fileID: 205469110}\n"
  },
  {
    "path": "Assets/Classify.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 48a90ec4b8f04ed4b968ac1e6153ac36\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Detect.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: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 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.37311947, g: 0.38074005, b: 0.35872722, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 1\n  m_LightmapEditorSettings:\n    serializedVersion: 12\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_ExtractAmbientOcclusion: 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: 0\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 500\n    m_PVRBounces: 2\n    m_PVREnvironmentSampleCount: 500\n    m_PVREnvironmentReferencePointCount: 2048\n    m_PVRFilteringMode: 2\n    m_PVRDenoiserTypeDirect: 0\n    m_PVRDenoiserTypeIndirect: 0\n    m_PVRDenoiserTypeAO: 0\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVREnvironmentMIS: 0\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_ExportTrainingData: 0\n    m_TrainingDataDestination: TrainingData\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 &42609963\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 42609967}\n  - component: {fileID: 42609966}\n  - component: {fileID: 42609965}\n  - component: {fileID: 42609964}\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 &42609964\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 42609963}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, 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 &42609965\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 42609963}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_UiScaleMode: 1\n  m_ReferencePixelsPerUnit: 100\n  m_ScaleFactor: 1\n  m_ReferenceResolution: {x: 800, y: 1280}\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 &42609966\nCanvas:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 42609963}\n  m_Enabled: 1\n  serializedVersion: 3\n  m_RenderMode: 0\n  m_Camera: {fileID: 1583144317}\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 &42609967\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 42609963}\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: 1375191583}\n  - {fileID: 475302932}\n  m_Father: {fileID: 0}\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 &205469108\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 205469109}\n  - component: {fileID: 205469111}\n  - component: {fileID: 205469110}\n  m_Layer: 5\n  m_Name: SearchingText\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &205469109\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 205469108}\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: 475302932}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0.5, y: 1}\n  m_AnchorMax: {x: 0.5, y: 1}\n  m_AnchoredPosition: {x: -80, y: -180}\n  m_SizeDelta: {x: 600, y: 300}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &205469110\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 205469108}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData:\n    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}\n    m_FontSize: 40\n    m_FontStyle: 0\n    m_BestFit: 0\n    m_MinSize: 4\n    m_MaxSize: 46\n    m_Alignment: 3\n    m_AlignByGeometry: 0\n    m_RichText: 1\n    m_HorizontalOverflow: 0\n    m_VerticalOverflow: 0\n    m_LineSpacing: 1\n  m_Text: \n--- !u!222 &205469111\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 205469108}\n  m_CullTransparentMesh: 0\n--- !u!1 &475302931\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 475302932}\n  - component: {fileID: 475302934}\n  - component: {fileID: 475302933}\n  m_Layer: 5\n  m_Name: SnackBar\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!224 &475302932\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 475302931}\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: 205469109}\n  m_Father: {fileID: 42609967}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n  m_AnchorMin: {x: 0, y: 1}\n  m_AnchorMax: {x: 1, y: 1}\n  m_AnchoredPosition: {x: 0, y: -100}\n  m_SizeDelta: {x: 0, y: 300}\n  m_Pivot: {x: 0.5, y: 0.5}\n--- !u!114 &475302933\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 475302931}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_Material: {fileID: 0}\n  m_Color: {r: 0, g: 0, b: 0, 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: 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  m_UseSpriteMesh: 0\n  m_PixelsPerUnitMultiplier: 1\n--- !u!222 &475302934\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 475302931}\n  m_CullTransparentMesh: 0\n--- !u!1 &1375191582\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1375191583}\n  - component: {fileID: 1375191586}\n  - component: {fileID: 1375191585}\n  - component: {fileID: 1375191584}\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 &1375191583\nRectTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1375191582}\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: 42609967}\n  m_RootOrder: 0\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.5, y: 0.5}\n--- !u!114 &1375191584\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1375191582}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  m_AspectMode: 4\n  m_AspectRatio: 1.6\n--- !u!114 &1375191585\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1375191582}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, 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_Texture: {fileID: 2800000, guid: db915c4ea74562e4abe32ffe4cff7364, type: 3}\n  m_UVRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n--- !u!222 &1375191586\nCanvasRenderer:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1375191582}\n  m_CullTransparentMesh: 0\n--- !u!1 &1583144314\nGameObject:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  serializedVersion: 6\n  m_Component:\n  - component: {fileID: 1583144318}\n  - component: {fileID: 1583144317}\n  - component: {fileID: 1583144316}\n  - component: {fileID: 1583144315}\n  - component: {fileID: 1583144319}\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 &1583144315\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\n  m_Enabled: 1\n--- !u!124 &1583144316\nBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\n  m_Enabled: 1\n--- !u!20 &1583144317\nCamera:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\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_projectionMatrixMode: 1\n  m_GateFitMode: 2\n  m_FOVAxisMode: 0\n  m_SensorSize: {x: 36, y: 24}\n  m_LensShift: {x: 0, y: 0}\n  m_FocalLength: 50\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: 0\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 &1583144318\nTransform:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 1, z: -10}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!114 &1583144319\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_CorrespondingSourceObject: {fileID: 0}\n  m_PrefabInstance: {fileID: 0}\n  m_PrefabAsset: {fileID: 0}\n  m_GameObject: {fileID: 1583144314}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 0bc98c2a8aaebb24c98786f1897d9f3b, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  mode: 0\n  background: {fileID: 1375191585}\n  fitter: {fileID: 1375191584}\n  modelFile: {fileID: 4900000, guid: dc932743ced7f3f469965a13ea2a3286, type: 3}\n  labelsFile: {fileID: 4900000, guid: 0733b09cfaf45e64a8cad4e9eb12a78e, type: 3}\n  uiText: {fileID: 205469110}\n"
  },
  {
    "path": "Assets/Detect.unity.meta",
    "content": "fileFormatVersion: 2\nguid: 85aa1ed206fe7de4187b8a6fcce4362a\ntimeCreated: 1517147998\nlicenseType: Free\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Resources/coco_labels_list.txt",
    "content": "???\nperson\nbicycle\ncar\nmotorcycle\nairplane\nbus\ntrain\ntruck\nboat\ntraffic light\nfire hydrant\n???\nstop sign\nparking meter\nbench\nbird\ncat\ndog\nhorse\nsheep\ncow\nelephant\nbear\nzebra\ngiraffe\n???\nbackpack\numbrella\n???\n???\nhandbag\ntie\nsuitcase\nfrisbee\nskis\nsnowboard\nsports ball\nkite\nbaseball bat\nbaseball glove\nskateboard\nsurfboard\ntennis racket\nbottle\n???\nwine glass\ncup\nfork\nknife\nspoon\nbowl\nbanana\napple\nsandwich\norange\nbroccoli\ncarrot\nhot dog\npizza\ndonut\ncake\nchair\ncouch\npotted plant\nbed\n???\ndining table\n???\n???\ntoilet\n???\ntv\nlaptop\nmouse\nremote\nkeyboard\ncell phone\nmicrowave\noven\ntoaster\nsink\nrefrigerator\n???\nbook\nclock\nvase\nscissors\nteddy bear\nhair drier\ntoothbrush\n"
  },
  {
    "path": "Assets/Resources/coco_labels_list.txt.meta",
    "content": "fileFormatVersion: 2\nguid: 0733b09cfaf45e64a8cad4e9eb12a78e\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Resources/imagenet_comp_graph_label_strings.txt",
    "content": "dummy\nkit fox\nEnglish setter\nSiberian husky\nAustralian terrier\nEnglish springer\ngrey whale\nlesser panda\nEgyptian cat\nibex\nPersian cat\ncougar\ngazelle\nporcupine\nsea lion\nmalamute\nbadger\nGreat Dane\nWalker hound\nWelsh springer spaniel\nwhippet\nScottish deerhound\nkiller whale\nmink\nAfrican elephant\nWeimaraner\nsoft-coated wheaten terrier\nDandie Dinmont\nred wolf\nOld English sheepdog\njaguar\notterhound\nbloodhound\nAiredale\nhyena\nmeerkat\ngiant schnauzer\ntiti\nthree-toed sloth\nsorrel\nblack-footed ferret\ndalmatian\nblack-and-tan coonhound\npapillon\nskunk\nStaffordshire bullterrier\nMexican hairless\nBouvier des Flandres\nweasel\nminiature poodle\nCardigan\nmalinois\nbighorn\nfox squirrel\ncolobus\ntiger cat\nLhasa\nimpala\ncoyote\nYorkshire terrier\nNewfoundland\nbrown bear\nred fox\nNorwegian elkhound\nRottweiler\nhartebeest\nSaluki\ngrey fox\nschipperke\nPekinese\nBrabancon griffon\nWest Highland white terrier\nSealyham terrier\nguenon\nmongoose\nindri\ntiger\nIrish wolfhound\nwild boar\nEntleBucher\nzebra\nram\nFrench bulldog\norangutan\nbasenji\nleopard\nBernese mountain dog\nMaltese dog\nNorfolk terrier\ntoy terrier\nvizsla\ncairn\nsquirrel monkey\ngroenendael\nclumber\nSiamese cat\nchimpanzee\nkomondor\nAfghan hound\nJapanese spaniel\nproboscis monkey\nguinea pig\nwhite wolf\nice bear\ngorilla\nborzoi\ntoy poodle\nKerry blue terrier\nox\nScotch terrier\nTibetan mastiff\nspider monkey\nDoberman\nBoston bull\nGreater Swiss Mountain dog\nAppenzeller\nShih-Tzu\nIrish water spaniel\nPomeranian\nBedlington terrier\nwarthog\nArabian camel\nsiamang\nminiature schnauzer\ncollie\ngolden retriever\nIrish terrier\naffenpinscher\nBorder collie\nhare\nboxer\nsilky terrier\nbeagle\nLeonberg\nGerman short-haired pointer\npatas\ndhole\nbaboon\nmacaque\nChesapeake Bay retriever\nbull mastiff\nkuvasz\ncapuchin\npug\ncurly-coated retriever\nNorwich terrier\nflat-coated retriever\nhog\nkeeshond\nEskimo dog\nBrittany spaniel\nstandard poodle\nLakeland terrier\nsnow leopard\nGordon setter\ndingo\nstandard schnauzer\nhamster\nTibetan terrier\nArctic fox\nwire-haired fox terrier\nbasset\nwater buffalo\nAmerican black bear\nAngora\nbison\nhowler monkey\nhippopotamus\nchow\ngiant panda\nAmerican Staffordshire terrier\nShetland sheepdog\nGreat Pyrenees\nChihuahua\ntabby\nmarmoset\nLabrador retriever\nSaint Bernard\narmadillo\nSamoyed\nbluetick\nredbone\npolecat\nmarmot\nkelpie\ngibbon\nllama\nminiature pinscher\nwood rabbit\nItalian greyhound\nlion\ncocker spaniel\nIrish setter\ndugong\nIndian elephant\nbeaver\nSussex spaniel\nPembroke\nBlenheim spaniel\nMadagascar cat\nRhodesian ridgeback\nlynx\nAfrican hunting dog\nlangur\nIbizan hound\ntimber wolf\ncheetah\nEnglish foxhound\nbriard\nsloth bear\nBorder terrier\nGerman shepherd\notter\nkoala\ntusker\nechidna\nwallaby\nplatypus\nwombat\nrevolver\numbrella\nschooner\nsoccer ball\naccordion\nant\nstarfish\nchambered nautilus\ngrand piano\nlaptop\nstrawberry\nairliner\nwarplane\nairship\nballoon\nspace shuttle\nfireboat\ngondola\nspeedboat\nlifeboat\ncanoe\nyawl\ncatamaran\ntrimaran\ncontainer ship\nliner\npirate\naircraft carrier\nsubmarine\nwreck\nhalf track\ntank\nmissile\nbobsled\ndogsled\nbicycle-built-for-two\nmountain bike\nfreight car\npassenger car\nbarrow\nshopping cart\nmotor scooter\nforklift\nelectric locomotive\nsteam locomotive\namphibian\nambulance\nbeach wagon\ncab\nconvertible\njeep\nlimousine\nminivan\nModel T\nracer\nsports car\ngo-kart\ngolfcart\nmoped\nsnowplow\nfire engine\ngarbage truck\npickup\ntow truck\ntrailer truck\nmoving van\npolice van\nrecreational vehicle\nstreetcar\nsnowmobile\ntractor\nmobile home\ntricycle\nunicycle\nhorse cart\njinrikisha\noxcart\nbassinet\ncradle\ncrib\nfour-poster\nbookcase\nchina cabinet\nmedicine chest\nchiffonier\ntable lamp\nfile\npark bench\nbarber chair\nthrone\nfolding chair\nrocking chair\nstudio couch\ntoilet seat\ndesk\npool table\ndining table\nentertainment center\nwardrobe\nGranny Smith\norange\nlemon\nfig\npineapple\nbanana\njackfruit\ncustard apple\npomegranate\nacorn\nhip\near\nrapeseed\ncorn\nbuckeye\norgan\nupright\nchime\ndrum\ngong\nmaraca\nmarimba\nsteel drum\nbanjo\ncello\nviolin\nharp\nacoustic guitar\nelectric guitar\ncornet\nFrench horn\ntrombone\nharmonica\nocarina\npanpipe\nbassoon\noboe\nsax\nflute\ndaisy\nyellow lady's slipper\ncliff\nvalley\nalp\nvolcano\npromontory\nsandbar\ncoral reef\nlakeside\nseashore\ngeyser\nhatchet\ncleaver\nletter opener\nplane\npower drill\nlawn mower\nhammer\ncorkscrew\ncan opener\nplunger\nscrewdriver\nshovel\nplow\nchain saw\ncock\nhen\nostrich\nbrambling\ngoldfinch\nhouse finch\njunco\nindigo bunting\nrobin\nbulbul\njay\nmagpie\nchickadee\nwater ouzel\nkite\nbald eagle\nvulture\ngreat grey owl\nblack grouse\nptarmigan\nruffed grouse\nprairie chicken\npeacock\nquail\npartridge\nAfrican grey\nmacaw\nsulphur-crested cockatoo\nlorikeet\ncoucal\nbee eater\nhornbill\nhummingbird\njacamar\ntoucan\ndrake\nred-breasted merganser\ngoose\nblack swan\nwhite stork\nblack stork\nspoonbill\nflamingo\nAmerican egret\nlittle blue heron\nbittern\ncrane\nlimpkin\nAmerican coot\nbustard\nruddy turnstone\nred-backed sandpiper\nredshank\ndowitcher\noystercatcher\nEuropean gallinule\npelican\nking penguin\nalbatross\ngreat white shark\ntiger shark\nhammerhead\nelectric ray\nstingray\nbarracouta\ncoho\ntench\ngoldfish\neel\nrock beauty\nanemone fish\nlionfish\npuffer\nsturgeon\ngar\nloggerhead\nleatherback turtle\nmud turtle\nterrapin\nbox turtle\nbanded gecko\ncommon iguana\nAmerican chameleon\nwhiptail\nagama\nfrilled lizard\nalligator lizard\nGila monster\ngreen lizard\nAfrican chameleon\nKomodo dragon\ntriceratops\nAfrican crocodile\nAmerican alligator\nthunder snake\nringneck snake\nhognose snake\ngreen snake\nking snake\ngarter snake\nwater snake\nvine snake\nnight snake\nboa constrictor\nrock python\nIndian cobra\ngreen mamba\nsea snake\nhorned viper\ndiamondback\nsidewinder\nEuropean fire salamander\ncommon newt\neft\nspotted salamander\naxolotl\nbullfrog\ntree frog\ntailed frog\nwhistle\nwing\npaintbrush\nhand blower\noxygen mask\nsnorkel\nloudspeaker\nmicrophone\nscreen\nmouse\nelectric fan\noil filter\nstrainer\nspace heater\nstove\nguillotine\nbarometer\nrule\nodometer\nscale\nanalog clock\ndigital clock\nwall clock\nhourglass\nsundial\nparking meter\nstopwatch\ndigital watch\nstethoscope\nsyringe\nmagnetic compass\nbinoculars\nprojector\nsunglasses\nloupe\nradio telescope\nbow\ncannon [ground]\nassault rifle\nrifle\nprojectile\ncomputer keyboard\ntypewriter keyboard\ncrane\nlighter\nabacus\ncash machine\nslide rule\ndesktop computer\nhand-held computer\nnotebook\nweb site\nharvester\nthresher\nprinter\nslot\nvending machine\nsewing machine\njoystick\nswitch\nhook\ncar wheel\npaddlewheel\npinwheel\npotter's wheel\ngas pump\ncarousel\nswing\nreel\nradiator\npuck\nhard disc\nsunglass\npick\ncar mirror\nsolar dish\nremote control\ndisk brake\nbuckle\nhair slide\nknot\ncombination lock\npadlock\nnail\nsafety pin\nscrew\nmuzzle\nseat belt\nski\ncandle\njack-o'-lantern\nspotlight\ntorch\nneck brace\npier\ntripod\nmaypole\nmousetrap\nspider web\ntrilobite\nharvestman\nscorpion\nblack and gold garden spider\nbarn spider\ngarden spider\nblack widow\ntarantula\nwolf spider\ntick\ncentipede\nisopod\nDungeness crab\nrock crab\nfiddler crab\nking crab\nAmerican lobster\nspiny lobster\ncrayfish\nhermit crab\ntiger beetle\nladybug\nground beetle\nlong-horned beetle\nleaf beetle\ndung beetle\nrhinoceros beetle\nweevil\nfly\nbee\ngrasshopper\ncricket\nwalking stick\ncockroach\nmantis\ncicada\nleafhopper\nlacewing\ndragonfly\ndamselfly\nadmiral\nringlet\nmonarch\ncabbage butterfly\nsulphur butterfly\nlycaenid\njellyfish\nsea anemone\nbrain coral\nflatworm\nnematode\nconch\nsnail\nslug\nsea slug\nchiton\nsea urchin\nsea cucumber\niron\nespresso maker\nmicrowave\nDutch oven\nrotisserie\ntoaster\nwaffle iron\nvacuum\ndishwasher\nrefrigerator\nwasher\nCrock Pot\nfrying pan\nwok\ncaldron\ncoffeepot\nteapot\nspatula\naltar\ntriumphal arch\npatio\nsteel arch bridge\nsuspension bridge\nviaduct\nbarn\ngreenhouse\npalace\nmonastery\nlibrary\napiary\nboathouse\nchurch\nmosque\nstupa\nplanetarium\nrestaurant\ncinema\nhome theater\nlumbermill\ncoil\nobelisk\ntotem pole\ncastle\nprison\ngrocery store\nbakery\nbarbershop\nbookshop\nbutcher shop\nconfectionery\nshoe shop\ntobacco shop\ntoyshop\nfountain\ncliff dwelling\nyurt\ndock\nbrass\nmegalith\nbannister\nbreakwater\ndam\nchainlink fence\npicket fence\nworm fence\nstone wall\ngrille\nsliding door\nturnstile\nmountain tent\nscoreboard\nhoneycomb\nplate rack\npedestal\nbeacon\nmashed potato\nbell pepper\nhead cabbage\nbroccoli\ncauliflower\nzucchini\nspaghetti squash\nacorn squash\nbutternut squash\ncucumber\nartichoke\ncardoon\nmushroom\nshower curtain\njean\ncarton\nhandkerchief\nsandal\nashcan\nsafe\nplate\nnecklace\ncroquet ball\nfur coat\nthimble\npajama\nrunning shoe\ncocktail shaker\nchest\nmanhole cover\nmodem\ntub\ntray\nbalance beam\nbagel\nprayer rug\nkimono\nhot pot\nwhiskey jug\nknee pad\nbook jacket\nspindle\nski mask\nbeer bottle\ncrash helmet\nbottlecap\ntile roof\nmask\nmaillot\nPetri dish\nfootball helmet\nbathing cap\nteddy bear\nholster\npop bottle\nphotocopier\nvestment\ncrossword puzzle\ngolf ball\ntrifle\nsuit\nwater tower\nfeather boa\ncloak\nred wine\ndrumstick\nshield\nChristmas stocking\nhoopskirt\nmenu\nstage\nbonnet\nmeat loaf\nbaseball\nface powder\nscabbard\nsunscreen\nbeer glass\nhen-of-the-woods\nguacamole\nlampshade\nwool\nhay\nbow tie\nmailbag\nwater jug\nbucket\ndishrag\nsoup bowl\neggnog\nmortar\ntrench coat\npaddle\nchain\nswab\nmixing bowl\npotpie\nwine bottle\nshoji\nbulletproof vest\ndrilling platform\nbinder\ncardigan\nsweatshirt\npot\nbirdhouse\nhamper\nping-pong ball\npencil box\npay-phone\nconsomme\napron\npunching bag\nbackpack\ngroom\nbearskin\npencil sharpener\nbroom\nmosquito net\nabaya\nmortarboard\nponcho\ncrutch\nPolaroid camera\nspace bar\ncup\nracket\ntraffic light\nquill\nradio\ndough\ncuirass\nmilitary uniform\nlipstick\nshower cap\nmonitor\noscilloscope\nmitten\nbrassiere\nFrench loaf\nvase\nmilk can\nrugby ball\npaper towel\nearthstar\nenvelope\nminiskirt\ncowboy hat\ntrolleybus\nperfume\nbathtub\nhotdog\ncoral fungus\nbullet train\npillow\ntoilet tissue\ncassette\ncarpenter's kit\nladle\nstinkhorn\nlotion\nhair spray\nacademic gown\ndome\ncrate\nwig\nburrito\npill bottle\nchain mail\ntheater curtain\nwindow shade\nbarrel\nwashbasin\nballpoint\nbasketball\nbath towel\ncowboy boot\ngown\nwindow screen\nagaric\ncellular telephone\nnipple\nbarbell\nmailbox\nlab coat\nfire screen\nminibus\npacket\nmaze\npole\nhorizontal bar\nsombrero\npickelhaube\nrain barrel\nwallet\ncassette player\ncomic book\npiggy bank\nstreet sign\nbell cote\nfountain pen\nWindsor tie\nvolleyball\noverskirt\nsarong\npurse\nbolo tie\nbib\nparachute\nsleeping bag\ntelevision\nswimming trunks\nmeasuring cup\nespresso\npizza\nbreastplate\nshopping basket\nwooden spoon\nsaltshaker\nchocolate sauce\nballplayer\ngoblet\ngyromitra\nstretcher\nwater bottle\ndial telephone\nsoap dispenser\njersey\nschool bus\njigsaw puzzle\nplastic bag\nreflex camera\ndiaper\nBand Aid\nice lolly\nvelvet\ntennis ball\ngasmask\ndoormat\nLoafer\nice cream\npretzel\nquilt\nmaillot\ntape player\nclog\niPod\nbolete\nscuba diver\npitcher\nmatchstick\nbikini\nsock\nCD player\nlens cap\nthatch\nvault\nbeaker\nbubble\ncheeseburger\nparallel bars\nflagpole\ncoffee mug\nrubber eraser\nstole\ncarbonara\ndumbbell"
  },
  {
    "path": "Assets/Resources/imagenet_comp_graph_label_strings.txt.meta",
    "content": "fileFormatVersion: 2\nguid: a59056e24b8072143b54036c646ab35f\ntimeCreated: 1517148012\nlicenseType: Free\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Resources/ssd_mobilenet_v1_android_export.bytes.meta",
    "content": "fileFormatVersion: 2\nguid: dc932743ced7f3f469965a13ea2a3286\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Resources/tensorflow_inception_graph.bytes.meta",
    "content": "fileFormatVersion: 2\nguid: 6563170825a12804e82a117174111f3b\ntimeCreated: 1517148011\nlicenseType: Free\nTextScriptImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Resources.meta",
    "content": "fileFormatVersion: 2\nguid: fe2bd9c8c57fb0c41bcb64db0c3f0801\nfolderAsset: yes\ntimeCreated: 1517147999\nlicenseType: Free\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Scripts/Classifier.cs",
    "content": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Threading.Tasks;\r\nusing TensorFlow;\r\nusing UnityEngine;\r\n\r\n\r\nnamespace TFClassify\r\n{\r\n    public class Classifier\r\n    {\r\n        private static int IMAGE_MEAN = 117;\r\n        private static float IMAGE_STD = 1;\r\n        private static string INPUT_NAME = \"input\";\r\n        private static string OUTPUT_NAME = \"output\";\r\n\r\n        private int inputSize;\r\n        private TFGraph graph;\r\n        private string[] labels;\r\n\r\n        \r\n        public Classifier(byte[] model, string[] labels, int inputSize)\r\n        {\r\n#if UNITY_ANDROID\r\n            TensorFlowSharp.Android.NativeBinding.Init();\r\n#endif\r\n            this.labels = labels;\r\n            this.inputSize = inputSize;\r\n            this.graph = new TFGraph();\r\n            this.graph.Import(model, \"\");\r\n        }\r\n\r\n\r\n        public Task<List<KeyValuePair<string, float>>> ClassifyAsync(Color32[] data)\r\n        {\r\n            return Task.Run(() =>\r\n            {\r\n                var map = new List<KeyValuePair<string, float>>();\r\n\r\n                using (var session = new TFSession(this.graph))\r\n                using (var tensor = TransformInput(data, this.inputSize, this.inputSize))\r\n                {\r\n                    var runner = session.GetRunner();\r\n                    runner.AddInput(graph[INPUT_NAME][0], tensor).Fetch(graph[OUTPUT_NAME][0]);\r\n                    var output = runner.Run();\r\n                    \r\n                    // output[0].Value() is a vector containing probabilities of\r\n                    // labels for each image in the \"batch\". The batch size was 1.\r\n                    // Find the most probably label index.\r\n\r\n                    var result = output[0];\r\n                    var rshape = result.Shape;\r\n                    \r\n                    if (result.NumDims != 2 || rshape [0] != 1)\r\n                    {\r\n                        var shape = \"\";\r\n                        foreach (var d in rshape)\r\n                        {\r\n                            shape += $\"{d} \";\r\n                        }\r\n                        \r\n                        shape = shape.Trim ();\r\n                        Debug.Log(\"Error: expected to produce a [1 N] shaped tensor where N is the number of labels, instead it produced one with shape [{shape}]\");\r\n                        Environment.Exit (1);\r\n                    }\r\n\r\n                    var probabilities = ((float[][])result.GetValue(jagged: true))[0];\r\n\r\n                    for (int i = 0; i < labels.Length; i++)\r\n                    {\r\n                        map.Add(new KeyValuePair<string, float>(labels[i], probabilities[i] * 100));\r\n                    }\r\n\r\n                    foreach (var ts in output)\r\n                    {\r\n                        ts.Dispose();\r\n                    }\r\n                }\r\n\r\n                return map.OrderByDescending(x => x.Value).ToList();\r\n            });\r\n        }\r\n\r\n\r\n        public static TFTensor TransformInput(Color32[] pic, int width, int height)\r\n        {\r\n            float[] floatValues = new float[width * height * 3];\r\n\r\n            for (int i = 0; i < pic.Length; ++i)\r\n            {\r\n                var color = pic[i];\r\n\r\n                floatValues [i * 3 + 0] = (color.r - IMAGE_MEAN) / IMAGE_STD;\r\n                floatValues [i * 3 + 1] = (color.g - IMAGE_MEAN) / IMAGE_STD;\r\n                floatValues [i * 3 + 2] = (color.b - IMAGE_MEAN) / IMAGE_STD;\r\n            }\r\n\r\n            TFShape shape = new TFShape(1, width, height, 3);\r\n\r\n            return TFTensor.FromBuffer(shape, floatValues, 0, floatValues.Length);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Assets/Scripts/Classifier.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 787deb880ce1b38428badca49bc61e3b\ntimeCreated: 1517149854\nlicenseType: Free\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/Detector.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing TensorFlow;\nusing UnityEngine;\n\n\nnamespace TFClassify\n{\n    public class BoxOutline\n    {\n        public float YMin { get; set; } = 0;\n        public float XMin { get; set; } = 0;\n        public float YMax { get; set; } = 0;\n        public float XMax { get; set; } = 0;\n        public string Label { get; set; }\n        public float Score { get; set; }\n    }\n\n    public class Detector\n    {\n        private static int IMAGE_MEAN = 117;\n        private static float IMAGE_STD = 1;\n        \n        // Minimum detection confidence to track a detection.\n        private static float MINIMUM_CONFIDENCE = 0.6f;\n\n        private int inputSize;\n        private TFGraph graph;\n        private string[] labels;\n\n        public Detector(byte[] model, string[] labels, int inputSize)\n        {\n#if UNITY_ANDROID\n            TensorFlowSharp.Android.NativeBinding.Init();\n#endif\n            this.labels = labels;\n            this.inputSize = inputSize;\n            this.graph = new TFGraph();\n            this.graph.Import(new TFBuffer(model));\n        }\n\n\n        public Task<List<BoxOutline>> DetectAsync(Color32[] data)\n        {\n            return Task.Run(() =>\n            {\n                using (var session = new TFSession(this.graph))\n                using (var tensor = TransformInput(data, this.inputSize, this.inputSize))\n                {\n                    var runner = session.GetRunner();\n                    runner.AddInput(this.graph[\"image_tensor\"][0], tensor)\n                          .Fetch(this.graph[\"detection_boxes\"][0],\n                                 this.graph[\"detection_scores\"][0],\n                                 this.graph[\"detection_classes\"][0],\n                                 this.graph[\"num_detections\"][0]);\n                    var output = runner.Run();\n\n                    var boxes = (float[,,])output[0].GetValue(jagged: false);\n                    var scores = (float[,])output[1].GetValue(jagged: false);\n                    var classes = (float[,])output[2].GetValue(jagged: false);\n                        \n                    foreach(var ts in output)\n                    {\n                        ts.Dispose();\n                    }\n\n                    return GetBoxes(boxes, scores, classes, MINIMUM_CONFIDENCE);\n                }\n            });\n        }\n\n\n        public static TFTensor TransformInput(Color32[] pic, int width, int height)\n        {\n            byte[] floatValues = new byte[width * height * 3];\n\n            for (int i = 0; i < pic.Length; ++i)\n            {\n                var color = pic[i];\n\n                floatValues [i * 3 + 0] = (byte)((color.r - IMAGE_MEAN) / IMAGE_STD);\n                floatValues [i * 3 + 1] = (byte)((color.g - IMAGE_MEAN) / IMAGE_STD);\n                floatValues [i * 3 + 2] = (byte)((color.b - IMAGE_MEAN) / IMAGE_STD);\n            }\n\n            TFShape shape = new TFShape(1, width, height, 3);\n\n            return TFTensor.FromBuffer(shape, floatValues, 0, floatValues.Length);\n        }\n\n\n        private List<BoxOutline> GetBoxes(float[,,] boxes, float[,] scores, float[,] classes, double minScore)\n        {\n            var x = boxes.GetLength(0);\n            var y = boxes.GetLength(1);\n            var z = boxes.GetLength(2);\n\n            float ymin = 0, xmin = 0, ymax = 0, xmax = 0;\n            var results = new List<BoxOutline>();\n\n            for (int i = 0; i < x; i++) \n            {\n                for (int j = 0; j < y; j++) \n                {\n                    if (scores [i, j] < minScore) continue;\n\n                    for (int k = 0; k < z; k++) \n                    {\n                        var box = boxes [i, j, k];\n                        switch (k) {\n                        case 0:\n                            ymin = box;\n                            break;\n                        case 1:\n                            xmin = box;\n                            break;\n                        case 2:\n                            ymax = box;\n                            break;\n                        case 3:\n                            xmax = box;\n                            break;\n                        }\n                    }\n\n                    int value = Convert.ToInt32(classes[i, j]);\n                    var label = this.labels[value];\n                    var boxOutline = new BoxOutline\n                    {\n                        YMin = ymin,\n                        XMin = xmin,\n                        YMax = ymax,\n                        XMax = xmax,\n                        Label = label,\n                        Score = scores[i, j],\n                    };\n\n                    results.Add(boxOutline);\n                }\n            }\n\n            return results;\n        }\n    }\n}"
  },
  {
    "path": "Assets/Scripts/Detector.cs.meta",
    "content": "fileFormatVersion: 2\nguid: da11ba848a6f6304092f9ba436774b18\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/PhoneCamera.cs",
    "content": "﻿using System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing UnityEngine;\r\nusing UnityEngine.UI;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Text.RegularExpressions;\r\nusing TFClassify;\r\nusing System.Diagnostics;\r\nusing System.Threading.Tasks;\r\nusing Debug = UnityEngine.Debug;\r\nusing TensorFlow;\r\n\r\n\r\npublic enum Mode\r\n{\r\n    Detect,\r\n    Classify,\r\n}\r\n\r\npublic class PhoneCamera : MonoBehaviour\r\n{\r\n    private const int detectImageSize = 300;\r\n    private const int classifyImageSize = 224;\r\n\r\n    private static Texture2D boxOutlineTexture;\r\n    private static GUIStyle labelStyle;\r\n    \r\n    private bool camAvailable;\r\n    private WebCamTexture backCamera;\r\n    private Texture defaultBackground;\r\n    \r\n    private Classifier classifier;\r\n    private Detector detector;\r\n\r\n    private List<BoxOutline> boxOutlines;\r\n    private Vector2 backgroundSize;\r\n    private Vector2 backgroundOrigin;\r\n\r\n\r\n    public Mode mode;\r\n    public RawImage background;\r\n    public AspectRatioFitter fitter;\r\n    public TextAsset modelFile;\r\n    public TextAsset labelsFile;\r\n    public Text uiText;\r\n    \r\n\r\n    private void Start()\r\n    {\r\n        LoadWorker();\r\n\r\n        defaultBackground = background.texture;\r\n        WebCamDevice[] devices = WebCamTexture.devices;\r\n\r\n        if(devices.Length == 0)\r\n        {\r\n            this.uiText.text = \"No camera detected\";\r\n            camAvailable = false;\r\n\r\n            return;\r\n        }\r\n\r\n        for(int i = 0; i < devices.Length; i++)\r\n        {\r\n            if(!devices[i].isFrontFacing)\r\n            {\r\n                this.backCamera = new WebCamTexture(devices[i].name, Screen.width, Screen.height);\r\n            }\r\n        }\r\n\r\n        if(backCamera == null)\r\n        {\r\n            this.uiText.text = \"Unable to find back camera\";\r\n            \r\n            return;\r\n        }\r\n\r\n\r\n        this.backCamera.Play();\r\n        this.background.texture = this.backCamera;\r\n        this.backgroundSize = new Vector2(this.backCamera.width, this.backCamera.height);\r\n        camAvailable = true;\r\n\r\n        string func = mode == Mode.Classify ? nameof(TFClassify) : nameof(TFDetect);\r\n        InvokeRepeating(func, 1f, 1f);\r\n    }\r\n\r\n\r\n    private void Update()\r\n    {\r\n        if(!this.camAvailable)\r\n        {\r\n            return;\r\n        }\r\n\r\n        float ratio = (float)backCamera.width / (float)backCamera.height;\r\n        fitter.aspectRatio = ratio;\r\n\r\n        float scaleY = backCamera.videoVerticallyMirrored ? -1f : 1f;\r\n        background.rectTransform.localScale = new Vector3(1f, scaleY, 1f);\r\n\r\n        int orient = -backCamera.videoRotationAngle;\r\n        background.rectTransform.localEulerAngles = new Vector3(0, 0, orient);\r\n    }\r\n\r\n\r\n    public void OnGUI()\r\n    {\r\n        if (this.boxOutlines != null && this.boxOutlines.Any())\r\n        {\r\n            foreach (var outline in this.boxOutlines)\r\n            {\r\n                DrawBoxOutline(outline);\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    private void LoadWorker()\r\n    {\r\n        try\r\n        {\r\n            if (mode == Mode.Classify)\r\n            {\r\n                LoadClassifier();\r\n            }\r\n            else\r\n            {\r\n                LoadDetector();\r\n            }\r\n        }\r\n        catch (TFException ex)\r\n        {\r\n            if (ex.Message.EndsWith(\"is up to date with your GraphDef-generating binary.).\"))\r\n            {\r\n                this.uiText.text = \"Error: TFException. Make sure you model trained with same version of TensorFlow as in Unity plugin.\";\r\n            }\r\n            \r\n            throw;\r\n        }\r\n    }\r\n\r\n\r\n    private void LoadClassifier()\r\n    {\r\n        this.classifier = new Classifier(\r\n            this.modelFile.bytes,\r\n            Regex.Split(this.labelsFile.text, \"\\n|\\r|\\r\\n\")\r\n                .Where(s => !String.IsNullOrEmpty(s)).ToArray(),\r\n            classifyImageSize);\r\n    }\r\n\r\n\r\n    private void LoadDetector()\r\n    {\r\n        this.detector = new Detector(\r\n            this.modelFile.bytes,\r\n            Regex.Split(this.labelsFile.text, \"\\n|\\r|\\r\\n\")\r\n                .Where(s => !String.IsNullOrEmpty(s)).ToArray(),\r\n            detectImageSize);\r\n    }\r\n\r\n\r\n    private async void TFClassify()\r\n    {\r\n        var snap = TakeTextureSnap();\r\n        var scaled = Scale(snap, classifyImageSize);\r\n        var rotated = await RotateAsync(scaled.GetPixels32(), scaled.width, scaled.height);\r\n\r\n        try\r\n        {\r\n            var probabilities = await this.classifier.ClassifyAsync(rotated);\r\n            this.uiText.text = String.Empty;\r\n\r\n            for(int i = 0; i < 3; i++)\r\n            {\r\n                this.uiText.text += probabilities[i].Key + \": \" + String.Format(\"{0:0.000}%\", probabilities[i].Value) + \"\\n\";\r\n            }\r\n        }\r\n        catch (NullReferenceException)\r\n        {\r\n            this.uiText.text = \"Error: NullReferenceException. Make sure you set correct INPUT_NAME and OUTPUT_NAME\";\r\n        }\r\n        finally\r\n        {\r\n            Destroy(snap);\r\n            Destroy(scaled);\r\n        }\r\n    }\r\n\r\n\r\n    private async void TFDetect()\r\n    {\r\n        UpdateBackgroundOrigin();\r\n\r\n        var snap = TakeTextureSnap();\r\n        var scaled = Scale(snap, detectImageSize);\r\n        var rotated = await RotateAsync(scaled.GetPixels32(), scaled.width, scaled.height);\r\n        this.boxOutlines = await this.detector.DetectAsync(rotated);\r\n\r\n        Destroy(snap);\r\n        Destroy(scaled);\r\n    }\r\n\r\n    \r\n    private void UpdateBackgroundOrigin()\r\n    {\r\n        var backgroundPosition = this.background.transform.position;\r\n        this.backgroundOrigin = new Vector2(backgroundPosition.x - this.backgroundSize.x / 2, \r\n                                            backgroundPosition.y - this.backgroundSize.y / 2);\r\n    }\r\n\r\n\r\n    private void DrawBoxOutline(BoxOutline outline)\r\n    {\r\n        var xMin = outline.XMin * this.backgroundSize.x + this.backgroundOrigin.x;\r\n        var xMax = outline.XMax * this.backgroundSize.x + this.backgroundOrigin.x;\r\n        var yMin = outline.YMin * this.backgroundSize.y + this.backgroundOrigin.y;\r\n        var yMax = outline.YMax * this.backgroundSize.y + this.backgroundOrigin.y;\r\n\r\n        DrawRectangle(new Rect(xMin, yMin, xMax - xMin, yMax - yMin), 4, Color.red);\r\n        DrawLabel(new Rect(xMin + 10, yMin + 10, 200, 20), $\"{outline.Label}: {(int)(outline.Score * 100)}%\");\r\n    }\r\n\r\n\r\n    public static void DrawRectangle(Rect area, int frameWidth, Color color)\r\n    {\r\n        // Create a one pixel texture with the right color\r\n        if (boxOutlineTexture == null)\r\n        {\r\n            var texture = new Texture2D(1, 1);\r\n            texture.SetPixel(0, 0, color);\r\n            texture.Apply();\r\n            boxOutlineTexture = texture;\r\n        }\r\n        \r\n        Rect lineArea = area;\r\n        lineArea.height = frameWidth;\r\n        GUI.DrawTexture(lineArea, boxOutlineTexture); // Top line\r\n\r\n        lineArea.y = area.yMax - frameWidth; \r\n        GUI.DrawTexture(lineArea, boxOutlineTexture); // Bottom line\r\n\r\n        lineArea = area;\r\n        lineArea.width = frameWidth;\r\n        GUI.DrawTexture(lineArea, boxOutlineTexture); // Left line\r\n\r\n        lineArea.x = area.xMax - frameWidth;\r\n        GUI.DrawTexture(lineArea, boxOutlineTexture); // Right line\r\n    }\r\n\r\n\r\n    private static void DrawLabel(Rect position, string text)\r\n    {\r\n        if (labelStyle == null)\r\n        {\r\n            var style = new GUIStyle();\r\n            style.fontSize = 50;\r\n            style.normal.textColor = Color.red;\r\n            labelStyle = style;\r\n        }\r\n\r\n        GUI.Label(position, text, labelStyle);\r\n    }\r\n\r\n\r\n    private Texture2D TakeTextureSnap()\r\n    {\r\n        var smallest = backCamera.width < backCamera.height ?\r\n            backCamera.width : backCamera.height;\r\n        var snap = TextureTools.CropWithRect(backCamera,\r\n             new Rect(0, 0, smallest, smallest),\r\n            TextureTools.RectOptions.Center, 0, 0);\r\n\r\n        return snap;\r\n    }\r\n\r\n\r\n    private Texture2D Scale(Texture2D texture, int imageSize)\r\n    {\r\n        var scaled = TextureTools.scaled(texture, imageSize, imageSize, FilterMode.Bilinear);\r\n        \r\n        return scaled;\r\n    }\r\n\r\n\r\n    private Task<Color32[]> RotateAsync(Color32[] pixels, int width, int height)\r\n    {\r\n        return Task.Run(() =>\r\n        {\r\n            return TextureTools.RotateImageMatrix(\r\n                    pixels, width, height, -90);\r\n        });\r\n    }\r\n\r\n    private Task<Texture2D> RotateAsync(Texture2D texture)\r\n    {\r\n        return Task.Run(() =>\r\n        {\r\n            return TextureTools.RotateTexture(texture, -90);\r\n        });\r\n    }\r\n\r\n\r\n    private void SaveToFile(Texture2D texture)\r\n    {\r\n        File.WriteAllBytes(\r\n            Application.persistentDataPath + \"/\" +\r\n            \"snap.png\", texture.EncodeToPNG());\r\n    }\r\n}\r\n"
  },
  {
    "path": "Assets/Scripts/PhoneCamera.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 0bc98c2a8aaebb24c98786f1897d9f3b\ntimeCreated: 1517148004\nlicenseType: Free\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/TextureTools.cs",
    "content": "using System;\r\nusing UnityEngine;\r\n\r\n\r\nnamespace TFClassify\r\n{\r\n    public class TextureTools\r\n    {\r\n        // Based on https://gist.github.com/natsupy/e129936543f9b4663a37ea0762172b3b\r\n        public enum Options\r\n        {\r\n            Crop = 0,\r\n            Resize = 1\r\n        }\r\n\r\n        public enum RectOptions\r\n        {\r\n            Center = 0,\r\n            BottomRight = 1,\r\n            TopRight = 2,\r\n            BottomLeft = 3,\r\n            TopLeft = 4,\r\n            //Top = 5,\r\n            //Left = 6,\r\n            //Right = 7,\r\n            //Bottom = 8,\r\n            Custom = 9\r\n        }\r\n\r\n\r\n        public static Texture2D CropWithRect(\r\n            WebCamTexture texture, Rect rect, RectOptions rectOptions,  int xMod, int yMod)\r\n        {\r\n            if(rect.height < 0 || rect.width < 0)\r\n            {\r\n                throw new System.ArgumentException(\"Invalid texture size\");\r\n            }\r\n\r\n            Texture2D result = new Texture2D((int)rect.width, (int)rect.height);\r\n\r\n            if(rect.width != 0 && rect.height != 0)\r\n            {\r\n                float xRect = rect.x;\r\n                float yRect = rect.y;\r\n                float widthRect = rect.width;\r\n                float heightRect = rect.height;\r\n\r\n                switch(rectOptions)\r\n                {\r\n                    case RectOptions.Center:\r\n                        xRect = (texture.width - rect.width) / 2;\r\n                        yRect = (texture.height - rect.height) / 2;\r\n                        break;\r\n\r\n                    case RectOptions.BottomRight:\r\n                        xRect = texture.width - rect.width;\r\n                        break;\r\n\r\n                    case RectOptions.BottomLeft:\r\n                        break;\r\n\r\n                    case RectOptions.TopLeft:\r\n                        yRect = texture.height - rect.height;\r\n                        break;\r\n\r\n                    case RectOptions.TopRight:\r\n                        xRect = texture.width - rect.width;\r\n                        yRect = texture.height - rect.height;\r\n                        break;\r\n\r\n                    case RectOptions.Custom:\r\n                        float tempWidth = texture.width - rect.width - xMod;\r\n                        float tempHeight = texture.height - rect.height - yMod;\r\n                        xRect = tempWidth > texture.width ? 0 : tempWidth;\r\n                        yRect = tempHeight > texture.height ? 0 : tempHeight;\r\n                        break;\r\n                }\r\n\r\n                if (texture.width < rect.x + rect.width || texture.height < rect.y + rect.height || \r\n                    xRect > rect.x + texture.width || yRect > rect.y + texture.height || \r\n                    xRect < 0 || yRect < 0 || rect.width < 0 || rect.height < 0)\r\n                {\r\n                    throw new System.ArgumentException(\"Set value crop less than origin texture size\");\r\n                }\r\n\r\n                result.SetPixels(texture.GetPixels(Mathf.FloorToInt(xRect), Mathf.FloorToInt(yRect),\r\n                                                Mathf.FloorToInt(widthRect), Mathf.FloorToInt(heightRect)));\r\n                result.Apply();\r\n            }\r\n\r\n            return result;\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        ///     Returns a scaled copy of given texture.\r\n        /// </summary>\r\n        /// <param name=\"tex\">Source texure to scale</param>\r\n        /// <param name=\"width\">Destination texture width</param>\r\n        /// <param name=\"height\">Destination texture height</param>\r\n        /// <param name=\"mode\">Filtering mode</param>\r\n        public static Texture2D scaled(Texture2D src, int width, int height, FilterMode mode = FilterMode.Trilinear)\r\n        {\r\n                Rect texR = new Rect(0,0,width,height);\r\n                _gpu_scale(src,width,height,mode);\r\n               \r\n                //Get rendered data back to a new texture\r\n                Texture2D result = new Texture2D(width, height, TextureFormat.ARGB32, true);\r\n                result.Resize(width, height);\r\n                result.ReadPixels(texR,0,0,true);\r\n                return result;                 \r\n        }\r\n       \r\n        /// <summary>\r\n        /// Scales the texture data of the given texture.\r\n        /// </summary>\r\n        /// <param name=\"tex\">Texure to scale</param>\r\n        /// <param name=\"width\">New width</param>\r\n        /// <param name=\"height\">New height</param>\r\n        /// <param name=\"mode\">Filtering mode</param>\r\n        public static void scale(Texture2D tex, int width, int height, FilterMode mode = FilterMode.Trilinear)\r\n        {\r\n                Rect texR = new Rect(0,0,width,height);\r\n                _gpu_scale(tex,width,height,mode);\r\n               \r\n                // Update new texture\r\n                tex.Resize(width, height);\r\n                tex.ReadPixels(texR,0,0,true);\r\n                tex.Apply(true);        //Remove this if you hate us applying textures for you :)\r\n        }\r\n               \r\n        // Internal unility that renders the source texture into the RTT - the scaling method itself.\r\n        static void _gpu_scale(Texture2D src, int width, int height, FilterMode fmode)\r\n        {\r\n                //We need the source texture in VRAM because we render with it\r\n                src.filterMode = fmode;\r\n                src.Apply(true);       \r\n                               \r\n                //Using RTT for best quality and performance. Thanks, Unity 5\r\n                RenderTexture rtt = new RenderTexture(width, height, 32);\r\n               \r\n                //Set the RTT in order to render to it\r\n                Graphics.SetRenderTarget(rtt);\r\n               \r\n                //Setup 2D matrix in range 0..1, so nobody needs to care about sized\r\n                GL.LoadPixelMatrix(0,1,1,0);\r\n               \r\n                //Then clear & draw the texture to fill the entire RTT.\r\n                GL.Clear(true,true,new Color(0,0,0,0));\r\n                Graphics.DrawTexture(new Rect(0,0,1,1),src);\r\n        }\r\n\r\n\r\n        public static Texture2D RotateTexture(Texture2D originTexture, int angle) {\r\n            var result = RotateImageMatrix(\r\n                originTexture.GetPixels32(), originTexture.width, originTexture.height, angle);\r\n            var resultTexture = new Texture2D(originTexture.width, originTexture.height);\r\n            resultTexture.SetPixels32(result);\r\n            resultTexture.Apply();\r\n\r\n            return resultTexture;\r\n         }\r\n\r\n\r\n         public static Color32[] RotateImageMatrix(Color32[] matrix, int width, int height, int angle)\r\n         {\r\n             Color32[] pix1 = new Color32[matrix.Length];\r\n             \r\n             int x = 0;\r\n             int y = 0;\r\n\r\n             Color32[] pix3 = rotateSquare(\r\n                 matrix, width, height, (Math.PI/180*(double)angle));\r\n\r\n             for (int j = 0; j < height; j++){\r\n                 for (var i = 0; i < width; i++) {\r\n                     pix1[x + i + width*(j+y)] = pix3[i + j*width];\r\n                 }\r\n             }\r\n\r\n             return pix3;\r\n         }\r\n\r\n\r\n         static Color32[] rotateSquare(Color32[] arr, int width, int height, double phi) {\r\n             int x;\r\n             int y;\r\n             int i;\r\n             int j;\r\n             double sn = Math.Sin(phi);\r\n             double cs = Math.Cos(phi);\r\n             Color32[] arr2 = new Color32[arr.Length];\r\n\r\n             int xc = width/2;\r\n             int yc = height/2;\r\n             \r\n             for (j=0; j<height; j++){\r\n                 for (i=0; i<width; i++){\r\n                     arr2[j*width+i] = new Color32(0,0,0,0);\r\n                     x = (int)(cs*(i-xc)+sn*(j-yc)+xc);\r\n                     y = (int)(-sn*(i-xc)+cs*(j-yc)+yc);\r\n                     if ((x>-1) && (x<width) &&(y>-1) && (y<height)){ \r\n                         arr2[j*width+i]=arr[y*width+x];\r\n                     }\r\n                 }\r\n             }\r\n             return arr2;\r\n         }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Assets/Scripts/TextureTools.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 00e61c7006869d749984e9d05ea251a1\ntimeCreated: 1517148004\nlicenseType: Free\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.meta",
    "content": "fileFormatVersion: 2\nguid: 94d80eb704da799429211a97520eaa32\nfolderAsset: yes\ntimeCreated: 1517147998\nlicenseType: Free\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018 Andrey Ashikhmin\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": "Packages/manifest.json",
    "content": "{\n  \"dependencies\": {\n    \"com.unity.2d.sprite\": \"1.0.0\",\n    \"com.unity.2d.tilemap\": \"1.0.0\",\n    \"com.unity.ads\": \"2.0.8\",\n    \"com.unity.analytics\": \"3.3.2\",\n    \"com.unity.collab-proxy\": \"1.2.16\",\n    \"com.unity.ext.nunit\": \"1.0.0\",\n    \"com.unity.ide.rider\": \"1.0.8\",\n    \"com.unity.ide.vscode\": \"1.0.7\",\n    \"com.unity.multiplayer-hlapi\": \"1.0.2\",\n    \"com.unity.package-manager-ui\": \"2.2.0\",\n    \"com.unity.purchasing\": \"2.0.6\",\n    \"com.unity.test-framework\": \"1.0.13\",\n    \"com.unity.textmeshpro\": \"2.0.1\",\n    \"com.unity.timeline\": \"1.1.0\",\n    \"com.unity.ugui\": \"1.0.0\",\n    \"com.unity.xr.legacyinputhelpers\": \"2.0.2\",\n    \"com.unity.modules.ai\": \"1.0.0\",\n    \"com.unity.modules.androidjni\": \"1.0.0\",\n    \"com.unity.modules.animation\": \"1.0.0\",\n    \"com.unity.modules.assetbundle\": \"1.0.0\",\n    \"com.unity.modules.audio\": \"1.0.0\",\n    \"com.unity.modules.cloth\": \"1.0.0\",\n    \"com.unity.modules.director\": \"1.0.0\",\n    \"com.unity.modules.imageconversion\": \"1.0.0\",\n    \"com.unity.modules.imgui\": \"1.0.0\",\n    \"com.unity.modules.jsonserialize\": \"1.0.0\",\n    \"com.unity.modules.particlesystem\": \"1.0.0\",\n    \"com.unity.modules.physics\": \"1.0.0\",\n    \"com.unity.modules.physics2d\": \"1.0.0\",\n    \"com.unity.modules.screencapture\": \"1.0.0\",\n    \"com.unity.modules.terrain\": \"1.0.0\",\n    \"com.unity.modules.terrainphysics\": \"1.0.0\",\n    \"com.unity.modules.tilemap\": \"1.0.0\",\n    \"com.unity.modules.ui\": \"1.0.0\",\n    \"com.unity.modules.uielements\": \"1.0.0\",\n    \"com.unity.modules.umbra\": \"1.0.0\",\n    \"com.unity.modules.unityanalytics\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequest\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequestassetbundle\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequestaudio\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequesttexture\": \"1.0.0\",\n    \"com.unity.modules.unitywebrequestwww\": \"1.0.0\",\n    \"com.unity.modules.vehicles\": \"1.0.0\",\n    \"com.unity.modules.video\": \"1.0.0\",\n    \"com.unity.modules.vr\": \"1.0.0\",\n    \"com.unity.modules.wind\": \"1.0.0\",\n    \"com.unity.modules.xr\": \"1.0.0\"\n  }\n}\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  Doppler Factor: 1\n  Default Speaker Mode: 2\n  m_SampleRate: 0\n  m_DSPBufferSize: 0\n  m_VirtualVoiceCount: 512\n  m_RealVoiceCount: 32\n  m_SpatializerPlugin: \n  m_AmbisonicDecoderPlugin: \n  m_DisableAudio: 0\n  m_VirtualizeEffects: 1\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: 7\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_ClothInterCollisionDistance: 0\n  m_ClothInterCollisionStiffness: 0\n  m_ContactsGeneration: 1\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n  m_AutoSimulation: 1\n  m_AutoSyncTransforms: 1\n  m_ClothInterCollisionSettingsToggle: 0\n  m_ContactPairsMode: 0\n  m_BroadphaseType: 0\n  m_WorldBounds:\n    m_Center: {x: 0, y: 0, z: 0}\n    m_Extent: {x: 250, y: 250, z: 250}\n  m_WorldSubdivisions: 8\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: 0\n    path: \n    guid: 00000000000000000000000000000000\n  - enabled: 1\n    path: Assets/Detect.unity\n    guid: 85aa1ed206fe7de4187b8a6fcce4362a\n  - enabled: 0\n    path: Assets/Classify.unity\n    guid: 48a90ec4b8f04ed4b968ac1e6153ac36\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: 7\n  m_ExternalVersionControlSupport: Hidden Meta Files\n  m_SerializationMode: 2\n  m_LineEndingsForNewScripts: 2\n  m_DefaultBehaviorMode: 0\n  m_SpritePackerMode: 0\n  m_SpritePackerPaddingPower: 1\n  m_EtcTextureCompressorBehavior: 1\n  m_EtcTextureFastCompressor: 1\n  m_EtcTextureNormalCompressor: 2\n  m_EtcTextureBestCompressor: 4\n  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp\n  m_ProjectGenerationRootNamespace: \n  m_UserGeneratedProjectSuffix: \n  m_CollabEditorSettings:\n    inProgressEnabled: 1\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: 10753, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10770, 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  - {fileID: 16003, 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  serializedVersion: 2\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: 0.001\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: 0.001\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: 0.001\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: 0.001\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 shift\n    altNegativeButton: \n    altPositiveButton: mouse 2\n    gravity: 1000\n    dead: 0.001\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: 0.001\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: 0.1\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: 0.1\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: 0.1\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: 0.19\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: 0.19\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: 0.001\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: 0.001\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: 0.001\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: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: return\n    altNegativeButton: \n    altPositiveButton: joystick button 0\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Submit\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: enter\n    altNegativeButton: \n    altPositiveButton: space\n    gravity: 1000\n    dead: 0.001\n    sensitivity: 1000\n    snap: 0\n    invert: 0\n    type: 0\n    axis: 0\n    joyNum: 0\n  - serializedVersion: 3\n    m_Name: Cancel\n    descriptiveName: \n    descriptiveNegativeName: \n    negativeButton: \n    positiveButton: escape\n    altNegativeButton: \n    altPositiveButton: joystick button 1\n    gravity: 1000\n    dead: 0.001\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\nNavMeshProjectSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  areas:\n  - name: Walkable\n    cost: 1\n  - name: Not Walkable\n    cost: 1\n  - name: Jump\n    cost: 2\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  - name: \n    cost: 1\n  m_LastAgentTypeID: -887442657\n  m_Settings:\n  - serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.75\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_SettingNames:\n  - Humanoid\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: 18\n  productGUID: e590f4194983d91488f5455d4392bb46\n  AndroidProfiler: 0\n  AndroidFilterTouchesWhenObscured: 0\n  AndroidEnableSustainedPerformanceMode: 0\n  defaultScreenOrientation: 0\n  targetDevice: 2\n  useOnDemandResources: 0\n  accelerometerFrequency: 60\n  companyName: DefaultCompany\n  productName: TF Classify Unity\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  displayResolutionDialog: 1\n  iosUseCustomAppBackgroundBehavior: 0\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  androidUseSwappy: 0\n  androidBlitType: 0\n  defaultIsNativeResolution: 1\n  macRetinaSupport: 1\n  runInBackground: 0\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  useFlipModelSwapchain: 1\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: 1\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: 0\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      lowOverheadMode: 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.synmcj.test\n    iPhone: com.synmcj.test\n  buildNumber: {}\n  AndroidBundleVersionCode: 1\n  AndroidMinSdkVersion: 16\n  AndroidTargetSdkVersion: 0\n  AndroidPreferredInstallLocation: 1\n  aotOptions: \n  stripEngineCode: 1\n  iPhoneStrippingLevel: 0\n  iPhoneScriptCallOptimization: 0\n  ForceInternetPermission: 0\n  ForceSDCardPermission: 0\n  CreateWallpaper: 0\n  APKExpansionFiles: 0\n  keepLoadedShadersAlive: 0\n  StripUnusedMeshComponents: 0\n  VertexChannelCompressionMask: 214\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: 0\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  AndroidValidateAppBundleSize: 1\n  AndroidAppBundleSizeToValidate: 150\n  resolutionDialogBanner: {fileID: 0}\n  m_BuildTargetIcons: []\n  m_BuildTargetPlatformIcons:\n  - m_BuildTarget: Android\n    m_Icons:\n    - m_Textures: []\n      m_Width: 432\n      m_Height: 432\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 324\n      m_Height: 324\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 216\n      m_Height: 216\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 162\n      m_Height: 162\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 108\n      m_Height: 108\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 81\n      m_Height: 81\n      m_Kind: 2\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 1\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 192\n      m_Height: 192\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 144\n      m_Height: 144\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 96\n      m_Height: 96\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 72\n      m_Height: 72\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 48\n      m_Height: 48\n      m_Kind: 0\n      m_SubKind: \n    - m_Textures: []\n      m_Width: 36\n      m_Height: 36\n      m_Kind: 0\n      m_SubKind: \n  m_BuildTargetBatching: []\n  m_BuildTargetGraphicsAPIs: []\n  m_BuildTargetVRSettings: []\n  openGLRequireES31: 0\n  openGLRequireES31AEP: 0\n  openGLRequireES32: 0\n  vuforiaEnabled: 0\n  m_TemplateCustomTags: {}\n  mobileMTRendering:\n    Android: 1\n    iPhone: 1\n    tvOS: 1\n  m_BuildTargetGroupLightmapEncodingQuality: []\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: 11\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: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ\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: 0\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  blurSplashScreenBackground: 1\n  spritePackerPolicy: \n  webGLMemorySize: 256\n  webGLExceptionSupport: 1\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: 0\n  webGLThreadsSupport: 0\n  webGLWasmStreaming: 0\n  scriptingDefineSymbols:\n    1: ENABLE_TENSORFLOW\n    4: ENABLE_TENSORFLOW\n    7: ENABLE_TENSORFLOW\n    14: ENABLE_TENSORFLOW\n  platformArchitecture: {}\n  scriptingBackend: {}\n  il2cppCompilerConfiguration: {}\n  managedStrippingLevel: {}\n  incrementalIl2cppBuild: {}\n  allowUnsafeCode: 0\n  additionalIl2CppArgs: \n  scriptingRuntimeVersion: 1\n  gcIncremental: 0\n  gcWBarrierValidation: 0\n  apiCompatibilityLevelPerPlatform: {}\n  m_RenderingPath: 1\n  m_MobileRenderingPath: 1\n  metroPackageName: PhoneCameraTest\n  metroPackageVersion: \n  metroCertificatePath: \n  metroCertificatePassword: \n  metroCertificateSubject: \n  metroCertificateIssuer: \n  metroCertificateNotAfter: 0000000000000000\n  metroApplicationDescription: PhoneCameraTest\n  wsaImages: {}\n  metroTileShortName: \n  metroTileShowName: 0\n  metroMediumTileShowName: 0\n  metroLargeTileShowName: 0\n  metroWideTileShowName: 0\n  metroSupportStreamingInstall: 0\n  metroLastRequiredScene: 0\n  metroDefaultTileSize: 1\n  metroTileForegroundText: 2\n  metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}\n  metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,\n    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    UNet: 1\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: 3\n  cloudProjectId: a067103d-36ae-436e-ab87-8dbbd98bec32\n  framebufferDepthMemorylessMode: 0\n  projectName: PhoneCameraTest\n  organizationId: synmcj\n  cloudEnabled: 0\n  enableNativePlatformBackendsForNewInputSystem: 0\n  disableOldInputManagerSupport: 0\n  legacyClampBlendShapeWeights: 1\n"
  },
  {
    "path": "ProjectSettings/ProjectVersion.txt",
    "content": "m_EditorVersion: 2019.2.0f1\nm_EditorVersionWithRevision: 2019.2.0f1 (20c1667945cf)\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: 5\n  m_QualitySettings:\n  - serializedVersion: 2\n    name: Very Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 15\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\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    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Low\n    pixelLightCount: 0\n    shadows: 0\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\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    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Medium\n    pixelLightCount: 1\n    shadows: 1\n    shadowResolution: 0\n    shadowProjection: 1\n    shadowCascades: 1\n    shadowDistance: 20\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 0\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: 1\n    lodBias: 0.7\n    maximumLODLevel: 0\n    particleRaycastBudget: 64\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 4\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: High\n    pixelLightCount: 2\n    shadows: 2\n    shadowResolution: 1\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 40\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\n    blendWeights: 2\n    textureQuality: 0\n    anisotropicTextures: 1\n    antiAliasing: 0\n    softParticles: 0\n    softVegetation: 1\n    realtimeReflectionProbes: 1\n    billboardsFaceCameraPosition: 1\n    vSyncCount: 1\n    lodBias: 1\n    maximumLODLevel: 0\n    particleRaycastBudget: 256\n    asyncUploadTimeSlice: 2\n    asyncUploadBufferSize: 4\n    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Very High\n    pixelLightCount: 3\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 2\n    shadowDistance: 70\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\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    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  - serializedVersion: 2\n    name: Ultra\n    pixelLightCount: 4\n    shadows: 2\n    shadowResolution: 2\n    shadowProjection: 1\n    shadowCascades: 4\n    shadowDistance: 150\n    shadowNearPlaneOffset: 3\n    shadowCascade2Split: 0.33333334\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\n    shadowmaskMode: 1\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    resolutionScalingFixedDPIFactor: 1\n    excludedTargetPlatforms: []\n  m_PerPlatformDefaultQuality:\n    Android: 2\n    Nintendo 3DS: 5\n    Nintendo Switch: 5\n    PS4: 5\n    PSM: 5\n    PSP2: 2\n    Standalone: 5\n    Tizen: 2\n    WebGL: 3\n    WiiU: 5\n    Windows Store Apps: 5\n    XboxOne: 5\n    iPhone: 2\n    tvOS: 2\n"
  },
  {
    "path": "ProjectSettings/TagManager.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!78 &1\nTagManager:\n  serializedVersion: 2\n  tags: []\n  layers:\n  - Default\n  - TransparentFX\n  - Ignore Raycast\n  - \n  - Water\n  - UI\n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  - \n  m_SortingLayers:\n  - name: Default\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: 0.02\n  Maximum Allowed Timestep: 0.33333334\n  m_TimeScale: 1\n  Maximum Particle Timestep: 0.03\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: 1\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/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": "Note: TensorFlowSharp plugin has been deprecated, instead Unity uses its new Barracuda inference engine. [See the new example](https://github.com/Syn-McJ/TFClassify-Unity-Barracuda). It's better in terms of performance and ease of use for certain models.\n\n# What\n\nThis is an example of using model trained with TensorFlow in Unity application for image classification and object detection. It's a quick port of [TF Classify and TF Detect examples](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android) from TensorFlow repo, using [TensorFlowSharp](https://github.com/migueldeicaza/TensorFlowSharp) for gluing it all together.\n\nClassify results:\n\n![](https://raw.githubusercontent.com/Syn-McJ/TFClassify-Unity/master/SampleImages/classify1.jpg)\n![](https://raw.githubusercontent.com/Syn-McJ/TFClassify-Unity/master/SampleImages/classify2.jpg)\n![](https://raw.githubusercontent.com/Syn-McJ/TFClassify-Unity/master/SampleImages/classify3.jpg)\n\nDetect results:\n\n![](https://raw.githubusercontent.com/Syn-McJ/TFClassify-Unity/master/SampleImages/detect1.png)\n![](https://raw.githubusercontent.com/Syn-McJ/TFClassify-Unity/master/SampleImages/detect2.png)\n![](https://raw.githubusercontent.com/Syn-McJ/TFClassify-Unity/master/SampleImages/detect3.png)\n\nNote that performance is worse than in TensorFlow Android example and at this moment I'm not quite sure how to improve that. Hopefully this will be enough to get you started.\n\n# How\n\nYou'll need Unity 2019.2 or above and [Unity TensorFlow Plugin](https://s3.amazonaws.com/unity-ml-agents/0.3/TFSharpPlugin.unitypackage).\n\n- Open the project in Unity.\n- Install TensorFlow plugin.\n- Open Classify or Detect scene in Assets folder.\n- In `Edit -> Player Settings -> Other settings` add `ENABLE_TENSORFLOW` to the `Scripting Define Symbols` for the target platform.\n- In `Other settings` also set `Scripting runtime version` to `.NET 4.6 Equivalent`.\n- Build and run.\n\n**Important**: in new versions of Unity you might see error \"Multiple assemblies with equivalent identity have been imported...\". In that case, you'll need to go into 'Assets/ML-Agents/Plugins/Android' folder and manually delete all .dll files that are specified in the error message.\n\n\"Unloading broken assembly...\" error can be safely ignored.\n\nFor iOS, folow this additional instructions: [ios-additional-instructions-for-building](https://github.com/llSourcell/Unity_ML_Agents/blob/master/docs/Using-TensorFlow-Sharp-in-Unity-(Experimental).md#ios-additional-instructions-for-building)\n\nMore info can be found [here](https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Using-TensorFlow-Sharp-in-Unity.md).\n\n\n***To use your own model:***\n\n- Make sure your model trained with TensorFlow 1.4 if you use 0.3 version of the Unity plugin that I linked above. You can also try [0.4 version](https://s3.amazonaws.com/unity-ml-agents/0.4/TFSharpPlugin.unitypackage) that uses TensorFlow 1.7.1.\n- Change extension of your model from .pb to .bytes.\n- Put your model and labels in Resources.\n- Set Model file and Labels file to your model and labels in main camera object of the scene you chose.\n- If neccesary, change `classifyImageSize`, `IMAGE_MEAN`, `IMAGE_STD`, `INPUT_NAME` and `OUTPUT_NAME` to suit your model.\n\n# Notes\n\nI'm not a Unity expert, so if you found any problems with this example feel free to open an issue.\n"
  }
]